create-myexam-app 1.0.21 → 1.0.22
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/frontend/node_modules/.bin/acorn +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/acorn.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/acorn.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5 +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.package-lock.json +2401 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/_metadata.json +56 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js +3184 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/chunk-B-1-B7_t.js +33 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/package.json +3 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js +186 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js +14385 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js +10177 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react.js +769 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js +205 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js +209 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js +217 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/package.json +32 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs2-built-ins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json +2120 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +5 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/native-modules.json +18 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json +38 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json +231 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugins.json +843 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/native-modules.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/overlapping-plugins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/package.json +40 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugin-bugfixes.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js +5 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js +261 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js +469 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js +290 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js +78 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js +312 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js +87 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js +67 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js +158 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js +38 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js +33 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js +113 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js +41 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js +61 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js +31 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js +230 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js +45 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js +48 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js +23 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js +40 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js +47 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/package.json +84 -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(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +13 -0
- 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/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/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package-lock.json +1609 -0
- 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/SRMS(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
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# KALIWABO SHEMA ELYSEE National Practical Examination 2026
|
|
2
|
+
|
|
3
|
+
## Project Title
|
|
4
|
+
|
|
5
|
+
SUPPLY CHAIN MANAGEMENT SYSTEM (SCMS)
|
|
6
|
+
|
|
7
|
+
## Company
|
|
8
|
+
|
|
9
|
+
SupplyNet Ltd is located in Musanze District, Northern Province, Rwanda. The company manages suppliers, shipments, and deliveries. This system helps the company replace manual record keeping with a digital web application.
|
|
10
|
+
|
|
11
|
+
## Folder Structure
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/
|
|
15
|
+
backend-project/
|
|
16
|
+
config/
|
|
17
|
+
controllers/
|
|
18
|
+
middleware/
|
|
19
|
+
models/
|
|
20
|
+
routes/
|
|
21
|
+
server.js
|
|
22
|
+
package.json
|
|
23
|
+
frontend-project/
|
|
24
|
+
src/
|
|
25
|
+
api/
|
|
26
|
+
components/
|
|
27
|
+
pages/
|
|
28
|
+
App.jsx
|
|
29
|
+
main.jsx
|
|
30
|
+
package.json
|
|
31
|
+
REPORT/
|
|
32
|
+
README.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Technologies Used
|
|
36
|
+
|
|
37
|
+
- React.js
|
|
38
|
+
- React Router DOM
|
|
39
|
+
- Axios
|
|
40
|
+
- Tailwind CSS
|
|
41
|
+
- Node.js
|
|
42
|
+
- Express.js
|
|
43
|
+
- MongoDB
|
|
44
|
+
- Mongoose
|
|
45
|
+
- bcryptjs
|
|
46
|
+
- express-session
|
|
47
|
+
|
|
48
|
+
## Backend Setup
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
cd backend-project
|
|
52
|
+
npm install
|
|
53
|
+
copy .env.example .env
|
|
54
|
+
npm run dev
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Backend URL:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
http://localhost:5000
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Frontend Setup
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
cd frontend-project
|
|
67
|
+
npm install
|
|
68
|
+
npm run dev
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Frontend URL:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
http://localhost:5173
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## MongoDB Database
|
|
78
|
+
|
|
79
|
+
Database name:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
SCMS
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Collections:
|
|
86
|
+
|
|
87
|
+
- Users
|
|
88
|
+
- Suppliers
|
|
89
|
+
- Shipments
|
|
90
|
+
- Deliveries
|
|
91
|
+
|
|
92
|
+
## Main Features
|
|
93
|
+
|
|
94
|
+
- User registration and login
|
|
95
|
+
- Session-based authentication
|
|
96
|
+
- Password recovery
|
|
97
|
+
- Supplier insertion
|
|
98
|
+
- Shipment insert, get, update, delete
|
|
99
|
+
- Delivery insert, get, update, delete
|
|
100
|
+
- Daily, weekly, and monthly printable reports
|
|
101
|
+
- Responsive sidebar navigation
|
|
102
|
+
|
|
103
|
+
## Examination Notes
|
|
104
|
+
|
|
105
|
+
Supplier update and delete were not generated because the practical requirement says Supplier is INSERT ONLY. Supplier listing is included for table display, shipment selection, and reports.
|
|
106
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# 01. Introduction
|
|
2
|
+
|
|
3
|
+
The Supply Chain Management System (SCMS) is a web-based application developed for SupplyNet Ltd, a company located in Musanze District, Northern Province, Rwanda.
|
|
4
|
+
|
|
5
|
+
The company manages suppliers, shipments, and deliveries. Before this system, these activities were handled manually, which made record keeping slow and difficult to report.
|
|
6
|
+
|
|
7
|
+
SCMS was developed using the MERN stack. It allows authenticated users to manage supply chain records and generate daily, weekly, and monthly reports.
|
|
8
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 02. Problem Statement
|
|
2
|
+
|
|
3
|
+
SupplyNet Ltd currently uses a manual process to manage suppliers, shipments, and deliveries. This manual process causes the following problems:
|
|
4
|
+
|
|
5
|
+
- Records may be lost or duplicated.
|
|
6
|
+
- Searching for shipment and delivery information is slow.
|
|
7
|
+
- Report preparation takes too much time.
|
|
8
|
+
- Data relationships between suppliers, shipments, and deliveries are difficult to track manually.
|
|
9
|
+
- Management cannot easily view current supply chain records.
|
|
10
|
+
|
|
11
|
+
The proposed system solves these problems by providing a digital platform for storing, managing, and reporting supply chain information.
|
|
12
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# 03. Objectives
|
|
2
|
+
|
|
3
|
+
## General Objective
|
|
4
|
+
|
|
5
|
+
To develop a Supply Chain Management System that helps SupplyNet Ltd manage suppliers, shipments, deliveries, and reports digitally.
|
|
6
|
+
|
|
7
|
+
## Specific Objectives
|
|
8
|
+
|
|
9
|
+
- To create a secure login system using sessions and encrypted passwords.
|
|
10
|
+
- To insert supplier records with validation and duplicate prevention.
|
|
11
|
+
- To manage shipment records using insert, get, update, and delete operations.
|
|
12
|
+
- To manage delivery records using insert, get, update, and delete operations.
|
|
13
|
+
- To connect suppliers to shipments using Mongoose references.
|
|
14
|
+
- To connect shipments to deliveries using Mongoose references.
|
|
15
|
+
- To generate daily, weekly, and monthly reports.
|
|
16
|
+
- To design a responsive user interface using React.js and Tailwind CSS.
|
|
17
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 04. Technologies Used
|
|
2
|
+
|
|
3
|
+
## Frontend Technologies
|
|
4
|
+
|
|
5
|
+
- React.js: Used to build the user interface.
|
|
6
|
+
- React Router DOM: Used for page navigation.
|
|
7
|
+
- Axios: Used to send requests from frontend to backend.
|
|
8
|
+
- Tailwind CSS: Used for responsive styling.
|
|
9
|
+
|
|
10
|
+
## Backend Technologies
|
|
11
|
+
|
|
12
|
+
- Node.js: Used as the JavaScript runtime environment.
|
|
13
|
+
- Express.js: Used to create REST API routes.
|
|
14
|
+
- Mongoose: Used to model and validate MongoDB data.
|
|
15
|
+
- bcryptjs: Used to encrypt user passwords.
|
|
16
|
+
- express-session: Used for session-based authentication.
|
|
17
|
+
- cors: Used to allow frontend and backend communication.
|
|
18
|
+
- dotenv: Used to manage environment variables.
|
|
19
|
+
|
|
20
|
+
## Database
|
|
21
|
+
|
|
22
|
+
- MongoDB: Used as the NoSQL database.
|
|
23
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 05. Entity Relationship Diagram
|
|
2
|
+
|
|
3
|
+
## Entity List
|
|
4
|
+
|
|
5
|
+
1. User
|
|
6
|
+
2. Supplier
|
|
7
|
+
3. Shipment
|
|
8
|
+
4. Delivery
|
|
9
|
+
|
|
10
|
+
## Primary Keys
|
|
11
|
+
|
|
12
|
+
- User: `_id`
|
|
13
|
+
- Supplier: `_id`
|
|
14
|
+
- Shipment: `_id`
|
|
15
|
+
- Delivery: `_id`
|
|
16
|
+
|
|
17
|
+
MongoDB automatically creates `_id` as the primary key for every document.
|
|
18
|
+
|
|
19
|
+
## Important Unique Fields
|
|
20
|
+
|
|
21
|
+
- User: `username`
|
|
22
|
+
- Supplier: `supplierCode`, `email`
|
|
23
|
+
- Shipment: `shipmentNumber`
|
|
24
|
+
- Delivery: `deliveryCode`
|
|
25
|
+
|
|
26
|
+
## Foreign Key References
|
|
27
|
+
|
|
28
|
+
- Shipment contains `supplier`, which references Supplier `_id`.
|
|
29
|
+
- Delivery contains `shipment`, which references Shipment `_id`.
|
|
30
|
+
|
|
31
|
+
## Relationships and Cardinalities
|
|
32
|
+
|
|
33
|
+
### Supplier to Shipment
|
|
34
|
+
|
|
35
|
+
One Supplier can have many Shipments.
|
|
36
|
+
|
|
37
|
+
Manual ERD drawing:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
Supplier (1) -------------------- (Many) Shipment
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The `supplier` field in the Shipment collection stores the referenced Supplier `_id`.
|
|
44
|
+
|
|
45
|
+
### Shipment to Delivery
|
|
46
|
+
|
|
47
|
+
One Shipment can have many Deliveries.
|
|
48
|
+
|
|
49
|
+
Manual ERD drawing:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Shipment (1) -------------------- (Many) Delivery
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The `shipment` field in the Delivery collection stores the referenced Shipment `_id`.
|
|
56
|
+
|
|
57
|
+
## ERD Drawing Explanation
|
|
58
|
+
|
|
59
|
+
Draw four rectangles named User, Supplier, Shipment, and Delivery. Under each rectangle, list its fields. Mark `_id` as the primary key. In Shipment, mark `supplier` as a foreign key to Supplier. In Delivery, mark `shipment` as a foreign key to Shipment. Connect Supplier to Shipment using a one-to-many line. Connect Shipment to Delivery using a one-to-many line.
|
|
60
|
+
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 06. Database Design
|
|
2
|
+
|
|
3
|
+
## Database Name
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
SCMS
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Collections
|
|
10
|
+
|
|
11
|
+
### Users
|
|
12
|
+
|
|
13
|
+
Fields:
|
|
14
|
+
|
|
15
|
+
- username
|
|
16
|
+
- password
|
|
17
|
+
|
|
18
|
+
Validation:
|
|
19
|
+
|
|
20
|
+
- username is required and unique.
|
|
21
|
+
- password is required and encrypted using bcrypt.
|
|
22
|
+
|
|
23
|
+
### Suppliers
|
|
24
|
+
|
|
25
|
+
Fields:
|
|
26
|
+
|
|
27
|
+
- supplierCode
|
|
28
|
+
- supplierName
|
|
29
|
+
- telephone
|
|
30
|
+
- address
|
|
31
|
+
- email
|
|
32
|
+
|
|
33
|
+
Validation:
|
|
34
|
+
|
|
35
|
+
- All fields are required.
|
|
36
|
+
- supplierCode is unique.
|
|
37
|
+
- email is unique.
|
|
38
|
+
|
|
39
|
+
### Shipments
|
|
40
|
+
|
|
41
|
+
Fields:
|
|
42
|
+
|
|
43
|
+
- supplier
|
|
44
|
+
- shipmentNumber
|
|
45
|
+
- shipmentDate
|
|
46
|
+
- shipmentStatus
|
|
47
|
+
- destination
|
|
48
|
+
|
|
49
|
+
Validation:
|
|
50
|
+
|
|
51
|
+
- All fields are required.
|
|
52
|
+
- shipmentNumber is unique.
|
|
53
|
+
- supplier references the Suppliers collection.
|
|
54
|
+
|
|
55
|
+
### Deliveries
|
|
56
|
+
|
|
57
|
+
Fields:
|
|
58
|
+
|
|
59
|
+
- shipment
|
|
60
|
+
- deliveryCode
|
|
61
|
+
- deliveryDate
|
|
62
|
+
- quantityDelivered
|
|
63
|
+
- deliveryStatus
|
|
64
|
+
|
|
65
|
+
Validation:
|
|
66
|
+
|
|
67
|
+
- All fields are required.
|
|
68
|
+
- deliveryCode is unique.
|
|
69
|
+
- quantityDelivered must be greater than zero.
|
|
70
|
+
- shipment references the Shipments collection.
|
|
71
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 07. System Architecture
|
|
2
|
+
|
|
3
|
+
The system uses MVC architecture on the backend and a component-based React frontend.
|
|
4
|
+
|
|
5
|
+
## Backend MVC Structure
|
|
6
|
+
|
|
7
|
+
- Models: Define MongoDB collections and validation rules.
|
|
8
|
+
- Controllers: Contain business logic for authentication and CRUD operations.
|
|
9
|
+
- Routes: Define API endpoints.
|
|
10
|
+
- Middleware: Protect routes using session authentication.
|
|
11
|
+
- Config: Contains MongoDB database connection.
|
|
12
|
+
|
|
13
|
+
## Frontend Structure
|
|
14
|
+
|
|
15
|
+
- api: Contains Axios API request files.
|
|
16
|
+
- components: Contains reusable layout and message components.
|
|
17
|
+
- pages: Contains main system pages.
|
|
18
|
+
|
|
19
|
+
## System Flow
|
|
20
|
+
|
|
21
|
+
1. The user logs in from the React frontend.
|
|
22
|
+
2. The backend checks username and encrypted password.
|
|
23
|
+
3. If login is successful, a session is created.
|
|
24
|
+
4. The user can access protected pages.
|
|
25
|
+
5. React sends requests to Express API routes using Axios.
|
|
26
|
+
6. Controllers process requests and use Mongoose models to communicate with MongoDB.
|
|
27
|
+
7. Data is returned to the frontend and displayed in forms, tables, and reports.
|
|
28
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 08. API Documentation
|
|
2
|
+
|
|
3
|
+
Base URL:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
http://localhost:5000/api
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## User API
|
|
10
|
+
|
|
11
|
+
| Method | Endpoint | Description |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| POST | `/users/register` | Create a user account |
|
|
14
|
+
| POST | `/users/login` | Login user |
|
|
15
|
+
| POST | `/users/recover-password` | Recover password |
|
|
16
|
+
| POST | `/users/logout` | Logout user |
|
|
17
|
+
| GET | `/users/session` | Get current session user |
|
|
18
|
+
|
|
19
|
+
## Supplier API
|
|
20
|
+
|
|
21
|
+
| Method | Endpoint | Description |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| POST | `/suppliers` | Insert supplier |
|
|
24
|
+
| GET | `/suppliers` | Get suppliers for display, dropdowns, and reports |
|
|
25
|
+
|
|
26
|
+
## Shipment API
|
|
27
|
+
|
|
28
|
+
| Method | Endpoint | Description |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| POST | `/shipments` | Insert shipment |
|
|
31
|
+
| GET | `/shipments` | Get shipments |
|
|
32
|
+
| PUT | `/shipments/:id` | Update shipment |
|
|
33
|
+
| DELETE | `/shipments/:id` | Delete shipment |
|
|
34
|
+
|
|
35
|
+
## Delivery API
|
|
36
|
+
|
|
37
|
+
| Method | Endpoint | Description |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| POST | `/deliveries` | Insert delivery |
|
|
40
|
+
| GET | `/deliveries` | Get deliveries |
|
|
41
|
+
| PUT | `/deliveries/:id` | Update delivery |
|
|
42
|
+
| DELETE | `/deliveries/:id` | Delete delivery |
|
|
43
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 09. Testing
|
|
2
|
+
|
|
3
|
+
## Authentication Testing
|
|
4
|
+
|
|
5
|
+
- Create a new user with username and password.
|
|
6
|
+
- Try to create another user with the same username.
|
|
7
|
+
- Login using valid credentials.
|
|
8
|
+
- Login using invalid credentials.
|
|
9
|
+
- Recover password and login with the new password.
|
|
10
|
+
- Logout and confirm protected pages are not accessible.
|
|
11
|
+
|
|
12
|
+
## Supplier Testing
|
|
13
|
+
|
|
14
|
+
- Insert a supplier with all required fields.
|
|
15
|
+
- Try to insert a supplier with missing fields.
|
|
16
|
+
- Try to insert duplicate supplierCode.
|
|
17
|
+
- Try to insert duplicate email.
|
|
18
|
+
|
|
19
|
+
## Shipment Testing
|
|
20
|
+
|
|
21
|
+
- Insert a shipment linked to an existing supplier.
|
|
22
|
+
- Display all shipments.
|
|
23
|
+
- Update shipment information.
|
|
24
|
+
- Delete a shipment.
|
|
25
|
+
- Confirm duplicate shipmentNumber is prevented.
|
|
26
|
+
|
|
27
|
+
## Delivery Testing
|
|
28
|
+
|
|
29
|
+
- Insert a delivery linked to an existing shipment.
|
|
30
|
+
- Display all deliveries.
|
|
31
|
+
- Update delivery information.
|
|
32
|
+
- Delete a delivery.
|
|
33
|
+
- Confirm duplicate deliveryCode is prevented.
|
|
34
|
+
|
|
35
|
+
## Report Testing
|
|
36
|
+
|
|
37
|
+
- Open Reports page.
|
|
38
|
+
- Select Daily Report.
|
|
39
|
+
- Select Weekly Report.
|
|
40
|
+
- Select Monthly Report.
|
|
41
|
+
- Change between Suppliers, Shipments, and Deliveries.
|
|
42
|
+
- Print report using the Print Report button.
|
|
43
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 10. Challenges
|
|
2
|
+
|
|
3
|
+
During development, the following challenges may be faced:
|
|
4
|
+
|
|
5
|
+
- Maintaining correct references between Supplier, Shipment, and Delivery.
|
|
6
|
+
- Preventing duplicate records using unique fields.
|
|
7
|
+
- Protecting backend routes using session authentication.
|
|
8
|
+
- Displaying reports for different periods.
|
|
9
|
+
- Keeping the user interface simple and responsive.
|
|
10
|
+
|
|
11
|
+
These challenges were handled using Mongoose validation, duplicate checking in controllers, Express session middleware, and responsive Tailwind CSS classes.
|
|
12
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# 11. Conclusion
|
|
2
|
+
|
|
3
|
+
The Supply Chain Management System was developed to help SupplyNet Ltd manage suppliers, shipments, and deliveries digitally.
|
|
4
|
+
|
|
5
|
+
The system includes session-based authentication, password encryption, MVC backend architecture, MongoDB database design, React frontend pages, and printable reports.
|
|
6
|
+
|
|
7
|
+
This project meets the National Practical Examination requirements by using simple, readable, and assessment-friendly MERN stack code.
|
|
8
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
function connectDB() {
|
|
4
|
+
var mongoURI = process.env.MONGO_URI || "mongodb://127.0.0.1:27017/SCMS";
|
|
5
|
+
|
|
6
|
+
return mongoose.connect(mongoURI)
|
|
7
|
+
.then(function () {
|
|
8
|
+
console.log("MongoDB connected successfully to SCMS database");
|
|
9
|
+
})
|
|
10
|
+
.catch(function (error) {
|
|
11
|
+
console.error("MongoDB connection failed:", error.message);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = connectDB;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var Delivery = require("../models/Delivery");
|
|
2
|
+
var Shipment = require("../models/Shipment");
|
|
3
|
+
|
|
4
|
+
function createDelivery(req, res) {
|
|
5
|
+
var shipment = req.body.shipment;
|
|
6
|
+
var deliveryCode = req.body.deliveryCode;
|
|
7
|
+
var deliveryDate = req.body.deliveryDate;
|
|
8
|
+
var quantityDelivered = req.body.quantityDelivered;
|
|
9
|
+
var deliveryStatus = req.body.deliveryStatus;
|
|
10
|
+
|
|
11
|
+
if (!shipment || !deliveryCode || !deliveryDate || !quantityDelivered || !deliveryStatus) {
|
|
12
|
+
return res.status(400).json({ message: "All delivery fields are required" });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Shipment.findById(shipment)
|
|
16
|
+
.then(function (shipmentExists) {
|
|
17
|
+
if (!shipmentExists) {
|
|
18
|
+
return { shipmentNotFound: true };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return Delivery.findOne({ deliveryCode: deliveryCode });
|
|
22
|
+
})
|
|
23
|
+
.then(function (deliveryExists) {
|
|
24
|
+
if (deliveryExists && deliveryExists.shipmentNotFound) {
|
|
25
|
+
return res.status(404).json({ message: "Selected shipment was not found" });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (deliveryExists) {
|
|
29
|
+
return res.status(409).json({ message: "Delivery code already exists" });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return Delivery.create({
|
|
33
|
+
shipment: shipment,
|
|
34
|
+
deliveryCode: deliveryCode,
|
|
35
|
+
deliveryDate: deliveryDate,
|
|
36
|
+
quantityDelivered: quantityDelivered,
|
|
37
|
+
deliveryStatus: deliveryStatus,
|
|
38
|
+
});
|
|
39
|
+
})
|
|
40
|
+
.then(function (delivery) {
|
|
41
|
+
if (!delivery) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
res.status(201).json({ message: "Delivery inserted successfully", delivery: delivery });
|
|
46
|
+
})
|
|
47
|
+
.catch(function (error) {
|
|
48
|
+
res.status(500).json({ message: "Failed to insert delivery", error: error.message });
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function getDeliveries(req, res) {
|
|
53
|
+
Delivery.find()
|
|
54
|
+
.populate({
|
|
55
|
+
path: "shipment",
|
|
56
|
+
select: "shipmentNumber destination shipmentDate supplier",
|
|
57
|
+
populate: { path: "supplier", select: "supplierName supplierCode" },
|
|
58
|
+
})
|
|
59
|
+
.sort({ createdAt: -1 })
|
|
60
|
+
.then(function (deliveries) {
|
|
61
|
+
res.status(200).json(deliveries);
|
|
62
|
+
})
|
|
63
|
+
.catch(function (error) {
|
|
64
|
+
res.status(500).json({ message: "Failed to get deliveries", error: error.message });
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function updateDelivery(req, res) {
|
|
69
|
+
var id = req.params.id;
|
|
70
|
+
var shipment = req.body.shipment;
|
|
71
|
+
var deliveryCode = req.body.deliveryCode;
|
|
72
|
+
var deliveryDate = req.body.deliveryDate;
|
|
73
|
+
var quantityDelivered = req.body.quantityDelivered;
|
|
74
|
+
var deliveryStatus = req.body.deliveryStatus;
|
|
75
|
+
|
|
76
|
+
if (!shipment || !deliveryCode || !deliveryDate || !quantityDelivered || !deliveryStatus) {
|
|
77
|
+
return res.status(400).json({ message: "All delivery fields are required" });
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Shipment.findById(shipment)
|
|
81
|
+
.then(function (shipmentExists) {
|
|
82
|
+
if (!shipmentExists) {
|
|
83
|
+
return { shipmentNotFound: true };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return Delivery.findOne({
|
|
87
|
+
deliveryCode: deliveryCode,
|
|
88
|
+
_id: { $ne: id },
|
|
89
|
+
});
|
|
90
|
+
})
|
|
91
|
+
.then(function (duplicateDelivery) {
|
|
92
|
+
if (duplicateDelivery && duplicateDelivery.shipmentNotFound) {
|
|
93
|
+
return res.status(404).json({ message: "Selected shipment was not found" });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (duplicateDelivery) {
|
|
97
|
+
return res.status(409).json({ message: "Delivery code already exists" });
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return Delivery.findByIdAndUpdate(
|
|
101
|
+
id,
|
|
102
|
+
{
|
|
103
|
+
shipment: shipment,
|
|
104
|
+
deliveryCode: deliveryCode,
|
|
105
|
+
deliveryDate: deliveryDate,
|
|
106
|
+
quantityDelivered: quantityDelivered,
|
|
107
|
+
deliveryStatus: deliveryStatus,
|
|
108
|
+
},
|
|
109
|
+
{ new: true, runValidators: true }
|
|
110
|
+
);
|
|
111
|
+
})
|
|
112
|
+
.then(function (delivery) {
|
|
113
|
+
if (!delivery) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
res.status(200).json({ message: "Delivery updated successfully", delivery: delivery });
|
|
118
|
+
})
|
|
119
|
+
.catch(function (error) {
|
|
120
|
+
res.status(500).json({ message: "Failed to update delivery", error: error.message });
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function deleteDelivery(req, res) {
|
|
125
|
+
var id = req.params.id;
|
|
126
|
+
|
|
127
|
+
Delivery.findByIdAndDelete(id)
|
|
128
|
+
.then(function (delivery) {
|
|
129
|
+
if (!delivery) {
|
|
130
|
+
return res.status(404).json({ message: "Delivery not found" });
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
res.status(200).json({ message: "Delivery deleted successfully" });
|
|
134
|
+
})
|
|
135
|
+
.catch(function (error) {
|
|
136
|
+
res.status(500).json({ message: "Failed to delete delivery", error: error.message });
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
module.exports = {
|
|
141
|
+
createDelivery: createDelivery,
|
|
142
|
+
getDeliveries: getDeliveries,
|
|
143
|
+
updateDelivery: updateDelivery,
|
|
144
|
+
deleteDelivery: deleteDelivery,
|
|
145
|
+
};
|