• Residence: Bosnia & Herzegovina
  • City: Bijeljina
  • Age: 25
DOWNLOAD CV
Back to Projects

Shop Platform - Full-Stack E-Commerce System

2025

Shop Platform

Full-Stack · NestJS · Next.js · React

Overview

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.

Key Features

Storefront & Cart

Full-featured customer shop with product browsing, search, cart, wishlist, and guest or authenticated checkout. Google OAuth login supported alongside email/password.

Stripe Payments

Card payments via Stripe Elements with webhook-driven order confirmation. Coupons and discount codes apply at checkout. Payment status syncs automatically via Stripe events.

Inventory & Suppliers

Stock tracking with low-stock alerts. Full supplier management with purchase orders that automatically update inventory on receipt. Brands and categories with hierarchical structure.

Invoices & Delivery Notes

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.

Analytics & CRM

Admin dashboard with sales analytics, revenue charts, and order volume tracking. Customer management module with order history, contact details, and review moderation.

CMS & Email

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.

Architecture

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.

Admin Panel

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.

Customer Storefront

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.

Technologies

Backend (API)

NestJS TypeScript Node.js MySQL TypeORM Redis BullMQ Stripe Puppeteer JWT Passport Handlebars Nodemailer Swagger

Admin Panel

React TypeScript Radix UI TanStack Query React Hook Form Zod Axios

Customer Storefront

Next.js TypeScript Stripe Elements TanStack Query Google OAuth React Hook Form Zod Axios i18n