Six systems in production.
Four built for clients and running today; two public, with source. Every entry carries a ledger of facts you can check, dated. Where the code is private there is a source-free case study instead.

Timber Logistic
Jun 2026 – presentTwo-sided timber marketplace with a sealed-bid auction, card payments and Romanian e-invoicing
A buyer posts one request for a cart of wood products; every supplier who covers that county gets one business hour to submit a sealed offer; the buyer picks a winner and pays a 3% commission by card. The auction logic lives in Postgres, and since September 2026 the commission runs through live Netopia card payments, with invoices issued through Oblio into Romania's e-Factura system.
- Live since
- June 2026
- Payments
- live since Sep 2026 · Netopia cards · Oblio e-Factura invoicing
- Supplier checks
- ANAF company registry · SUMAL transport documents · manual approval
- Database
- 20 tables · 45 migrations · RLS on every table

FoodBoard
2026 (from-scratch rebuild)Multi-tenant digital menu builder with AI menu import - design a menu, publish it as a link or QR code
A restaurant designs its menu in a dashboard - categories, dishes, prices, allergens, translations - and diners open it from a QR code on the table. Tenant isolation is enforced in Postgres, not in the client, and there is a shared demo account so nobody has to sign up to look around. Owners can also import an existing menu from a PDF or a photo: Gemini drafts it, the owner checks it, and an eval measures how often the draft is right. I first worked on a menu builder like this as an intern at Spark Solutions in 2022-2023; that product is theirs, and this is a 2026 rebuild written from scratch.
- Tenancy
- anon revoked from every table · one audited SECURITY DEFINER read path

Kinetiq
2026 (rebuild of 2023 client work)Industrial condition-monitoring dashboard - a public rebuild of a factory-floor product
The operator's window into a plant: which machines need attention and when. The production version read live telemetry from InfluxDB and published operator commands back over MQTT. This is the same interface rebuilt with deterministic simulated data, four runtime dependencies and no UI framework.
- Runtime dependencies
- 4 - vue, pinia, vue-router, vue-i18n
- UI primitives
- 14, hand-built, no component or chart library

Clinica Naturell
Feb 2024 – presentA wellness clinic's site, booking and CMS - shipped without a backend, at €0 a month
Twenty-nine routes covering a service catalogue, online booking, a self-editable Markdown blog, client accounts and campaign landing pages - with Firestore security rules doing the work a server usually does. I also ran the clinic's paid social, so product decisions were made with acquisition cost in view.
- Routes
- 29 - 20 public, 9 admin
- Backend
- none · 9 Firestore collections · rules carry authorization
- Search
- 8 routes prerendered · per-page JSON-LD · sitemap from the same data module

SocioHR Play
2025 – 2026Assessment and recruitment platform for a university department - five quiz engines, one data model
Visitors at admissions fairs take a quiz on their phone in under two minutes and get a designed result they can keep. Staff author the quizzes, swap the landing copy per event, and export anonymised responses for actual research. The hard constraints were legal, not visual: the audience includes minors.
- Quiz engines
- 5 - assessment, personality, multiple intelligences, crossword, questionnaire
- Data model
- 20 routes · 9 collections · 3 roles
- Minors' data
- responses stored unlinked from contact details, enforced in rules

AVR BPPS-6
May – Aug 2026Trilingual memorial and content platform, with an admin panel elderly volunteers actually use
The association commemorates Moldovan police officers who died in the 1992 Dniester conflict. They had decades of photographs, press and footage, and no way to publish any of it. The readers are the public; the editors are veterans who have never used a CMS - every authoring flow had to survive that.
- Languages
- Romanian, Russian, English - full content parity
- Media live
- 161 items - 124 photos, 37 videos
- Image payload
- −93% via a sharp + ffmpeg pipeline into Cloudinary