Project
JMK Furniture
A furniture storefront with product discovery, an admin panel, and a secure backend for managing the catalog.
Features
01Storefront
Category browsing follows the hierarchy through resolvers, with banners, sort controls, and filter popovers along the way
Product pages carry hover-swap galleries, a lightbox, specs, a quantity stepper, and related products
The buy box includes EMI info and ordering assisted over WhatsApp
Site search, plus a recently-viewed strip that persists locally
CMS-driven markdown pages, a contact page with FAQ and map, and newsletter signup
The homepage assembles itself from server-defined sections
Per-page SEO metadata, with scroll, reveal, and parallax motion giving the pages some life
02Admin panel
A dashboard of counts, top-viewed products, latest inquiries, and audit entries
The product editor pairs an image picker with a Cloudinary-backed media library
A homepage builder with section forms, plus a general page editor
Users, roles, and permissions split into superadmin, editor, and support
An audit log, an inquiry inbox, and settings
Editing happens in place, guarded by an unsaved-changes bar
03Accounts & security
Passwords hash with Argon2, and verification stays timing balanced so account existence is never readable from the response
Repeated login failures trigger lockout, and refresh cookies rotate, so a reused cookie revokes every session it touched
Password resets go out by email with one-time tokens that live 30 minutes
04API & infrastructure
A modular Express API runs over MongoDB, its Mongoose models carrying product fields in English and Bengali
Media lives in Cloudinary, with a local-disk fallback for when it cannot
Facet filters, related products worked out from views, and view counters deduped hourly
The deploy is Dockerised: MongoDB, API, and nginx web containers, with database backup scripts beside them
