How shanedesal/pfs-platform works
PFS is a full-stack marketplace: customers browse products, authenticate, maintain a cart and address book, and place and track orders; administrators manage catalog, orders, and customer accounts. The Next.js storefront calls an Express API whose controllers use Prisma/PostgreSQL. Authentication, email verification, image storage, and admin operations are distinct supporting capabilities. The README documents the main user flows; several controller and route files were not sampled, so uncertain wiring is omitted or shown as unverified.
Main entry points: index.ts Express API · db.ts Prisma Client · auth.controller.ts Auth Controller · api.ts API Client
Components 27
Storefront
- Store Pages
web/src/app - Storefront UI
web/src/components/storefront - API Client
web/src/lib/api.ts
Identity
- Auth Pages
web/src/app/login/page.tsx - Auth State
web/src/lib/auth-context.tsx - Auth Routes
server/src/routes/auth.ts - Auth Controller
server/src/controllers/auth.controller.ts - Auth Guard
server/src/middleware/auth.middleware.ts - JWT and Tokens
server/src/utils/jwt.ts - Verification Email
server/src/services/email/verification-emails.ts
Commerce
- Cart Controller
server/src/controllers/cart.controller.ts - Order Controller
server/src/controllers/orders.controller.ts - Address Controller
server/src/controllers/addresses.controller.ts - Order Formatting
server/src/utils/order-formatting.ts
Admin Back Office
- Admin Pages
web/src/app/admin - Admin API Clients
web/src/lib/admin - Product Admin
server/src/controllers/admin-products.controller.ts - Category Admin
server/src/controllers/admin-categories.controller.ts - Order Admin
server/src/controllers/admin-orders.controller.ts - Customer Admin
server/src/controllers/admin-customers.controller.ts
API and Integrations
- Express API
server/src/index.ts - Prisma Client
server/src/config/db.ts - PostgreSQL
- Supabase Storage
- Brevo Email
Other components
- Customer
- Administrator
Connections 34
- Customer → Store Pages: browses
- Store Pages → Storefront UI: renders
- Store Pages → API Client: requests data
- Customer → Auth Pages: signs in
- Auth Pages → API Client: submits credentials
- Auth Pages → Auth State: applies user
- API Client → Express API: calls API
- Express API → Auth Routes: mounts routes
server/src/index.ts - Auth Routes → Auth Controller: dispatches
server/src/routes/auth.ts - Auth Routes → Auth Guard: guards requests
server/src/routes/auth.ts - Auth Controller → Prisma Client: reads and writes
server/src/controllers/auth.controller.ts - Auth Controller → JWT and Tokens: issues tokens
server/src/controllers/auth.controller.ts - Auth Guard → JWT and Tokens: verifies tokens
server/src/middleware/auth.middleware.ts - Auth Controller → Verification Email: sends verification
server/src/controllers/auth.controller.ts - Verification Email → Brevo Email: delivers email
- Customer → Storefront UI: manages cart
- Storefront UI → API Client: requests commerce
- Express API → Cart Controller: routes cart
- Express API → Order Controller: routes orders
- Express API → Address Controller: routes addresses
- Order Controller → Prisma Client: creates and reads orders
server/src/controllers/orders.controller.ts - Order Controller → Order Formatting: formats orders
server/src/controllers/orders.controller.ts - Address Controller → Prisma Client: manages addresses
server/src/controllers/addresses.controller.ts - Prisma Client → PostgreSQL: persists records
server/src/config/db.ts - Administrator → Admin Pages: manages marketplace
- Admin Pages → Admin API Clients: requests admin data
- Admin API Clients → Express API: calls API
- Express API → Product Admin: routes product admin
- Express API → Category Admin: routes category admin
- Express API → Order Admin: routes order admin
- Express API → Customer Admin: routes customer admin
- Product Admin → Prisma Client: manages products
server/src/controllers/admin-products.controller.ts - Product Admin → Supabase Storage: uploads images
server/src/controllers/admin-products.controller.ts - Customer Admin → Prisma Client: manages customers
server/src/controllers/admin-customers.controller.ts