Candy Beauty
Personal project
Overview
Candy Beauty is a full-stack cosmetics e-commerce website for a beauty brand selling skincare, makeup, haircare, and body care products. The platform includes a polished public storefront, product browsing, product detail pages, authentication, cart and checkout flows, Stripe test payments, a customer account area, and a protected admin dashboard for managing products, categories, orders, and basic analytics. The catalog is localized for Cameroon with FCFA pricing, Cameroon-focused beauty products, and sold-out product handling.
Problem
Small beauty brands need a professional online sales channel that feels premium to customers while still giving the owner practical tools for managing products, orders, and inventory without needing a separate back-office system.
Solution
Built a responsive full-stack e-commerce platform with a soft premium beauty aesthetic, authentication-gated cart and checkout behavior, Stripe checkout, PostgreSQL persistence, seeded Cameroon-focused product data, and a protected admin dashboard for day-to-day store management.
Architecture
Next.js App Router application using server-rendered pages and API routes, Prisma as the database layer, PostgreSQL on Neon for production storage, NextAuth.js for authentication and role-based access, Zustand for client-side cart state, Zod and React Hook Form for validation, and Stripe Checkout for payments. Vercel handles production deployment from the GitHub main branch.
Technology stack
Screenshots





Key features
- Responsive public storefront with homepage, product listing, product detail pages, about, and contact pages
- FCFA pricing and Cameroon-focused beauty product catalog
- Authentication-gated cart and checkout flow
- Stripe Checkout integration in test mode
- Customer account dashboard with profile editing, logout, order history, and account deletion
- Protected admin dashboard for products, categories, orders, analytics, and image upload
- Sold-out product handling and admin inventory management
- Seeded products, categories, reviews, and sample orders for local and production testing
Challenges
- Adapting the database setup from local SQLite development to PostgreSQL on Neon for production deployment
- Designing separate customer and admin account experiences while keeping authentication and role checks clear
- Preventing unauthenticated users from creating cart and checkout actions without blocking public product browsing
Lessons learned
- E-commerce projects need server-side authorization checks in addition to client-side UI guards
- Deployment readiness depends on database configuration, seed scripts, and environment variables being documented early
- Localizing products, prices, and currency makes the shopping experience feel much more realistic for the target market
Future improvements
- Add production image storage with UploadThing or Cloudinary
- Add Stripe webhooks for stronger payment/order synchronization
- Add product reviews from real authenticated customers
- Add email confirmations for orders and account actions