Fragraze
A real, live storefront for a Pakistani perfume brand (fragraze.pk) — built from scratch across three apps, with PKR pricing, local shipping and payment methods, OTP signup, and a full admin back office.
The problem Fragraze solves.
A perfume seller needs more than a nice product page. Customers need real accounts and a checkout that actually works, and the business needs to manage products, orders, and content without calling a developer every time — and all of it has to fit how people actually shop in that market.
Fragraze is built for a real Pakistani perfume brand — PKR pricing, local carriers like TCS and Leopard, and local payment options like JazzCash, Easypaisa, and cash on delivery, baked in from day one. Not a generic demo store with a currency symbol swapped out.
It's three separate apps — a Next.js storefront, a Node/Express API that owns the database, and a React/Vite admin dashboard — so the storefront and the internal tools can each be redesigned or redeployed without touching the other.
End-to-end ownership.
I built Fragraze end-to-end — storefront, API, and admin dashboard — including OTP verification, order snapshotting so history stays accurate even after products change, a custom media library, and the SEO/blog system driving organic traffic.
Three-app architecture: Next.js storefront, Express API, React/Vite admin dashboard
OTP-verified signup (6-digit code, 10-minute expiry) via real transactional email
Order snapshotting — customer and product details frozen at time of sale for accurate history
Custom Cloudinary-backed media library with a visual picker shared across products and blog
SEO-first product and blog pages with live meta-title/description character counters
Tools of choice.
What makes Fragraze different.
Localized Storefront
PKR pricing, category browsing (attars, testers, wax-based), and local shipping/payment methods built in from day one.
OTP-Verified Accounts
Signup requires a real 6-digit email code before an account is usable, keeping the customer base genuine.
Order Snapshotting
Every order freezes the customer and product details at the moment of sale, so history stays accurate even after later edits.
Custom Media Library
Upload once, reuse anywhere — a Cloudinary-backed picker shared between product photos and blog content.
Admin Dashboard & Analytics
Live stats, order trends, and best-sellers on load, with full product, SKU, and stock management.
SEO-Driven Blog
A content section built to rank organically, with auto-generated slugs and live meta-description counters.
What it achieved.
“Freezing the order details at checkout instead of just linking to the live product record is an easy thing to skip — and it's exactly what breaks order history the first time someone edits a product price.”
Like what you see?
Check out more of my work, or just reach out if you want to talk about a project.

