Own project
Vemco Store
Full-stack e-commerce with storefront, admin dashboard, and POS on one shared database — Stripe checkout, revenue analytics, 249 tests, and WCAG AA accessibility.
Most e-commerce demos stop at a storefront. A real shop also has a counter — staff selling in person, managers watching revenue, orders and stock that must stay consistent across all of it. Vemco Store builds that whole picture: storefront, admin dashboard, and point-of-sale on one shared database.
Solution & architecture
The application is Next.js 14 with TypeScript and Tailwind CSS, with Supabase (PostgreSQL) as the data layer and Stripe handling checkout. Because the storefront, admin, and POS share one database, a sale is a sale — whether it happened online or at the counter, it lands in the same orders, stock, and analytics.
Beyond the core flow, the store supports booking and installment payments, and the admin dashboard includes revenue analytics with CSV export so the numbers can leave the app when they need to.
Key technical decisions
- One database, three surfaces. Splitting storefront, admin, and POS into separate systems is where inventory drift comes from. A single schema serving all three keeps state consistent by construction.
- Stripe for payments. Checkout, and the payment states around it, are delegated to Stripe rather than reimplemented.
- Tested and accessible, on purpose. The project ships with 249 automated tests and meets WCAG AA — quality gates most side projects skip, treated here as part of the build.
Outcome
A working, deployed store — live demo and full source are linked above. It is the most complete public example of how I structure a production-shaped product: data model first, one source of truth, tests and accessibility as defaults.