Back to portfolio
Selected Work

Arii Shop

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.

Arii Shop homepage
Client
Arii Shop
Industry
E-commerce / retail — apparel & clothing
Platform
Web — responsive storefront + separate admin panel
Languages
TypeScript, PHP, SQL

Tech Stack

Next.jsReactTypeScriptTailwind CSSLaravelPHPFilamentMySQLRedisStripePayPalDockerColimaDigitalOcean DropletsDigitalOcean SpacesCDNServerless FunctionsGitHub ActionsMailgunTwilioDNS & Domain ManagementNginx

The Project

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

What I Built

Storefront

Product catalog with size and color variant selection, per-color image galleries, collections, cart, dual-gateway checkout, order confirmation, and a blog/journal.

Custom Admin Panel

Full CRUD for products, collections, orders, coupons, customers, and posts, with role-based access separating admin from support staff.

CMS-Driven Homepage

13+ homepage sections independently editable, reorderable, and toggleable from the admin, with zero-deploy content publishing.

Dual-Gateway Payments

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.

Real-Time Cache Invalidation

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.

Dockerized CI/CD

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

Screenshots

Product management — variants, per-color image sets, and independent size/color stock, all editable by non-technical staff.
Product management — variants, per-color image sets, and independent size/color stock, all editable by non-technical staff.
Order management — every order with its payment state, driven by webhook confirmation rather than the client redirect alone.
Order management — every order with its payment state, driven by webhook confirmation rather than the client redirect alone.
Customer records — order history and account detail in one view.
Customer records — order history and account detail in one view.
Transactional email — shipping notifications with carrier and tracking information sent from the admin.
Transactional email — shipping notifications with carrier and tracking information sent from the admin.

Results

Business Impact

No Developer Needed for Content

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.

Payments That Survive Failure

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.

No Platform Fees or Lock-In

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.