A decoupled storefront and API that processes real transactions through Stripe and PayPal with webhook-verified confirmation, ships through a Dockerized CI/CD pipeline, and hands the retailer full control of the homepage without a developer.

Tech Stack
A clothing retailer needed a storefront that felt custom and on-brand rather than templated — but with the practical reality that most day-to-day changes (new promos, reordering bestsellers, swapping a hero banner, running a limited-time countdown) would be made by non-developers. Off-the-shelf platforms solve the "admin can edit things" problem but trade away design control, checkout ownership, and charge recurring fees. Hand-building everything as static content solves design control but turns every content change into a developer task and a deploy.
The system splits into two independently deployable halves sharing one MySQL database and communicating over a versioned JSON API: a Next.js storefront for the public-facing, SEO- and performance-sensitive side, and a Laravel + Filament backend for data, payments, and admin. Filament was chosen over a hand-rolled admin because it gave a mature, secure CRUD and RBAC foundation out of the box, so implementation time went into actual e-commerce logic — variant and stock modeling, checkout, CMS structure — instead of rebuilding admin table, form, and auth plumbing.
Nearly every homepage section — hero slider, marquee, limited-time offer, bestsellers, brand statement, split promo, family brands, reviews, latest news, featured collection, FAQ, newsletter — is backed by its own database table and admin resource, with drag-to-reorder curation for merchandising lists instead of hardcoded flags. Payments were integrated directly against Stripe's PaymentIntent API and PayPal's REST API rather than a subscription-oriented package, since these are one-time purchases. A tag-based Next.js cache with a Laravel-triggered revalidation webhook means admin edits go live within seconds instead of waiting on natural cache expiry.
Deliverables
Product catalog with size and color variant selection, per-color image galleries, collections, cart, dual-gateway checkout, order confirmation, and a blog/journal.
Full CRUD for products, collections, orders, coupons, customers, and posts, with role-based access separating admin from support staff.
13+ homepage sections independently editable, reorderable, and toggleable from the admin, with zero-deploy content publishing.
Stripe PaymentIntents and PayPal REST checkout with webhook-verified order confirmation — not reliant on the client redirect alone — automatic expiry of stale pending orders, and shipping notifications with carrier tracking.
Tag-based ISR caching on the frontend with a webhook Laravel fires on every relevant admin save, so content changes appear live without a rebuild.
GitHub Actions pipeline that builds and pushes versioned images, deploys over SSH with health-checked service dependencies, and runs migrations automatically on every push to main.
In Production




Results
Homepage changes previously required a code change and a deploy. All 13+ sections, merchandising order, and promotional content are now editable entirely from the admin — content ships in seconds instead of a dev cycle.
Order confirmation is driven by Stripe and PayPal webhooks rather than only the client-side redirect, closing a real bug class where a customer could pay successfully but see nothing happen.
Unlike a hosted platform, there's no per-transaction fee and no theme or app-ecosystem lock-in — the retailer owns the codebase, the data, and the infrastructure outright.