Backend (API)
Admin Panel
Customer Storefront
2025
Full-Stack · NestJS · Next.js · React
Shop Platform is a production-grade e-commerce system built from scratch as three separate applications: a NestJS REST API, a React admin panel, and a Next.js customer storefront. Each application is independently deployable and communicates exclusively through the typed REST API.
The system covers the complete retail lifecycle, from product catalogue and customer acquisition through to order fulfillment, supplier management, and financial document generation. Stripe is integrated end-to-end for card payments and webhooks drive order status updates automatically.
Full-featured customer shop with product browsing, search, cart, wishlist, and guest or authenticated checkout. Google OAuth login supported alongside email/password.
Card payments via Stripe Elements with webhook-driven order confirmation. Coupons and discount codes apply at checkout. Payment status syncs automatically via Stripe events.
Stock tracking with low-stock alerts. Full supplier management with purchase orders that automatically update inventory on receipt. Brands and categories with hierarchical structure.
PDF invoice and delivery note generation via Puppeteer. Documents are rendered server-side from Handlebars templates and served for download directly from the admin panel.
Admin dashboard with sales analytics, revenue charts, and order volume tracking. Customer management module with order history, contact details, and review moderation.
Built-in CMS for managing static pages. Transactional emails (order confirmation, shipping updates) are queued via BullMQ and rendered with Handlebars templates sent through Nodemailer.
The project is structured as a monorepo with three independent applications. The NestJS API is the single source of truth, it follows a strict module-per-domain architecture where each domain (products, orders, cart, payments, reviews, suppliers, etc.) is a self-contained module with its own controller, service, and TypeORM repository.
Heavy operations, PDF generation, email delivery, are offloaded to background queues via BullMQ and Redis so the request cycle remains fast. Puppeteer renders invoices and delivery notes server-side from HTML templates. The API is fully documented with Swagger and secured with JWT + Passport with role-based guards distinguishing customers from admin users.
The admin panel is built with React and TypeScript, using Radix UI primitives for accessible components and TanStack Query for all server-state management. Forms use React Hook Form with Zod validation.
It covers the full admin surface: product and variant management with image uploads, order processing and status updates, inventory control, supplier and purchase-order workflows, coupon management, customer CRM, review moderation, static page CMS, and a sales analytics dashboard, all in a single authenticated SPA.
The customer-facing shop is built with Next.js and TypeScript, supporting server-side rendering for SEO-friendly product and category pages. TanStack Query handles client-side data fetching and caching. Authentication supports both email/password and Google OAuth via the @react-oauth/google library.
Checkout is powered by Stripe React Elements with a secure payment intent flow. Customers can track orders, manage their wishlist, leave product reviews, and apply coupon codes. The storefront is internationalised with dictionary-based i18n supporting multiple locales.
Backend (API)
Admin Panel
Customer Storefront