How thk2004/glassesshopexpressapp works
This is an Express storefront for browsing eyewear, managing accounts, and submitting reviews and orders. The main workflow runs from a visitor’s request through mounted routes and controllers; catalog requests use product services to filter or retrieve data before rendering product pages. Account routes support registration, login, profiles, and Google sign-in, while catalog endpoints handle reviews, orders, and stock updates. The app connects to MongoDB for persistence and calls ZaloPay for payment initiation. Relationships are limited to calls and wiring shown in excerpts or the source index; unsampled behavior is not inferred.
Main entry points: app.js Express app · userController.js Account handlers · productController.js Catalog handlers · productService.js Catalog services
Components 22
Web application
- Express app
app.js - Home routes
component/home/homeRoute.js - Home pages
component/home/homeController.js - Home views
views/index.hbs
Catalog and orders
- Catalog routes
component/product/productRoute.js - Catalog handlers
component/product/productController.js - Catalog services
component/product/productService.js - Eyewear listing
views/glasses/glasses.hbs - Product detail
views/products/product.hbs
Accounts and identity
- Account routes
component/user/userRoute.js - Account handlers
component/user/userController.js - Account services
component/user/userService.js - Authentication guard
middleware/auth.js - Passport strategies
config/passport/index.js - Account pages
views/register/register.hbs
Persistence and payments
- Review records
models/reviewModel.js - Order records
models/orderModel.js - Product records
models/productModel.js - User records
models/userModel.js - MongoDB
- ZaloPay API
Other components
- Visitor
Connections 25
- Visitor → Express app: sends request
- Express app → Home routes: mounts at root
app.js - Express app → Catalog routes: mounts at /glasses
app.js - Express app → Account routes: mounts at /user
app.js - Express app → Passport strategies: configures
app.js - Express app → MongoDB: connects to
app.js - Home routes → Home pages: dispatches to
component/home/homeRoute.js - Home pages → Home views: renders
component/home/homeController.js - Catalog routes → Catalog handlers: dispatches to
component/product/productRoute.js - Catalog handlers → Catalog services: calls
component/product/productController.js - Catalog handlers → Eyewear listing: renders
component/product/productController.js - Catalog handlers → Product detail: renders
component/product/productController.js - Catalog services → Product records: queries and updates
component/product/productService.js - Catalog services → Review records: reads and writes
component/product/productService.js - Catalog services → Order records: saves orders
component/product/productService.js - Account routes → Account handlers: dispatches to
component/user/userRoute.js - Account routes → Authentication guard: protects routes
component/user/userRoute.js - Account handlers → Account services: calls
component/user/userController.js - Account handlers → User records: queries profile
component/user/userController.js - Account handlers → Passport strategies: authenticates with
component/user/userController.js - Account handlers → Account pages: renders
component/user/userController.js - Account handlers → ZaloPay API: initiates payment
component/user/userController.js - Account services → User records: reads and writes
component/user/userService.js - Passport strategies → User records: looks up users
config/passport/index.js - Passport strategies → Account services: creates Google users
config/passport/index.js