Work

Things I built, and still look after.

A short list rather than a long one. Most of it is running today and I am the person who gets told when it stops; anything marked as a concept is a proposal I built myself, not client work.


Products & client systems

The till screen: a searchable product grid on the left, the current order, discounts and total on the right.
The till — sample products and figures, not live data.
The back-office dashboard: sales and stock summary tiles above a table of stock on hand at each branch.
Back office — sample products and figures, not live data.

SKC Bakery Supplies — stock & sales system

Live

Design, build, hosting & support · 2025 — ongoing

A point-of-sale and inventory system running across five branches. Sales, stock movements, production, deliveries and purchasing all sit in one place, so head office can see what every branch holds without ringing round. Rebuilt from a single-machine desktop program into a browser-based system the whole business shares.

  • Point of sale
  • Inventory
  • Multi-branch
  • Python
  • Postgres
Concept home page: a full-bleed cove photograph behind the headline "A cove that keeps its own hours", with a banner across the top marking it as an unofficial concept.
Concept only — not the resort’s live site.
Concept golf section: the headline "Par 71, and it plays harder than the card" above an aerial photograph of the course beside a stack of course-fact cards.
Concept only — figures taken from public material.

Dakak Beachside Golf & Resort — concept redesign

Proposed concept

Self-directed concept — design & build · 2026

An unsolicited concept. Nobody commissioned it and nobody has approved it: I liked the property, thought the booking journey deserved better, and built a proposal to show what I mean. The site walks a guest through one day at the resort — waking up, playing the course, eating, getting there — instead of listing facilities. Every photograph and price on it is taken from public material and should be treated as illustrative. It is not affiliated with or endorsed by the resort, and it is not the live site.

  • Hand-written HTML
  • Concept
  • Hospitality
  • Cloudflare Pages
Concept home page: mist lying over the paddocks behind the wordmark "SFJ Stables" and the line "A private countryside escape like no other", with a banner across the top marking it as an unofficial concept.
Concept only — not the stables’ live site.
Concept section on a black ground: the headline "Home of the Philippines’ only Friesian Stallion" beside a photograph of the black stallion, above a strip of four photographs of the herd.
Concept only — copy and photography are the stables’ own.

SFJ Stables — concept redesign

Proposed concept

Self-directed concept — design & build · 2026

Another unsolicited concept, and this one has a reason beyond taste: the business has no website at all. A Facebook page with 14,000 followers is the entire front door — every rate, photograph and enquiry runs through it — and its reviews tab is currently carrying posts impersonating Meta takedown notices, the kind written to take a page off its owner. So the concept builds a front door they control, and keeps the thing they already do best: a stables that opens by telling you plainly what it is not. Every word and photograph on it is theirs, taken from public material and illustrative only. Not affiliated with or endorsed by SFJ Stables, and not their live site.

  • Hand-written HTML
  • Concept
  • Hospitality
  • Cloudflare Pages

montano.uk

Live

Design & build · 2025

This site. A static build with no database and no page-load JavaScript, served from a container on my own hardware and published through a Cloudflare tunnel. It exists partly as a working demonstration: a small site should load instantly and cost almost nothing to run.

  • Astro
  • Docker
  • Nginx
  • Cloudflare

Mood tracker

Design & build · 2024

A small self-hosted journalling app, built because every option on the app store was either advertising-funded or a subscription. Python front to back, no accounts, data stays on the machine it runs on.

  • Python
  • NiceGUI
  • Self-hosted

Infrastructure

The server everything above is tested against. It began as a spare laptop during two weeks of sick leave and turned into the place I learn things before I run them for anyone else.

Photo library dashboard: recently added grid, hot and cold storage tiers, and machine-learning job status.
Mockup — sample figures.

Immich photo library

Running

A self-hosted replacement for Google Photos with machine-learning tagging and face recognition. Storage is tiered — a fast disk for new uploads, a larger slow disk for the archive — with files moved between them automatically in the background.

  • Immich
  • Postgres
  • Docker
Media server operations view: active streams with transcode status, GPU encoder load, library size and storage use.
Mockup — sample figures.

Home media server

Running

A containerised media stack — Jellyfin for streaming, the *arr suite for library management, hardware-accelerated transcoding so nothing has to be re-encoded in software on the fly.

  • Docker
  • Jellyfin
  • NVENC
DNS filtering dashboard: query and block counts, most blocked domains, a 24-hour query chart and per-device totals.
Mockup — sample figures.

Network-wide ad blocking

Running

DNS-level filtering for every device on the network rather than just the browser, which catches the advertising and tracking inside mobile apps that a browser extension can never reach.

  • AdGuard Home
  • DNS
  • Tailscale
Monitoring dashboard: 30-day uptime history per service, recent incidents, host resource use and open alerts.
Mockup — sample figures.

Monitoring & uptime

Running

Beszel for CPU, memory and disk, Uptime Kuma for reachability. The point is boring: I want to hear that something has fallen over from a dashboard, not from the person trying to use it.

  • Beszel
  • Uptime Kuma

Something in your business that works like this should?

Start a conversation