How sbedoyar/budget-sdf works
Budget SDF is a web inventory-management system for a shop: an owner signs in, manages categories and products, records stock movements, and reviews alerts and reports. The React pages call resource services through a shared Axios client; the Spring API applies business logic and persists inventory data. The README documents the major capabilities and layered backend, while sampled excerpts show report-page requests and selected controller-to-service contracts. Implementations not sampled are represented by their exact tree paths; their internal calls are omitted where evidence is unavailable.
Main entry points: App.jsx Route selection · ReportsPage.jsx Reports · CategoriesPage.jsx Categories · ProductsPage.jsx Products
Components 27
Web application
- Route selection
frontend/src/App.jsx - Dashboard
frontend/src/pages/DashboardPage.jsx - Categories
frontend/src/pages/CategoriesPage.jsx - Products
frontend/src/pages/ProductsPage.jsx - Movements
frontend/src/pages/MovementsPage.jsx - API client
frontend/src/api/apiClient.js
Authentication
- Login page
frontend/src/pages/LoginPage.jsx - Session context
frontend/src/contexts/AuthProvider.jsx - Auth service
frontend/src/services/authService.js - Auth API
backend/src/main/java/com/budgetsdf/user/controller/AuthController.java - User service
backend/src/main/java/com/budgetsdf/user/service/UserService.java - Google token check
backend/src/main/java/com/budgetsdf/common/security/GoogleTokenService.java
Inventory operations
- Category API
backend/src/main/java/com/budgetsdf/category/controller/CategoryController.java - Category service
backend/src/main/java/com/budgetsdf/category/service/CategoryService.java - Product API
backend/src/main/java/com/budgetsdf/product/controller/ProductController.java - Product service
backend/src/main/java/com/budgetsdf/product/service/ProductService.java - Movement API
backend/src/main/java/com/budgetsdf/movement/controller/MovementController.java - Movement service
backend/src/main/java/com/budgetsdf/movement/service/MovementService.java
Alerts and reporting
- Stock alerts
frontend/src/pages/AlertsPage.jsx - Alert API
backend/src/main/java/com/budgetsdf/alert/controller/AlertController.java - Alert service
backend/src/main/java/com/budgetsdf/alert/service/AlertService.java - Reports
frontend/src/pages/ReportsPage.jsx - Report service
backend/src/main/java/com/budgetsdf/report/service/ReportService.java - Excel export
frontend/src/utils/reportExcelExporter.js
Backend persistence
- MySQL inventory
Other components
- Shop owner
- Google identity
Connections 30
- Shop owner → Route selection: uses
README.md - Route selection → Login page: routes to
frontend/src/App.jsx - Route selection → Dashboard: routes to
frontend/src/App.jsx - Route selection → Categories: routes to
frontend/src/App.jsx - Route selection → Products: routes to
frontend/src/App.jsx - Route selection → Movements: routes to
frontend/src/App.jsx - Route selection → Stock alerts: routes to
frontend/src/App.jsx - Route selection → Reports: routes to
frontend/src/App.jsx - Login page → Session context: signs in
- Session context → Auth service: invokes
frontend/src/contexts/AuthProvider.jsx - Auth service → API client: posts login
frontend/src/services/authService.js - API client → Auth API: HTTP requests
README.md - Auth API → User service: delegates to
backend/src/main/java/com/budgetsdf/user/controller/AuthController.java - User service → Google token check: verifies Google
- Google token check → Google identity: validates token
backend/src/main/java/com/budgetsdf/common/security/GoogleTokenService.java - Categories → Category API: API operations
README.md - Products → Product API: API operations
README.md - Movements → Movement API: API operations
README.md - Stock alerts → Alert API: fetches alerts
README.md - Reports → Report service: requests reports
frontend/src/pages/ReportsPage.jsx - Reports → Excel export: exports report
frontend/src/pages/ReportsPage.jsx - Category API → Category service: delegates to
backend/src/main/java/com/budgetsdf/category/controller/CategoryController.java - Product API → Product service: delegates to
backend/src/main/java/com/budgetsdf/product/controller/ProductController.java - Movement API → Movement service: delegates to
backend/src/main/java/com/budgetsdf/movement/controller/MovementController.java - Alert API → Alert service: delegates to
backend/src/main/java/com/budgetsdf/alert/controller/AlertController.java - Category service → MySQL inventory: persists categories
- Product service → MySQL inventory: persists products
- Movement service → MySQL inventory: persists movements
- Report service → MySQL inventory: reads inventory
- Alert service → MySQL inventory: reads stock