Updated: Expanded into a full technical article with TypeScript config samples. Read the Technical Deep Dive →
fahad.ibrahim
← All Case Studies
Case Study · v1.0 · MIT

RollON — production e-commerce with config-driven branding and 87% test coverage

RollON e-commerce storefront showing product catalog with cart and checkout flow

A reusable storefront template built for real transactions, not portfolio demos. Cart, checkout, admin dashboard, and hardened security defaults — ready to clone, rebrand, and deploy.

React 19 TypeScript Tailwind CSS 4 Zustand Playwright Vercel
117
Tests Passing
87%
Coverage
11
Playwright E2E
CI
Green
🎬 Demo Video

A 2-3 minute walkthrough of RollON's storefront, admin dashboard, and config-driven architecture. Video recording pending — script ready in demo-scripts/rollon-demo-script.md

▶️
Demo Video Coming Soon
2-3 min storefront + admin dashboard walkthrough
⚡ Key Decisions

Config-driven branding: One file controls entire business identity — rebrand in under an hour. Zustand state: Minimal, serializable cart/auth/UI state with no prop drilling. WCAG 2.1 AA from day one: Keyboard-first, focus management, color contrast enforced in CI. CSP-hardened: Security headers + env validation, no hardcoded secrets.

01 The challenge

E-commerce portfolios are usually either toy apps or monolithic messes. I wanted a middle path: a real transactional storefront that's also clean enough to rebrand and ship for a client in days.

The hard parts weren't the UI — they were the seams: cart persistence across reloads, variant selection without state explosion, checkout validation that doesn't block legitimate users, and an admin dashboard that's actually useful instead of a CRUD toy.

02 Config-driven architecture

One file controls the entire business identity. Change the config, and the storefront updates everywhere — no component hunting, no magic strings.

Why this matters

Most e-commerce templates hardcode business logic. RollON's config-driven approach means a developer can rebrand the entire storefront in under an hour without touching UI components.

03 Testing strategy

117 tests across two layers: fast unit tests for logic, slower E2E tests for critical flows. Both enforced in CI.

SignalResult
Unit tests106 (Vitest)
E2E tests11 (Playwright)
Coverage87%
CIGitHub Actions green
AccessibilityWCAG 2.1 AA
CSPHardened headers

Unit tests cover cart logic, checkout validation, and product filtering. Playwright covers the full user journey: browse → cart → checkout → confirmation.

04 State management

Zustand keeps cart, auth, and UI state minimal and serializable. No prop drilling, no context soup.

05 Accessibility as a feature

WCAG 2.1 AA isn't a checklist — it's how we build. Keyboard navigation, ARIA labels, focus management, and color contrast are enforced from the first component.

Honest scope

Automated a11y tests run in CI, but manual screen-reader testing with real users remains on the roadmap. Automated tooling catches ~70% of issues; the rest need human verification.

06 Architecture & deployment

React 19 + TypeScript
Tailwind CSS 4
React Router
→
Zustand Stores
Cart / Auth / UI
Config Layer
→
Vercel Deploy
GitHub Actions CI
CSP + Env Validation

RollON architecture: frontend → state → deploy

07 What I'd do differently

Every project teaches. Here's what I'd change if I started tomorrow:

Shop Live → View on GitHub All Case Studies