Mobile app
For Sale By Owner — property listings mobile app
A polished cross-platform mobile app for a UK property listings business, with photo uploads, map-based search and a back-office for the team to moderate listings.
Outcome: Shipped on iOS and Android in under 12 weeks. Live and supported.
Technology used
React Native (Expo)Django REST FrameworkPostgreSQLS3-compatible storage
Marketing site
Paws 4 Thought Dogs — small business website
A polished, SEO-friendly website for a local dog-walking business, with booking enquiries, gallery and Google Business integration.
Outcome: First-page Google ranking for local search within 6 weeks.
Technology used
Static siteCustom CSSCaddy + DockerHetzner VPS
Mobile app
Paws 4 Thought Dogs — mobile app
A two-sided iOS app for the same Berkshire dog-daycare business. Owners get a daily photo and video feed of their dogs, book boarding, manage dog profiles and message staff directly. Staff get a dashboard for daily assignments, request approvals, transport tracking and compatibility notes — all synced to a Django backend with offline-first caching for use in the field.
Outcome: Live on the App Store. iPhone, iPad, Mac (M1+) and Apple Vision supported.
Technology used
FlutterDjango REST FrameworkPostgreSQLPush notificationsOffline cache (Hive)
Mobile app
Mojo and Co — dog grooming business app
A bespoke iOS and Android app for a one-groomer dog grooming business. Staff get the whole business in one place: client and dog records, a searchable dog list, a time-axis diary, groom phase timers, photos, invoicing and an equipment register. Clients get their own details and bookings, can request an appointment and fill in the intake form online instead of on paper.
Outcome: Live on iOS and Android, with a backend that deploys itself on every push. Paper client cards, dog cards and intake forms retired in favour of one app the groomer and her clients share.
Technology used
FlutterDjango REST FrameworkPostgreSQLFace ID / fingerprint unlockDocker + Caddy on Hetzner
Web app · AI
Global News Map — live map of wars and conflicts in the news
A public 3D globe tracking armed conflicts worldwide, refreshed every 30 minutes. A self-hosted AI model turns reporting from established news outlets into conflicts, parties, developments and attacks, and every item is checked against the article it cites before it goes on the map.
Outcome: Live at globalnewsmap.org, updating itself every 30 minutes with no one at the keyboard, on an open-source codebase.
Technology used
Python + uvicornSelf-hosted LLM (gpt-oss-120b)MapLibre GL globeSQLiteDocker + Caddy on Hetzner