Project

Shoppers

A single-vendor storefront with authentication, an admin interface, and a shopping flow built around mock catalog data.

Features

01Storefront

  • A home page assembled from shared sections: hero slider, category carousels, and a browse-all-categories view

  • Product listings with sorting, a price-range filter, availability filters, and pagination

  • Product pages carrying description, reviews, and a customer questions section

  • A cart and wishlist that flow through checkout with contact details, shipping, and the payment method selection

  • Order tracking that walks the timeline from order received to delivered

  • A dark and light theme toggle, plus a mobile navigation that actually works on small screens

02Authentication

  • Registration and sign-in with zod guarding the forms on the client and express-validator guarding the request on the API, returning 409 for duplicate emails

  • Access tokens expire fast on purpose: 30 minutes by default, 3 hours with remember-me, while the refresh token rides in an httpOnly cookie (2 days, or 7 with remember-me)

  • When a request comes back 403, the client quietly calls /refresh, stores the fresh access token, and replays the original request, with the same pattern mirrored in the axios stack

  • Routes are role-gated against stored roles (Admin, Editor, User), so the admin area and the user dashboard never blur together

  • Logout clears the session, and deleting an account removes the user and wipes the session cookie in the same motion

03Account & API

  • Profile management with avatar upload: multer catches the file, sharp processes it, and Cloudinary stores it

  • Every request passes through helmet headers, rate limiting, a CORS allowlist of known origins, sanitisation against mongo and XSS injection, and hpp against parameter pollution

  • Access and error logs from morgan land in real files, so debugging never depends on console output

04Admin panel

  • An admin side with its own dashboard, products table, orders, transactions, and reviews screens, behind the role guard and the same auth flow

  • Add-product forms and admin account settings, held together by the Mantine layout kit

05Data & operations

  • Product, order, and review data ship as local mock collections in the storefront, so the full shopping journey runs without standing up a catalog API

  • The API ships in Docker with compose, PM2 process scripts, and autocannon in the dev kit for quick load checks

Technologies

React 18ViteMantine 5Redux ToolkitRTK QueryAxiosZodTailwind CSSExpressMongooseMongoDBJWTSharpCloudinaryDockerPM2Vercel