Problem
A handmade gown business was running five services — gown rental, costume rental, clothes for occasion, catering, and event organizing — with no website and no way to track the people asking about them. Inquiries arrived scattered across messages and got lost, and photos of the work lived wherever they happened to be posted. Anything the owner wanted to change on a site would have meant going back to a developer.
Approach
I built a single Nuxt 4 repo that serves both the public site and a custom admin dashboard, running on one Node process with SQLite and uploads on disk, so it deploys to a cheap VPS with no external services. Every piece of content is owner-editable: site name, logo, favicon, services and their packages, the product showcase, gallery, reviews, and FAQs. Inquiry forms sit on each product and service page and feed an admin inbox with status, notes, and CSV export. Catalog services get product pages; catering and events get package cards instead, driven by a hasCatalog flag rather than separate code paths. The server logic lives in pure modules that take the database as a parameter, which let me test it without booting a server. Drag-to-reorder proved awkward on touch, so I replaced it with up/down buttons that work the same everywhere. Design is ivory-and-gold editorial with a script wordmark, built mobile-first and verified at phone and desktop widths with headless-browser screenshots alongside the unit and end-to-end tests.
Result
The owner runs the whole site from one dashboard — publishing a gown, swapping the logo, or answering an inquiry without touching code — and every lead lands in one place instead of a scattered inbox. The site ships seeded with sample content so it’s demonstrable from the first run.
