How rainel0421/e-commerce-backend works
This is an Express e-commerce API: clients browse products and categories, manage carts, authenticate, and place orders; checkout and payment confirmation complete the purchase. Admin routes provide product, category, and order management, while uploads and Stripe webhooks support commerce operations. The sampled code confirms routing through controllers, services, and repositories for products, categories, and authentication, plus the order webhook path. Cart, upload, and several service/repository internals are represented from the tree and route wiring, but their exact internal calls were not sampled.
Main entry points: app.js Express app · database.js Prisma database · product.service.js Product service · webhook.controller.js Webhook controller
Components 30
API routing
- Express app
src/app.js - Auth routes
src/routes/auth.routes.js - Product routes
src/routes/product.routes.js - Category routes
src/routes/category.routes.js - Cart routes
src/routes/cart.routes.js - Order routes
src/routes/order.routes.js - Upload routes
src/routes/upload.routes.js - Webhook routes
src/routes/webhook.routes.js
Catalog and cart
- Product controller
src/controllers/product.controller.js - Product service
src/services/product.service.js - Category controller
src/controllers/category.controller.js - Category service
src/services/category.service.js - Cart controller
src/controllers/cart.controller.js - Cart service
src/services/cart.service.js
Identity and uploads
- Auth controller
src/controllers/auth.controller.js - Auth service
src/services/auth.service.js - Upload controller
src/controllers/upload.controller.js - Upload service
src/services/upload.service.js
Orders and payments
- Order controller
src/controllers/order.controller.js - Order service
src/services/order.service.js - Payment service
src/services/payment.service.js - Webhook controller
src/controllers/webhook.controller.js
Persistence
- User repository
src/repositories/user.repository.js - Product repository
src/repositories/product.repository.js - Category repository
src/repositories/category.repository.js - Order repository
src/repositories/order.repository.js - Prisma database
src/config/database.js
Other components
- Storefront client
- Stripe
- Cloudinary
Connections 32
- Storefront client → Express app: sends requests
- Express app → Auth routes: mounts routes
- Express app → Product routes: mounts routes
- Express app → Category routes: mounts routes
- Express app → Cart routes: mounts routes
- Express app → Order routes: mounts routes
- Express app → Upload routes: mounts routes
- Express app → Webhook routes: mounts routes
- Auth routes → Auth controller: dispatches
- Auth controller → Auth service: calls
- Auth service → User repository: queries
- Product routes → Product controller: dispatches
- Product controller → Product service: calls
- Product service → Product repository: queries
- Product service → Category repository: checks category
- Category routes → Category controller: dispatches
- Category controller → Category service: calls
- Cart routes → Cart controller: dispatches
- Cart controller → Cart service: calls
- Order routes → Order controller: dispatches
- Order controller → Order service: calls
- Webhook routes → Webhook controller: dispatches
- Webhook controller → Payment service: verifies event
- Webhook controller → Order service: marks paid
- Payment service → Stripe: verifies signature
- Upload routes → Upload controller: dispatches
- Upload controller → Upload service: calls
- Upload service → Cloudinary: uploads media
- Product repository → Prisma database: reads and writes
- Category repository → Prisma database: reads and writes
- User repository → Prisma database: reads and writes
- Order repository → Prisma database: reads and writes