


Peach Cat Club Shop is a full-stack e-commerce web application I built for my own clothing brand, Peach Cat Club — a streetwear brand rooted in internet culture. The platform handles everything from product discovery to order management and was designed to be production-ready from day one.
Built end-to-end as both a real business tool and a technical showcase. The core engineering challenge was architecting a reliable, multi-user system that prevents overselling and cross-account data contamination — while keeping the UX frictionless and the admin panel powerful enough for real inventory management.
Pages & Features
Storefront & Product Browsing
Responsive storefront with category filtering, individual product detail pages showing images, sizes, and live stock availability. Every view is optimized for conversion — from grid layout to the product detail CTA.
Cart & Checkout System
Add to cart with real-time stock validation that prevents overselling. Full checkout flow includes a shipping form and triggers an automatic order confirmation email via SMTP Gmail after successful submission.
Order Tracking — My Orders
Customers can view their full order history and track status progression: Pending → Processing → Shipped → Delivered. Each order entry shows items, quantities, and current status in a clean timeline view.
Admin Dashboard
Full CRUD for products, variants (size/color), images, categories, and homepage banner carousel. Admins can view all customer orders and update their status. All /admin routes are locked behind a custom role-based middleware.
Session-Isolated Cart System
Per-user localStorage key-binding ensures cart data never bleeds between different logged-in accounts. Switching users immediately resolves to the correct isolated cart state without any manual cleanup.
Tech & Architecture
Backend Layer
Laravel 11 (PHP)
Main server orchestrator handling HTTP routing, ORM operations via Eloquent, business logic, and middleware enforcement. All server-side logic lives in Laravel — no separate REST API needed.
Laravel Breeze
Session-based authentication system. Login, registration, and password flow handled out of the box, with role-based access control layered on top via custom middleware.
Frontend Layer
React + TypeScript via Inertia.js
Inertia.js bridges Laravel and React — delivering a SPA-like experience without a separate API. React handles UI rendering and state; Inertia handles page transitions and prop passing from the server.
Tailwind CSS + Framer Motion
Utility-first styling for rapid, consistent UI. Framer Motion adds polished page transitions and micro-animations throughout the storefront experience.
Database Layer
PostgreSQL
8-table normalized relational schema: users, products, product_variants, product_images, categories, orders, order_items, and banners. Designed to handle concurrent writes without race conditions on stock fields.
Integrations
SMTP Gmail (Transactional Email)
Automated order confirmation emails sent immediately after checkout. Configured via Laravel's mail system using Gmail SMTP — no third-party email SaaS required.
Vite (Asset Bundling)
Fast development HMR and optimized production asset bundling. Works natively with the Laravel + Inertia + React stack.
Design Highlights
SPA-like experience via Inertia.js — no page reloads, instant navigation between storefront pages
Real-time stock validation on every cart action — prevents overselling at the database level
Per-user localStorage key-binding for cart isolation — zero cross-account data bleeding
Role-based middleware — all /admin routes enforce strict access separation from the server side
Framer Motion animations — polished micro-interactions and page transitions throughout the storefront
Challenges & Solutions
Cart data bleeding between accounts
Implemented per-user localStorage key-binding so each account resolves to its own isolated cart namespace, regardless of login state
Preventing overselling on concurrent adds
Stock validation is enforced at the database query level on every cart mutation, not just at checkout — ensuring inventory accuracy even under concurrent load
Admin access control without overcomplicating auth
Built a lightweight custom EnsureAdminRole middleware that checks a role flag on the user model and redirects non-admins before any controller logic runs
“The biggest engineering achievement was building a full production e-commerce system as a solo developer — not a tutorial clone, but a real platform for a real brand. The hardest part was designing the cart isolation system and ensuring stock validation was atomic enough to prevent race conditions between concurrent users.”