A full-stack e-commerce application built with Next.js (App Router) on the frontend and Node.js/Express with TypeScript and Prisma on the backend. This project is currently a work in progress.
Frontend
- Next.js (App Router)
- TypeScript
- Client-side state management (store)
- Custom hooks
Backend
- Node.js + Express
- TypeScript
- Prisma ORM
- RESTful API architecture
- Authentication — user signup/login flow
- Product Catalog — product listings with category filtering
- Cart — add/update/remove items
- Checkout — order placement flow
- Orders — order history and tracking
- Address Management — manage shipping addresses
- Coupons — discount code support
- Payments — payment processing integration
- Reviews — product reviews and ratings
- Email Notifications — transactional email service
The backend follows a clean, modular structure separating concerns across layers:
backend/
├── prisma/ # Database schema (Prisma)
├── src/
│ ├── config/ # App configuration
│ ├── controllers/ # Request handling & business logic
│ ├── middleware/ # Auth, validation, error handling
│ ├── routes/ # API endpoint definitions
│ ├── services/ # Reusable business logic (email, payment)
│ ├── app.ts
│ └── server.ts
Each domain (auth, cart, orders, products, categories, coupons, payments, reviews, addresses) has a dedicated route and controller pair, keeping routing and logic cleanly separated.
The frontend uses Next.js App Router with route groups for auth, and dedicated route segments for cart, checkout, orders, and products, alongside shared components, hooks, and a central store for state management.
frontend/
├── app/
├── src/
│ ├── app/
│ │ ├── (auth)/
│ │ ├── cart/
│ │ ├── checkout/
│ │ ├── orders/
│ │ ├── products/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── lib/
│ │ ├── store/
│ │ └── types/
This project is under active development. Core modules for authentication, products, cart, orders, and payments are being built out module by module.
This is a personal learning/portfolio project built to practice full-stack architecture, clean separation of concerns, and type-safe development across the stack using TypeScript, Prisma, and Next.js.