Overview
ShopMate is a self-directed demo project that shows how I build full-stack apps: a typed Next.js frontend over a clean REST API, with an admin panel for catalog management. It is deliberately scoped to what a small shop actually needs — catalog, cart, admin — with no bloat beyond that.
The problem it solves
Main features
- Product catalog with search, filtering and pagination
- Cart and checkout flow with server-side validation
- Role-based admin panel for catalog management
- JWT authentication with clean session handling
- Typed REST endpoints with a consistent error envelope
Challenges & solutions
Keeping cart state consistent between client and server.
The server is the single source of truth for the cart; the client renders optimistically and reconciles after each mutation, so a refresh never loses or doubles items.
Keeping a product-image-heavy grid fast.
next/image with responsive sizes and lazy loading below the fold, plus pagination so first paint stays small.
Improvements & future plans
- Payment provider integration for the checkout step
- Order confirmation emails
- Integration tests running in CI