create-myexam-app 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +25 -17
- package/package.json +1 -1
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/authController.js +115 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/employeeController.js +97 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/payrollController.js +113 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +35 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Employee.js +52 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Payroll.js +50 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/authRoutes.js +18 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/employeeRoutes.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/payrollRoutes.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +71 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +57 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/authApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/employeeApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/payrollApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +38 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/EmployeePage.jsx +166 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/PayrollPage.jsx +198 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +113 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +106 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/01_Introduction.md +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/02_Problem_Statement.md +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/03_Objectives.md +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/04_Technologies_Used.md +23 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/05_ERD.md +60 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/06_Database_Design.md +71 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/07_System_Architecture.md +28 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/08_API_Documentation.md +43 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/09_Testing.md +43 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/10_Challenges.md +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/11_Conclusion.md +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env.example +4 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +16 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/deliveryController.js +145 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/shipmentController.js +149 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/supplierController.js +56 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +158 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Delivery.js +34 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Shipment.js +34 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Supplier.js +38 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +21 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1540 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +22 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/deliveryRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/shipmentRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/supplierRoutes.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +70 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/.env.example +2 -0
- package/projects/{SCMS/frontend → SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project}/index.html +2 -2
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2944 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +72 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +14 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/deliveryApi.js +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/shipmentApi.js +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/supplierApi.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +21 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +16 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/PageHeader.jsx +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +40 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Dashboard.jsx +62 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Delivery.jsx +212 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Login.jsx +158 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Logout.jsx +24 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Reports.jsx +221 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Shipment.jsx +212 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Supplier.jsx +118 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/styles.css +27 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/productController.js +29 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +52 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/stockTransactionController.js +128 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +115 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/warehouseController.js +29 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Product.js +44 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/StockTransaction.js +33 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Warehouse.js +25 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/productRoutes.js +10 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/stockTransactionRoutes.js +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +18 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/warehouseRoutes.js +10 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +73 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +66 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/productApi.js +11 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/transactionApi.js +21 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +26 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/warehouseApi.js +11 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +39 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ProductPage.jsx +107 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +152 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/TransactionPage.jsx +195 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/WarehousePage.jsx +93 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
- package/projects/SMS-/frontend-project/src/pages/Reports.jsx +179 -23
- package/projects/SRMS/frontend/src/pages/Reports.jsx +170 -58
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/README.md +49 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/.env +3 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/middleware/authMiddleware.js +19 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Customer.js +11 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Product.js +10 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Sale.js +19 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/User.js +8 -0
- package/projects/{SCMS/backend → SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project}/package-lock.json +1609 -2190
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package.json +20 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/authRoutes.js +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/customerRoutes.js +42 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/productRoutes.js +41 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/reportRoutes.js +129 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/saleRoutes.js +107 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/server.js +49 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-DZxY56Bj.js +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-J8MKb3Fq.css +1 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/index.html +13 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/index.html +12 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package-lock.json +2029 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package.json +21 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/App.jsx +77 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/index.css +333 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/main.jsx +10 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Customers.jsx +85 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Dashboard.jsx +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Login.jsx +65 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Products.jsx +91 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Register.jsx +82 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Reports.jsx +138 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Sales.jsx +154 -0
- package/projects/{SCMS/frontend → SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project}/vite.config.js +5 -3
- package/projects/SCMS/backend/.env +0 -5
- package/projects/SCMS/backend/config/db.js +0 -12
- package/projects/SCMS/backend/controllers/authController.js +0 -90
- package/projects/SCMS/backend/controllers/deliveryController.js +0 -79
- package/projects/SCMS/backend/controllers/productController.js +0 -74
- package/projects/SCMS/backend/controllers/reportsController.js +0 -77
- package/projects/SCMS/backend/controllers/shipmentController.js +0 -80
- package/projects/SCMS/backend/controllers/supplierController.js +0 -58
- package/projects/SCMS/backend/middleware/auth.js +0 -32
- package/projects/SCMS/backend/models/User.js +0 -28
- package/projects/SCMS/backend/models/delivery.js +0 -33
- package/projects/SCMS/backend/models/product.js +0 -43
- package/projects/SCMS/backend/models/shipment.js +0 -34
- package/projects/SCMS/backend/models/supplier.js +0 -36
- package/projects/SCMS/backend/package.json +0 -23
- package/projects/SCMS/backend/routes/SupplierRoutes.js +0 -15
- package/projects/SCMS/backend/routes/authRoutes.js +0 -11
- package/projects/SCMS/backend/routes/deliveryRoutes.js +0 -18
- package/projects/SCMS/backend/routes/productRoutes.js +0 -15
- package/projects/SCMS/backend/routes/protectedRoutes.js +0 -10
- package/projects/SCMS/backend/routes/reportsRoutes.js +0 -8
- package/projects/SCMS/backend/routes/shipmentRoutes.js +0 -18
- package/projects/SCMS/backend/server.js +0 -35
- package/projects/SCMS/frontend/README.md +0 -16
- package/projects/SCMS/frontend/eslint.config.js +0 -21
- package/projects/SCMS/frontend/package-lock.json +0 -3053
- package/projects/SCMS/frontend/package.json +0 -31
- package/projects/SCMS/frontend/public/favicon.svg +0 -1
- package/projects/SCMS/frontend/src/App.jsx +0 -35
- package/projects/SCMS/frontend/src/components/DashboardLayout.jsx +0 -103
- package/projects/SCMS/frontend/src/components/ProtectedRoute.jsx +0 -30
- package/projects/SCMS/frontend/src/index.css +0 -114
- package/projects/SCMS/frontend/src/main.jsx +0 -10
- package/projects/SCMS/frontend/src/pages/DashboardHome.jsx +0 -34
- package/projects/SCMS/frontend/src/pages/Delivery.jsx +0 -183
- package/projects/SCMS/frontend/src/pages/Login.jsx +0 -81
- package/projects/SCMS/frontend/src/pages/Profile.jsx +0 -62
- package/projects/SCMS/frontend/src/pages/Register.jsx +0 -110
- package/projects/SCMS/frontend/src/pages/Reports.jsx +0 -94
- package/projects/SCMS/frontend/src/pages/Shipment.jsx +0 -182
- package/projects/SCMS/frontend/src/pages/Supplier.jsx +0 -165
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
const Product = require('../models/Product');
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.getproduct = async (req, res) => {
|
|
5
|
-
try {
|
|
6
|
-
const products = await Product.find().populate('Supplier');
|
|
7
|
-
if (!products) {
|
|
8
|
-
return res.status(404).json({ message: 'Products not found' });
|
|
9
|
-
}
|
|
10
|
-
res.json(products);
|
|
11
|
-
} catch (err) {
|
|
12
|
-
res.status(500).json({ message: err.message });
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
exports.getproductbyid = async (req, res) => {
|
|
17
|
-
try {
|
|
18
|
-
const productById = await Product.findById(req.params.id).populate('Supplier');
|
|
19
|
-
if (!productById) {
|
|
20
|
-
return res.status(404).json({ message: 'Product not found' });
|
|
21
|
-
}
|
|
22
|
-
res.json(productById);
|
|
23
|
-
} catch (err) {
|
|
24
|
-
res.status(500).json({ message: err.message });
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
exports.addproduct = async (req, res) => {
|
|
29
|
-
try {
|
|
30
|
-
const { productCode, productName, category, unitPrice, quantity, expiryDate } = req.body
|
|
31
|
-
const newproduct = await Product.create({
|
|
32
|
-
productCode,
|
|
33
|
-
productName,
|
|
34
|
-
category,
|
|
35
|
-
unitPrice,
|
|
36
|
-
quantity,
|
|
37
|
-
expiryDate,
|
|
38
|
-
Supplier: req.user._id
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
res.status(201).json(newproduct);
|
|
42
|
-
} catch (err) {
|
|
43
|
-
res.status(500).json({ message: err.message });
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
exports.updateproduct = async (req, res) => {
|
|
48
|
-
try {
|
|
49
|
-
const updateproducts = await Product.findByIdAndUpdate(
|
|
50
|
-
req.params.id,
|
|
51
|
-
req.body,
|
|
52
|
-
{ new: true }
|
|
53
|
-
);
|
|
54
|
-
if (!updateproducts) return res.status(404).json({ msg: " product not found" })
|
|
55
|
-
|
|
56
|
-
res.json({ msg: "Products updated Syccessfully", data: updateproducts });
|
|
57
|
-
} catch (err) {
|
|
58
|
-
res.status(500).json({ message: err.message });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
exports.deleteproduct = async (req, res) => {
|
|
63
|
-
try {
|
|
64
|
-
const deleteproduct = await Product.findByIdAndDelete(
|
|
65
|
-
req.params.id
|
|
66
|
-
);
|
|
67
|
-
if (!deleteproduct) {
|
|
68
|
-
return res.status(404).json({ message: 'product not found' });
|
|
69
|
-
}
|
|
70
|
-
res.json({ message: 'Product deleted successfully' });
|
|
71
|
-
} catch (err) {
|
|
72
|
-
res.status(500).json({ message: err.message });
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
const Supplier = require('../models/Supplier');
|
|
2
|
-
const Shipment = require('../models/shipment');
|
|
3
|
-
const Delivery = require('../models/delivery');
|
|
4
|
-
|
|
5
|
-
function getStartDate(days) {
|
|
6
|
-
const date = new Date();
|
|
7
|
-
date.setHours(0, 0, 0, 0);
|
|
8
|
-
date.setDate(date.getDate() - days);
|
|
9
|
-
return date;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
exports.getReportSummary = async (req, res) => {
|
|
13
|
-
try {
|
|
14
|
-
const now = new Date();
|
|
15
|
-
const dailyStart = getStartDate(1);
|
|
16
|
-
const weeklyStart = getStartDate(7);
|
|
17
|
-
const monthlyStart = getStartDate(30);
|
|
18
|
-
|
|
19
|
-
const [
|
|
20
|
-
totalSuppliers,
|
|
21
|
-
dailySuppliers,
|
|
22
|
-
weeklySuppliers,
|
|
23
|
-
monthlySuppliers,
|
|
24
|
-
totalShipments,
|
|
25
|
-
dailyShipments,
|
|
26
|
-
weeklyShipments,
|
|
27
|
-
monthlyShipments,
|
|
28
|
-
totalDeliveries,
|
|
29
|
-
dailyDeliveries,
|
|
30
|
-
weeklyDeliveries,
|
|
31
|
-
monthlyDeliveries,
|
|
32
|
-
recentShipments,
|
|
33
|
-
recentDeliveries,
|
|
34
|
-
] = await Promise.all([
|
|
35
|
-
Supplier.countDocuments(),
|
|
36
|
-
Supplier.countDocuments({ createdAt: { $gte: dailyStart } }),
|
|
37
|
-
Supplier.countDocuments({ createdAt: { $gte: weeklyStart } }),
|
|
38
|
-
Supplier.countDocuments({ createdAt: { $gte: monthlyStart } }),
|
|
39
|
-
Shipment.countDocuments(),
|
|
40
|
-
Shipment.countDocuments({ createdAt: { $gte: dailyStart } }),
|
|
41
|
-
Shipment.countDocuments({ createdAt: { $gte: weeklyStart } }),
|
|
42
|
-
Shipment.countDocuments({ createdAt: { $gte: monthlyStart } }),
|
|
43
|
-
Delivery.countDocuments(),
|
|
44
|
-
Delivery.countDocuments({ createdAt: { $gte: dailyStart } }),
|
|
45
|
-
Delivery.countDocuments({ createdAt: { $gte: weeklyStart } }),
|
|
46
|
-
Delivery.countDocuments({ createdAt: { $gte: monthlyStart } }),
|
|
47
|
-
Shipment.find().sort({ createdAt: -1 }).limit(5).populate('supplier'),
|
|
48
|
-
Delivery.find().sort({ createdAt: -1 }).limit(5).populate({ path: 'shipment', populate: 'supplier' }),
|
|
49
|
-
]);
|
|
50
|
-
|
|
51
|
-
res.status(200).json({
|
|
52
|
-
suppliers: {
|
|
53
|
-
total: totalSuppliers,
|
|
54
|
-
daily: dailySuppliers,
|
|
55
|
-
weekly: weeklySuppliers,
|
|
56
|
-
monthly: monthlySuppliers,
|
|
57
|
-
},
|
|
58
|
-
shipments: {
|
|
59
|
-
total: totalShipments,
|
|
60
|
-
daily: dailyShipments,
|
|
61
|
-
weekly: weeklyShipments,
|
|
62
|
-
monthly: monthlyShipments,
|
|
63
|
-
},
|
|
64
|
-
deliveries: {
|
|
65
|
-
total: totalDeliveries,
|
|
66
|
-
daily: dailyDeliveries,
|
|
67
|
-
weekly: weeklyDeliveries,
|
|
68
|
-
monthly: monthlyDeliveries,
|
|
69
|
-
},
|
|
70
|
-
recentShipments,
|
|
71
|
-
recentDeliveries,
|
|
72
|
-
generatedAt: now,
|
|
73
|
-
});
|
|
74
|
-
} catch (error) {
|
|
75
|
-
res.status(500).json({ msg: 'Failed to generate report', error: error.message });
|
|
76
|
-
}
|
|
77
|
-
};
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const Shipment = require('../models/shipment');
|
|
2
|
-
const Supplier = require('../models/Supplier');
|
|
3
|
-
|
|
4
|
-
exports.addShipment = async (req, res) => {
|
|
5
|
-
try {
|
|
6
|
-
const { shipmentNumber, shipmentDate, shipmentStatus, destination, supplierId } = req.body;
|
|
7
|
-
|
|
8
|
-
if (supplierId) {
|
|
9
|
-
const supplier = await Supplier.findById(supplierId);
|
|
10
|
-
if (!supplier) return res.status(404).json({ msg: 'Supplier not found' });
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const newShipment = await Shipment.create({
|
|
14
|
-
shipmentNumber,
|
|
15
|
-
shipmentDate,
|
|
16
|
-
shipmentStatus,
|
|
17
|
-
destination,
|
|
18
|
-
supplier: supplierId || null,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
res.status(201).json(newShipment);
|
|
22
|
-
} catch (error) {
|
|
23
|
-
res.status(500).json({ msg: 'Failed to add shipment', error: error.message });
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
exports.getShipments = async (req, res) => {
|
|
28
|
-
try {
|
|
29
|
-
const shipments = await Shipment.find().populate('supplier');
|
|
30
|
-
res.status(200).json(shipments);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
res.status(500).json({ msg: 'Failed to fetch shipments', error: error.message });
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
exports.getShipmentById = async (req, res) => {
|
|
37
|
-
try {
|
|
38
|
-
const shipment = await Shipment.findById(req.params.id).populate('supplier');
|
|
39
|
-
if (!shipment) return res.status(404).json({ msg: 'Shipment not found' });
|
|
40
|
-
res.status(200).json(shipment);
|
|
41
|
-
} catch (error) {
|
|
42
|
-
res.status(500).json({ msg: 'Failed to fetch shipment', error: error.message });
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
exports.updateShipment = async (req, res) => {
|
|
47
|
-
try {
|
|
48
|
-
const { supplierId } = req.body;
|
|
49
|
-
|
|
50
|
-
if (supplierId) {
|
|
51
|
-
const supplier = await Supplier.findById(supplierId);
|
|
52
|
-
if (!supplier) return res.status(404).json({ msg: 'Supplier not found' });
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const updatedShipment = await Shipment.findByIdAndUpdate(
|
|
56
|
-
req.params.id,
|
|
57
|
-
{
|
|
58
|
-
...req.body,
|
|
59
|
-
supplier: supplierId || null,
|
|
60
|
-
},
|
|
61
|
-
{ new: true }
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
if (!updatedShipment) return res.status(404).json({ msg: 'Shipment not found' });
|
|
65
|
-
|
|
66
|
-
res.status(200).json(updatedShipment);
|
|
67
|
-
} catch (error) {
|
|
68
|
-
res.status(500).json({ msg: 'Failed to update shipment', error: error.message });
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
exports.deleteShipment = async (req, res) => {
|
|
73
|
-
try {
|
|
74
|
-
const deletedShipment = await Shipment.findByIdAndDelete(req.params.id);
|
|
75
|
-
if (!deletedShipment) return res.status(404).json({ msg: 'Shipment not found' });
|
|
76
|
-
res.status(200).json({ msg: 'Shipment deleted successfully' });
|
|
77
|
-
} catch (error) {
|
|
78
|
-
res.status(500).json({ msg: 'Failed to delete shipment', error: error.message });
|
|
79
|
-
}
|
|
80
|
-
};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
const supplier = require('../models/Supplier');
|
|
2
|
-
|
|
3
|
-
exports.addsupplier = async (req, res) => {
|
|
4
|
-
try {
|
|
5
|
-
const newsupplier = new supplier(req.body);
|
|
6
|
-
await newsupplier.save();
|
|
7
|
-
res.status(200).json({ msg: 'Supplier added successful' });
|
|
8
|
-
} catch (error) {
|
|
9
|
-
res.status(500).json({ msg: 'Failed to add supplier', error: error.message });
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
exports.getsupplierbyid = async (req, res) => {
|
|
14
|
-
try {
|
|
15
|
-
const singlesupplier = await supplier.findById(req.params.id);
|
|
16
|
-
|
|
17
|
-
if (!singlesupplier) return res.status(404).json({ msg: 'Supplier not found' });
|
|
18
|
-
|
|
19
|
-
res.status(200).json(singlesupplier);
|
|
20
|
-
} catch (error) {
|
|
21
|
-
res.status(500).json({ msg: 'failed to fetch', error: error.message });
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
exports.getsupplier = async (req, res) => {
|
|
26
|
-
try {
|
|
27
|
-
const getsupplier = await supplier.find();
|
|
28
|
-
res.status(200).json(getsupplier);
|
|
29
|
-
} catch (error) {
|
|
30
|
-
res.status(500).json({ error: error.message });
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
exports.updatesupplier = async (req, res) => {
|
|
35
|
-
try {
|
|
36
|
-
const updatesupplier = await supplier.findByIdAndUpdate(req.params.id, req.body, {
|
|
37
|
-
new: true,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
if (!updatesupplier) return res.status(404).json({ msg: 'Supplier not found' });
|
|
41
|
-
|
|
42
|
-
res.status(200).json({ msg: 'updated successfully' });
|
|
43
|
-
} catch (error) {
|
|
44
|
-
res.status(500).json({ msg: 'Failed to update', error: error.message });
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
exports.deletesupplier = async (req, res) => {
|
|
49
|
-
try {
|
|
50
|
-
const deletesupplier = await supplier.findByIdAndDelete(req.params.id);
|
|
51
|
-
|
|
52
|
-
if (!deletesupplier) return res.status(404).json({ msg: 'Supplier not found' });
|
|
53
|
-
|
|
54
|
-
res.status(200).json({ msg: 'Deleted successfully' });
|
|
55
|
-
} catch (error) {
|
|
56
|
-
res.status(500).json({ msg: 'Failed to delete', error: error.message });
|
|
57
|
-
}
|
|
58
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// this middleware is helping us to protect our routes so that only authenticated users can access the routes
|
|
2
|
-
//it is checking if the user is authenticated by checking the token in the header(the header is the part of the request that contains the token)
|
|
3
|
-
//if the user is not authenticated, it will return a 401 status code and a message that the user is not authorized
|
|
4
|
-
//if the user is authenticated, it will return the user object
|
|
5
|
-
//and the user object is the user that is authenticated
|
|
6
|
-
|
|
7
|
-
const jwt = require('jsonwebtoken');
|
|
8
|
-
const User = require('../models/User');
|
|
9
|
-
const JWT_SECRET = 'change_this_to_a_long_random_secret';
|
|
10
|
-
|
|
11
|
-
exports.protect = async (req, res, next) => {
|
|
12
|
-
try {
|
|
13
|
-
const header = req.headers.authorization;
|
|
14
|
-
|
|
15
|
-
if (!header || !header.startsWith('Bearer ')) {
|
|
16
|
-
return res.status(401).json({ message: 'Not authorized' });
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const token = header.split(' ')[1];
|
|
20
|
-
const decoded = jwt.verify(token, JWT_SECRET);
|
|
21
|
-
const user = await User.findById(decoded.userId).select('-password');
|
|
22
|
-
|
|
23
|
-
if (!user) {
|
|
24
|
-
return res.status(401).json({ message: 'Not authorized' });
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
req.user = user;
|
|
28
|
-
next();
|
|
29
|
-
} catch (err) {
|
|
30
|
-
return res.status(401).json({ message: 'Not authorized' });
|
|
31
|
-
}
|
|
32
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const userSchema = new mongoose.Schema(
|
|
4
|
-
{
|
|
5
|
-
name: {
|
|
6
|
-
type: String,
|
|
7
|
-
required: true,
|
|
8
|
-
trim: true,
|
|
9
|
-
},
|
|
10
|
-
email: {
|
|
11
|
-
type: String,
|
|
12
|
-
required: true,
|
|
13
|
-
unique: true,
|
|
14
|
-
lowercase: true,
|
|
15
|
-
trim: true,
|
|
16
|
-
},
|
|
17
|
-
password: {
|
|
18
|
-
type: String,
|
|
19
|
-
required: true,
|
|
20
|
-
minlength: 6,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
{ timestamps: true }
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
const User = mongoose.model('User', userSchema);
|
|
27
|
-
|
|
28
|
-
module.exports = User;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const deliverySchema = new mongoose.Schema(
|
|
4
|
-
{
|
|
5
|
-
deliveryCode: {
|
|
6
|
-
type: String,
|
|
7
|
-
required: true,
|
|
8
|
-
trim: true,
|
|
9
|
-
unique: true,
|
|
10
|
-
},
|
|
11
|
-
deliveryDate: {
|
|
12
|
-
type: Date,
|
|
13
|
-
required: true,
|
|
14
|
-
},
|
|
15
|
-
quantityDelivered: {
|
|
16
|
-
type: Number,
|
|
17
|
-
required: true,
|
|
18
|
-
},
|
|
19
|
-
deliveryStatus: {
|
|
20
|
-
type: String,
|
|
21
|
-
required: true,
|
|
22
|
-
trim: true,
|
|
23
|
-
},
|
|
24
|
-
shipment: {
|
|
25
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
26
|
-
ref: 'Shipment',
|
|
27
|
-
required: false,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
{ timestamps: true }
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
module.exports = mongoose.model('Delivery', deliverySchema);
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
const Supplier = require('./Supplier');
|
|
3
|
-
|
|
4
|
-
const productSchema = new mongoose.Schema(
|
|
5
|
-
{
|
|
6
|
-
productCode: {
|
|
7
|
-
type: String,
|
|
8
|
-
required: true,
|
|
9
|
-
trim: true,
|
|
10
|
-
},
|
|
11
|
-
productName: {
|
|
12
|
-
type: String,
|
|
13
|
-
default: '',
|
|
14
|
-
trim: true,
|
|
15
|
-
},
|
|
16
|
-
category: {
|
|
17
|
-
type: String,
|
|
18
|
-
required: true,
|
|
19
|
-
trim: true
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
unitPrice: {
|
|
23
|
-
type: String,
|
|
24
|
-
required: true,
|
|
25
|
-
trim: true
|
|
26
|
-
},
|
|
27
|
-
quantity: {
|
|
28
|
-
type: String,
|
|
29
|
-
required: true,
|
|
30
|
-
trim: true
|
|
31
|
-
},
|
|
32
|
-
expiryDate: {
|
|
33
|
-
type: String
|
|
34
|
-
},
|
|
35
|
-
Supplier: {
|
|
36
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
37
|
-
ref: 'Supplier'
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
module.exports = mongoose.model('Product', productSchema);
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const shipmentSchema = new mongoose.Schema(
|
|
4
|
-
{
|
|
5
|
-
shipmentNumber: {
|
|
6
|
-
type: String,
|
|
7
|
-
required: true,
|
|
8
|
-
trim: true,
|
|
9
|
-
unique: true,
|
|
10
|
-
},
|
|
11
|
-
shipmentDate: {
|
|
12
|
-
type: Date,
|
|
13
|
-
required: true,
|
|
14
|
-
},
|
|
15
|
-
shipmentStatus: {
|
|
16
|
-
type: String,
|
|
17
|
-
required: true,
|
|
18
|
-
trim: true,
|
|
19
|
-
},
|
|
20
|
-
destination: {
|
|
21
|
-
type: String,
|
|
22
|
-
required: true,
|
|
23
|
-
trim: true,
|
|
24
|
-
},
|
|
25
|
-
supplier: {
|
|
26
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
27
|
-
ref: 'Supplier',
|
|
28
|
-
required: false,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
{ timestamps: true }
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
module.exports = mongoose.model('Shipment', shipmentSchema);
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
const mongoose = require('mongoose');
|
|
2
|
-
|
|
3
|
-
const supplierSchema = new mongoose.Schema(
|
|
4
|
-
{
|
|
5
|
-
supplierCode: {
|
|
6
|
-
type: String,
|
|
7
|
-
required: true,
|
|
8
|
-
trim: true,
|
|
9
|
-
unique: true,
|
|
10
|
-
},
|
|
11
|
-
supplierName: {
|
|
12
|
-
type: String,
|
|
13
|
-
required: true,
|
|
14
|
-
trim: true,
|
|
15
|
-
},
|
|
16
|
-
telephone: {
|
|
17
|
-
type: String,
|
|
18
|
-
required: true,
|
|
19
|
-
trim: true,
|
|
20
|
-
},
|
|
21
|
-
address: {
|
|
22
|
-
type: String,
|
|
23
|
-
required: true,
|
|
24
|
-
trim: true,
|
|
25
|
-
},
|
|
26
|
-
email: {
|
|
27
|
-
type: String,
|
|
28
|
-
required: true,
|
|
29
|
-
trim: true,
|
|
30
|
-
lowercase: true,
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
{ timestamps: true }
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
module.exports = mongoose.model('Supplier', supplierSchema);
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "blueprint-backend",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Blueprint API — Node, Express, MongoDB",
|
|
5
|
-
"main": "server.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "nodemon server.js",
|
|
8
|
-
"start": "node server.js"
|
|
9
|
-
},
|
|
10
|
-
"keywords": [],
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"dependencies": {
|
|
13
|
-
"bcrypt": "^5.1.1",
|
|
14
|
-
"cors": "^2.8.5",
|
|
15
|
-
"dotenv": "^16.4.7",
|
|
16
|
-
"express": "^4.21.2",
|
|
17
|
-
"jsonwebtoken": "^9.0.2",
|
|
18
|
-
"mongoose": "^8.9.3"
|
|
19
|
-
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"nodemon": "^3.1.9"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const express = require('express')
|
|
2
|
-
|
|
3
|
-
const router = express.Router()
|
|
4
|
-
|
|
5
|
-
// const {protect} =require('../middleware/auth')
|
|
6
|
-
const {addsupplier,getsupplierbyid,getsupplier,updatesupplier,deletesupplier} = require('../controllers/supplierController')
|
|
7
|
-
|
|
8
|
-
// router.use(protect)
|
|
9
|
-
router.post('/addsupplier',addsupplier)
|
|
10
|
-
router.get('/getsupplier',getsupplier)
|
|
11
|
-
router.get('/getsupplierbyid/:id',getsupplierbyid)
|
|
12
|
-
router.put('/updatesupplier/:id',updatesupplier)
|
|
13
|
-
router.delete('/deletesupplier/:id',deletesupplier)
|
|
14
|
-
|
|
15
|
-
module.exports =router
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const { register, login, getMe } = require('../controllers/authController');
|
|
3
|
-
const { protect } = require('../middleware/auth');
|
|
4
|
-
|
|
5
|
-
const router = express.Router();
|
|
6
|
-
|
|
7
|
-
router.post('/register', register);
|
|
8
|
-
router.post('/login', login);
|
|
9
|
-
router.get('/me', protect, getMe);
|
|
10
|
-
|
|
11
|
-
module.exports = router;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const {
|
|
3
|
-
addDelivery,
|
|
4
|
-
getDeliveries,
|
|
5
|
-
getDeliveryById,
|
|
6
|
-
updateDelivery,
|
|
7
|
-
deleteDelivery,
|
|
8
|
-
} = require('../controllers/deliveryController');
|
|
9
|
-
|
|
10
|
-
const router = express.Router();
|
|
11
|
-
|
|
12
|
-
router.post('/adddelivery', addDelivery);
|
|
13
|
-
router.get('/getdeliveries', getDeliveries);
|
|
14
|
-
router.get('/getdeliverybyid/:id', getDeliveryById);
|
|
15
|
-
router.put('/updatedelivery/:id', updateDelivery);
|
|
16
|
-
router.delete('/deletedelivery/:id', deleteDelivery);
|
|
17
|
-
|
|
18
|
-
module.exports = router;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const express = require("express")
|
|
2
|
-
const router = express.Router()
|
|
3
|
-
const { protect } = require('../middleware/auth');
|
|
4
|
-
const{addproduct,getproduct,getproductbyid,deleteproduct,updateproduct} = require('../controllers/productController')
|
|
5
|
-
|
|
6
|
-
router.use(protect)
|
|
7
|
-
|
|
8
|
-
router.post('/addproduct',addproduct)
|
|
9
|
-
router.get('/getproduct',getproduct)
|
|
10
|
-
router.get('/getproductbyid/:id',getproductbyid)
|
|
11
|
-
router.delete('/deleteproduct/:id',deleteproduct)
|
|
12
|
-
router.put('/updateproduct/:id',updateproduct)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
module.exports = router
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const router = express.Router();
|
|
3
|
-
const { protect } = require('../middleware/auth');
|
|
4
|
-
|
|
5
|
-
// GET /api/protected - simple protected endpoint
|
|
6
|
-
router.get('/', protect, (req, res) => {
|
|
7
|
-
res.json({ message: 'Protected content', user: req.user });
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
module.exports = router;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const {
|
|
3
|
-
addShipment,
|
|
4
|
-
getShipments,
|
|
5
|
-
getShipmentById,
|
|
6
|
-
updateShipment,
|
|
7
|
-
deleteShipment,
|
|
8
|
-
} = require('../controllers/shipmentController');
|
|
9
|
-
|
|
10
|
-
const router = express.Router();
|
|
11
|
-
|
|
12
|
-
router.post('/addshipment', addShipment);
|
|
13
|
-
router.get('/getshipments', getShipments);
|
|
14
|
-
router.get('/getshipmentbyid/:id', getShipmentById);
|
|
15
|
-
router.put('/updateshipment/:id', updateShipment);
|
|
16
|
-
router.delete('/deleteshipment/:id', deleteShipment);
|
|
17
|
-
|
|
18
|
-
module.exports = router;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const cors = require('cors');
|
|
3
|
-
|
|
4
|
-
const connectDB = require('./config/db');
|
|
5
|
-
|
|
6
|
-
const authRoutes = require('./routes/authRoutes');
|
|
7
|
-
|
|
8
|
-
const productRoutes = require('./routes/productRoutes');
|
|
9
|
-
const SupplierRoutes = require('./routes/SupplierRoutes');
|
|
10
|
-
const shipmentRoutes = require('./routes/shipmentRoutes');
|
|
11
|
-
const deliveryRoutes = require('./routes/deliveryRoutes');
|
|
12
|
-
const reportsRoutes = require('./routes/reportsRoutes');
|
|
13
|
-
const protectedRoutes = require('./routes/protectedRoutes');
|
|
14
|
-
|
|
15
|
-
const app = express();
|
|
16
|
-
|
|
17
|
-
app.use(cors());
|
|
18
|
-
app.use(express.json());
|
|
19
|
-
connectDB();
|
|
20
|
-
|
|
21
|
-
app.use('/api/product', productRoutes);
|
|
22
|
-
app.use('/api/supplier', SupplierRoutes);
|
|
23
|
-
app.use('/api/auth', authRoutes);
|
|
24
|
-
|
|
25
|
-
app.use('/api/shipment', shipmentRoutes);
|
|
26
|
-
app.use('/api/delivery', deliveryRoutes);
|
|
27
|
-
app.use('/api/reports', reportsRoutes);
|
|
28
|
-
app.use('/api/protected', protectedRoutes);
|
|
29
|
-
|
|
30
|
-
const PORT = 5001;
|
|
31
|
-
app.listen(PORT, () => {
|
|
32
|
-
console.log(`Server running on http://localhost:${PORT}`);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# React + Vite
|
|
2
|
-
|
|
3
|
-
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
-
|
|
5
|
-
Currently, two official plugins are available:
|
|
6
|
-
|
|
7
|
-
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
|
|
8
|
-
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
|
|
9
|
-
|
|
10
|
-
## React Compiler
|
|
11
|
-
|
|
12
|
-
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
13
|
-
|
|
14
|
-
## Expanding the ESLint configuration
|
|
15
|
-
|
|
16
|
-
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
|