/portfolio

Selected work

Small businesses, whole systems.

Built end to end — public site, customer app, admin panel, servers.

Public pages are shot from the live sites. Admin panels and member apps run on generated mock data — no real customer data appears here.

01 Chronofever

Chronofever

Vintage watch dealership · catalogue & editorial

A bilingual catalogue where every piece is one of one. The admin panel handles the whole collection — ordering, photography, availability, prices and the Italian translations — plus traffic statistics.

  • Go (stdlib net/http)
  • SQLite
  • Svelte + Vite
  • Tailwind
  • bcrypt sessions
  • Caddy
  • Docker Compose
Live The public catalogue — availability, price or “ask for price”, EN/IT switch.
Live A single piece: photography, specifications, enquiry.
Mock data Admin — the collection. Drag to reorder, toggle price visibility, spot missing translations.
Mock data Admin — piece editor: images, specs, and the Italian side by side.
Mock data Admin — traffic: sessions by country, page views over time, most viewed pieces.
Mock data Admin — editorial: rich-text articles with covers, drafts and ordering.

02 AleFit BCN

AleFit BCN

Private training studio, Barcelona · bookings & operations

A one-room studio in the Eixample. Members book the week and spend prepaid class packs; the owner generates each week from templates, tracks occupancy and waiting lists, and gets booking alerts on Telegram.

  • Go API
  • PostgreSQL
  • SvelteKit
  • Tailwind
  • Chart.js
  • Firebase Auth
  • Telegram bot
  • Caddy
  • Docker Compose
Mock data Admin — the week at a glance: occupancy per class, online vs in-person, cancellations, waiting lists, and the switch that publishes this week publicly.
Live The public site — classes, studio, pricing.
Live The public timetable, driven by the week the owner publishes.
Mock data Member app — the full week with live occupancy on every class.
Mock data Member app — a day: what has passed, what is booked, what is left.
Mock data Member app — home: classes taken since joining, and what is booked next.
Mock data Admin — a member: bono balance per type, and every booking they have made.
Mock data Admin — metrics: classes taught, active members, bookings per week, cancellations.
Mock data Admin — the weekly template every real week is generated from.
Mock data Admin — members, sortable and searchable.
Mock data Admin — one class: the roster, attendance and payment state.
Mock data Member app on a phone — where nearly all bookings actually happen.

03 Lineage Boxing

Lineage Boxing

London youth charity · programme delivery & reporting

Non-contact boxing for young people across London — built around what funders need evidenced: attendance, reward milestones, and PAR-Q and WEMWBS wellbeing scores. Coaches self-staff their own timetable.

  • Go backend
  • PostgreSQL
  • SvelteKit ×2
  • Tailwind
  • Tokenised links
  • LLM metrics
  • Telegram bot
  • Caddy
  • Staging env
Live The public site — mission, programmes, volunteering, enquiries.
Mock data Admin — the coach timetable. Every session shows coaches booked against the minimum, so gaps surface early.
Mock data Admin — participants by borough, with attendance and their site and group.
Mock data Admin — the dashboard leads with reward milestones coming due, by site and group.
Mock data Admin — survey responses: PAR-Q and WEMWBS, per participant, coach and site.
Mock data Survey app — a tokenised link arrives with the coach, site and date already filled in.
Mock data Survey app — programme feedback from parents, teachers and participants.
Mock data Admin — enquiries from schools and organisations, read / unread.
Mock data Admin — coaches, their codes, and who is active.
Mock data Admin — programmes: length, reward cadence and what each reward is.
Mock data Admin — delivery sites: centres, schools, universities, corporate.
Mock data Admin — one site and the groups running in it.
Mock data Admin — planning the weeks ahead across every site.
Live Public site — how the programmes are explained to a school.