A full-stack jewelry store with guest and member carts, coupons, cash-on-delivery checkout, order tracking, reviews and an admin panel, built with Next.js, Express, Prisma and MySQL.


Elegance is a working jewelry e-commerce store priced in Pakistani rupees. It started as a static HTML template, and I turned it into a full-stack application with a real catalogue, accounts, cart, Cash on Delivery checkout, order tracking and an admin back office.
The visual design comes from a third-party template. I ported its pages into a Next.js frontend with Redux state, and built everything behind it: the Express REST API, the Prisma data model on MySQL, cart and checkout logic, coupons, order tracking, reviews, email notifications, the admin panel and the Render deployment.
The frontend is Next.js 14 (App Router) with Redux Toolkit and RTK Query, whose cache tags keep cart, order and admin views in sync after changes. Next.js rewrites proxy API and upload requests to the backend, so the browser talks to one origin. The backend is Node.js and Express with Prisma over MySQL on TiDB Cloud. Auth uses JWTs in httpOnly cookies with customer and admin roles and bcrypt-hashed passwords; helmet, express-validator and rate limits on auth, checkout, reviews and contact harden the API. Images go to Cloudinary in production with a local-disk fallback, order emails go out through Nodemailer, and money is stored as integer cents. Both services deploy to Render.
Storefront design based on the static jewelry template by Dennis Nzioki (DNXEMPIRE).