How alirezaojani1385/online-store-fullstack works
Store is a full-stack e-commerce learning project: customers browse products, authenticate, manage a pending-order cart, check out to reserve stock, and review or cancel orders; administrators manage products, orders, and users. The React app routes users to these flows and calls the Spring REST API through a shared client. The backend separates controllers, business services, repositories, and persistence. The README documents SMS-code verification and mock SMS delivery; sampled code confirms registration/reset SMS dispatch and order inventory synchronization. Some frontend page-to-context wiring and security-filter internals were not sampled, so those links are omitted.
Main entry points: client.js API Client · App.jsx Route App · OrderService.java Order Service · AuthController.java Auth Controller
Components 29
Storefront
- Route App
frontend/src/App.jsx - Catalog Pages
frontend/src/pages/Products.jsx - Product Detail
frontend/src/pages/ProductDetail.jsx - Cart State
frontend/src/context/CartContext.jsx - Cart and Checkout
frontend/src/pages/Cart.jsx - Checkout Page
frontend/src/pages/Checkout.jsx - Order History
frontend/src/pages/Orders.jsx - Account Pages
frontend/src/pages/Login.jsx - Admin Pages
frontend/src/pages/admin/AdminLayout.jsx - API Client
frontend/src/api/client.js
Backend API
- Auth Controller
backend/src/main/java/org/store/store/controller/AuthController.java - Product Controller
backend/src/main/java/org/store/store/controller/ProductController.java - Order Controller
backend/src/main/java/org/store/store/controller/OrderController.java - User Controller
backend/src/main/java/org/store/store/controller/UserController.java
Commerce Services
- User Service
backend/src/main/java/org/store/store/service/UserService.java - Product Service
backend/src/main/java/org/store/store/service/ProductService.java - Order Service
backend/src/main/java/org/store/store/service/OrderService.java - Mock SMS
backend/src/main/java/org/store/store/service/SmsService.java
Identity and Security
- JWT Filter
backend/src/main/java/org/store/store/security/JwtAuthenticationFilter.java - Security Config
backend/src/main/java/org/store/store/security/SecurityConfig.java - Rate Limit Filter
backend/src/main/java/org/store/store/security/RateLimitingFilter.java - Rate Limit Service
backend/src/main/java/org/store/store/security/RateLimitingService.java
Persistence
- User Repository
backend/src/main/java/org/store/store/repository/UserRepository.java - Product Repository
backend/src/main/java/org/store/store/repository/ProductRepository.java - Order Repository
backend/src/main/java/org/store/store/repository/OrderRepository.java - Checkout Repository
backend/src/main/java/org/store/store/repository/CheckoutRepository.java
Other components
- Customer
- Administrator
- MySQL Store
Connections 39
- Customer → Route App: uses
- Administrator → Route App: uses
- Route App → Catalog Pages: routes
- Route App → Product Detail: routes
- Route App → Account Pages: routes
- Route App → Cart and Checkout: routes
- Route App → Checkout Page: routes
- Route App → Order History: routes
- Route App → Admin Pages: routes
- Catalog Pages → API Client: requests
- Product Detail → API Client: requests
- Cart and Checkout → API Client: requests
- Checkout Page → API Client: requests
- Order History → API Client: requests
- Account Pages → API Client: requests
- Admin Pages → API Client: requests
- API Client → Auth Controller: HTTP requests
- API Client → Product Controller: HTTP requests
- API Client → Order Controller: HTTP requests
- API Client → User Controller: HTTP requests
- Auth Controller → User Service: registration and reset
- Auth Controller → User Repository: loads account details
- Auth Controller → JWT Filter: issues tokens
- User Service → User Repository: reads and writes
- User Service → Mock SMS: sends codes
- Product Controller → Product Service: dispatches
- Product Service → Product Repository: queries and writes
- Product Service → Order Service: syncs pending carts
- Order Controller → Order Service: dispatches
- Order Service → Order Repository: reads and writes
- Order Service → Product Repository: checks stock
- Order Service → User Repository: checks ownership
- Order Service → Checkout Repository: persists checkout
- JWT Filter → Security Config: configured by
- Rate Limit Filter → Rate Limit Service: resolves limits
- User Repository → MySQL Store: persists
- Product Repository → MySQL Store: persists
- Order Repository → MySQL Store: persists
- Checkout Repository → MySQL Store: persists