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.
Files changed (315) hide show
  1. package/index.js +25 -17
  2. package/package.json +1 -1
  3. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
  4. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
  5. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
  6. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/authController.js +115 -0
  7. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/employeeController.js +97 -0
  8. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/payrollController.js +113 -0
  9. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +35 -0
  10. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
  11. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Employee.js +52 -0
  12. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Payroll.js +50 -0
  13. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
  14. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
  15. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
  16. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/authRoutes.js +18 -0
  17. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/employeeRoutes.js +19 -0
  18. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/payrollRoutes.js +19 -0
  19. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
  20. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +71 -0
  21. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
  22. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
  23. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
  24. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
  25. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +57 -0
  26. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
  27. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/authApi.js +26 -0
  28. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/employeeApi.js +26 -0
  29. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/payrollApi.js +26 -0
  30. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
  31. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
  32. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
  33. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
  34. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
  35. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +38 -0
  36. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
  37. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
  38. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
  39. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/EmployeePage.jsx +166 -0
  40. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
  41. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/PayrollPage.jsx +198 -0
  42. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
  43. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
  44. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +113 -0
  45. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
  46. package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
  47. package/projects/SCMS/frontend/node_modules/.bin/acorn +16 -0
  48. package/projects/SCMS/frontend/node_modules/.bin/acorn.cmd +17 -0
  49. package/projects/SCMS/frontend/node_modules/.bin/acorn.ps1 +28 -0
  50. package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping +16 -0
  51. package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.cmd +17 -0
  52. package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.ps1 +28 -0
  53. package/projects/SCMS/frontend/node_modules/.bin/browserslist +16 -0
  54. package/projects/SCMS/frontend/node_modules/.bin/browserslist.cmd +17 -0
  55. package/projects/SCMS/frontend/node_modules/.bin/browserslist.ps1 +28 -0
  56. package/projects/SCMS/frontend/node_modules/.bin/eslint +16 -0
  57. package/projects/SCMS/frontend/node_modules/.bin/eslint.cmd +17 -0
  58. package/projects/SCMS/frontend/node_modules/.bin/eslint.ps1 +28 -0
  59. package/projects/SCMS/frontend/node_modules/.bin/jiti +16 -0
  60. package/projects/SCMS/frontend/node_modules/.bin/jiti.cmd +17 -0
  61. package/projects/SCMS/frontend/node_modules/.bin/jiti.ps1 +28 -0
  62. package/projects/SCMS/frontend/node_modules/.bin/jsesc +16 -0
  63. package/projects/SCMS/frontend/node_modules/.bin/jsesc.cmd +17 -0
  64. package/projects/SCMS/frontend/node_modules/.bin/jsesc.ps1 +28 -0
  65. package/projects/SCMS/frontend/node_modules/.bin/json5 +16 -0
  66. package/projects/SCMS/frontend/node_modules/.bin/json5.cmd +17 -0
  67. package/projects/SCMS/frontend/node_modules/.bin/json5.ps1 +28 -0
  68. package/projects/SCMS/frontend/node_modules/.bin/nanoid +16 -0
  69. package/projects/SCMS/frontend/node_modules/.bin/nanoid.cmd +17 -0
  70. package/projects/SCMS/frontend/node_modules/.bin/nanoid.ps1 +28 -0
  71. package/projects/SCMS/frontend/node_modules/.bin/node-which +16 -0
  72. package/projects/SCMS/frontend/node_modules/.bin/node-which.cmd +17 -0
  73. package/projects/SCMS/frontend/node_modules/.bin/node-which.ps1 +28 -0
  74. package/projects/SCMS/frontend/node_modules/.bin/parser +16 -0
  75. package/projects/SCMS/frontend/node_modules/.bin/parser.cmd +17 -0
  76. package/projects/SCMS/frontend/node_modules/.bin/parser.ps1 +28 -0
  77. package/projects/SCMS/frontend/node_modules/.bin/rolldown +16 -0
  78. package/projects/SCMS/frontend/node_modules/.bin/rolldown.cmd +17 -0
  79. package/projects/SCMS/frontend/node_modules/.bin/rolldown.ps1 +28 -0
  80. package/projects/SCMS/frontend/node_modules/.bin/semver +16 -0
  81. package/projects/SCMS/frontend/node_modules/.bin/semver.cmd +17 -0
  82. package/projects/SCMS/frontend/node_modules/.bin/semver.ps1 +28 -0
  83. package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db +16 -0
  84. package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.cmd +17 -0
  85. package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.ps1 +28 -0
  86. package/projects/SCMS/frontend/node_modules/.bin/vite +16 -0
  87. package/projects/SCMS/frontend/node_modules/.bin/vite.cmd +17 -0
  88. package/projects/SCMS/frontend/node_modules/.bin/vite.ps1 +28 -0
  89. package/projects/SCMS/frontend/node_modules/.package-lock.json +2401 -0
  90. package/projects/SCMS/frontend/node_modules/.vite/deps/_metadata.json +56 -0
  91. package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js +3184 -0
  92. package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js.map +1 -0
  93. package/projects/SCMS/frontend/node_modules/.vite/deps/chunk-B-1-B7_t.js +33 -0
  94. package/projects/SCMS/frontend/node_modules/.vite/deps/package.json +3 -0
  95. package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js +186 -0
  96. package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js.map +1 -0
  97. package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js +14385 -0
  98. package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js.map +1 -0
  99. package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js +10177 -0
  100. package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js.map +1 -0
  101. package/projects/SCMS/frontend/node_modules/.vite/deps/react.js +769 -0
  102. package/projects/SCMS/frontend/node_modules/.vite/deps/react.js.map +1 -0
  103. package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js +205 -0
  104. package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +1 -0
  105. package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js +209 -0
  106. package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js.map +1 -0
  107. package/projects/SCMS/frontend/node_modules/@babel/code-frame/LICENSE +22 -0
  108. package/projects/SCMS/frontend/node_modules/@babel/code-frame/README.md +19 -0
  109. package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js +217 -0
  110. package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js.map +1 -0
  111. package/projects/SCMS/frontend/node_modules/@babel/code-frame/package.json +32 -0
  112. package/projects/SCMS/frontend/node_modules/@babel/compat-data/LICENSE +22 -0
  113. package/projects/SCMS/frontend/node_modules/@babel/compat-data/README.md +19 -0
  114. package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs2-built-ins.js +2 -0
  115. package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +2 -0
  116. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json +2120 -0
  117. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +5 -0
  118. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/native-modules.json +18 -0
  119. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json +38 -0
  120. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json +231 -0
  121. package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugins.json +843 -0
  122. package/projects/SCMS/frontend/node_modules/@babel/compat-data/native-modules.js +2 -0
  123. package/projects/SCMS/frontend/node_modules/@babel/compat-data/overlapping-plugins.js +2 -0
  124. package/projects/SCMS/frontend/node_modules/@babel/compat-data/package.json +40 -0
  125. package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugin-bugfixes.js +2 -0
  126. package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugins.js +2 -0
  127. package/projects/SCMS/frontend/node_modules/@babel/core/LICENSE +22 -0
  128. package/projects/SCMS/frontend/node_modules/@babel/core/README.md +19 -0
  129. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js +5 -0
  130. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map +1 -0
  131. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js +261 -0
  132. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js.map +1 -0
  133. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js +469 -0
  134. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js.map +1 -0
  135. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
  136. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map +1 -0
  137. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js +290 -0
  138. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js.map +1 -0
  139. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
  140. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs.map +1 -0
  141. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
  142. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map +1 -0
  143. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js +78 -0
  144. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js.map +1 -0
  145. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js +312 -0
  146. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js.map +1 -0
  147. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js +87 -0
  148. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js.map +1 -0
  149. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js +67 -0
  150. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js.map +1 -0
  151. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js +158 -0
  152. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js.map +1 -0
  153. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js +38 -0
  154. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js.map +1 -0
  155. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js +33 -0
  156. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js.map +1 -0
  157. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js +113 -0
  158. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js.map +1 -0
  159. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js +41 -0
  160. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js.map +1 -0
  161. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js +61 -0
  162. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js.map +1 -0
  163. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js +31 -0
  164. package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js.map +1 -0
  165. package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js +230 -0
  166. package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js.map +1 -0
  167. package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js +45 -0
  168. package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js.map +1 -0
  169. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js +48 -0
  170. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js.map +1 -0
  171. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js +23 -0
  172. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js.map +1 -0
  173. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js +40 -0
  174. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js.map +1 -0
  175. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js +47 -0
  176. package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js.map +1 -0
  177. package/projects/SCMS/frontend/node_modules/@babel/core/package.json +84 -0
  178. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +106 -0
  179. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/01_Introduction.md +8 -0
  180. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/02_Problem_Statement.md +12 -0
  181. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/03_Objectives.md +17 -0
  182. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/04_Technologies_Used.md +23 -0
  183. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/05_ERD.md +60 -0
  184. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/06_Database_Design.md +71 -0
  185. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/07_System_Architecture.md +28 -0
  186. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/08_API_Documentation.md +43 -0
  187. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/09_Testing.md +43 -0
  188. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/10_Challenges.md +12 -0
  189. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/11_Conclusion.md +8 -0
  190. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env.example +4 -0
  191. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +16 -0
  192. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/deliveryController.js +145 -0
  193. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/shipmentController.js +149 -0
  194. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/supplierController.js +56 -0
  195. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +158 -0
  196. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
  197. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Delivery.js +34 -0
  198. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Shipment.js +34 -0
  199. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Supplier.js +38 -0
  200. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +21 -0
  201. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1540 -0
  202. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +22 -0
  203. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/deliveryRoutes.js +11 -0
  204. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/shipmentRoutes.js +11 -0
  205. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/supplierRoutes.js +9 -0
  206. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +11 -0
  207. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +70 -0
  208. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/.env.example +2 -0
  209. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +13 -0
  210. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2944 -0
  211. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
  212. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
  213. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +72 -0
  214. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +14 -0
  215. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/deliveryApi.js +17 -0
  216. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/shipmentApi.js +17 -0
  217. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/supplierApi.js +9 -0
  218. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +21 -0
  219. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +16 -0
  220. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
  221. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/PageHeader.jsx +12 -0
  222. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +40 -0
  223. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
  224. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Dashboard.jsx +62 -0
  225. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Delivery.jsx +212 -0
  226. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Login.jsx +158 -0
  227. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Logout.jsx +24 -0
  228. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Reports.jsx +221 -0
  229. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Shipment.jsx +212 -0
  230. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Supplier.jsx +118 -0
  231. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/styles.css +27 -0
  232. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +8 -0
  233. package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +6 -0
  234. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
  235. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
  236. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
  237. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/productController.js +29 -0
  238. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +52 -0
  239. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/stockTransactionController.js +128 -0
  240. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +115 -0
  241. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/warehouseController.js +29 -0
  242. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
  243. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Product.js +44 -0
  244. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/StockTransaction.js +33 -0
  245. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
  246. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Warehouse.js +25 -0
  247. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
  248. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
  249. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/productRoutes.js +10 -0
  250. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
  251. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/stockTransactionRoutes.js +17 -0
  252. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +18 -0
  253. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/warehouseRoutes.js +10 -0
  254. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +73 -0
  255. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
  256. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
  257. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
  258. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
  259. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +66 -0
  260. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
  261. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/productApi.js +11 -0
  262. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
  263. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/transactionApi.js +21 -0
  264. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +26 -0
  265. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/warehouseApi.js +11 -0
  266. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
  267. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
  268. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
  269. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
  270. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +39 -0
  271. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
  272. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
  273. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
  274. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
  275. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ProductPage.jsx +107 -0
  276. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
  277. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
  278. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +152 -0
  279. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/TransactionPage.jsx +195 -0
  280. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/WarehousePage.jsx +93 -0
  281. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
  282. package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
  283. package/projects/SRMS/frontend/src/pages/Reports.jsx +170 -58
  284. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/README.md +49 -0
  285. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/.env +3 -0
  286. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/middleware/authMiddleware.js +19 -0
  287. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Customer.js +11 -0
  288. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Product.js +10 -0
  289. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Sale.js +19 -0
  290. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/User.js +8 -0
  291. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package-lock.json +1609 -0
  292. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package.json +20 -0
  293. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/authRoutes.js +75 -0
  294. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/customerRoutes.js +42 -0
  295. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/productRoutes.js +41 -0
  296. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/reportRoutes.js +129 -0
  297. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/saleRoutes.js +107 -0
  298. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/server.js +49 -0
  299. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-DZxY56Bj.js +75 -0
  300. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-J8MKb3Fq.css +1 -0
  301. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/index.html +13 -0
  302. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/index.html +12 -0
  303. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package-lock.json +2029 -0
  304. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package.json +21 -0
  305. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/App.jsx +77 -0
  306. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/index.css +333 -0
  307. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/main.jsx +10 -0
  308. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Customers.jsx +85 -0
  309. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Dashboard.jsx +75 -0
  310. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Login.jsx +65 -0
  311. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Products.jsx +91 -0
  312. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Register.jsx +82 -0
  313. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Reports.jsx +138 -0
  314. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Sales.jsx +154 -0
  315. package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/vite.config.js +9 -0
package/index.js CHANGED
@@ -11,31 +11,39 @@ const rl = readline.createInterface({
11
11
  })
12
12
  console.log('\n[1] Car Repair Parking Managemnt System')
13
13
  console.log('[2]Employee Payroll Management System')
14
- console.log('[3]middleware')
15
- console.log('[4] Parking Management System')
16
- console.log('[5]Supply Chain Managemnt System')
17
- console.log('[6] School fee Management System')
18
- console.log('[7]Stock Invetory Management System')
19
- console.log('[8]Stock Management System')
20
- console.log('[9]Stock Record Management System')
21
- console.log('[10]userController.js')
14
+ console.log('[3]Employee Payroll Management System Elysee')
15
+ console.log('[4]middleware')
16
+ console.log('[5] Parking Management System')
17
+ console.log('[6]Supply Chain Managemnt System')
18
+ console.log('[7]Supply Chain Management System Elysee')
19
+ console.log('[8] School fee Management System')
20
+ console.log('[9]Stock Hub Management System')
21
+ console.log('[10]Stock Invetory Management System')
22
+ console.log('[11]Stock Management System')
23
+ console.log('[12]Sales Record Management System')
24
+ console.log('[13]Sales Record Management System Elysee')
25
+ console.log('[14]userController.js')
22
26
 
23
27
 
24
28
 
25
29
 
26
- rl.question('Pick (1-10): ', (answer) => {
30
+ rl.question('Pick (1-14): ', (answer) => {
27
31
 
28
32
  const projects = {
29
33
  '1':'crpms',
30
34
  '2':'EPMS',
31
- '3':'middleware',
32
- '4': 'parking managementt system',
33
- '5':'SCMS',
34
- '6': 'sfms-app',
35
- '7':'sims',
36
- '8': 'SMS-',
37
- '9':'SRMS',
38
- '10':'user',
35
+ '3':'EPMS(Ely)',
36
+ '4':'middleware',
37
+ '5': 'parking managementt system',
38
+ '6':'SCMS',
39
+ '7':'SCMS(Ely)',
40
+ '8': 'sfms-app',
41
+ '9':'SHMS(Ely)',
42
+ '10':'sims',
43
+ '11': 'SMS-',
44
+ '12':'SRMS',
45
+ '13':'SRMS(Ely)',
46
+ '14':'user',
39
47
 
40
48
 
41
49
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  "name": "create-myexam-app",
4
4
 
5
- "version": "1.0.21",
5
+ "version": "1.0.22",
6
6
 
7
7
  "description": "My exam projects",
8
8
 
@@ -0,0 +1,84 @@
1
+ # KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026
2
+
3
+ ## Project Name
4
+
5
+ Stock Management System for StockHub Ltd.
6
+
7
+ ## Technologies Used
8
+
9
+ Frontend:
10
+ - React.js
11
+ - React Router DOM
12
+ - Axios
13
+ - Tailwind CSS
14
+
15
+ Backend:
16
+ - Node.js
17
+ - Express.js
18
+ - MongoDB
19
+ - Mongoose
20
+ - bcryptjs
21
+ - express-session
22
+
23
+ ## Installation Steps
24
+
25
+ 1. Open the project folder:
26
+
27
+ ```bash
28
+ cd KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026
29
+ ```
30
+
31
+ 2. Install backend dependencies:
32
+
33
+ ```bash
34
+ cd backend-project
35
+ npm install
36
+ ```
37
+
38
+ 3. Install frontend dependencies:
39
+
40
+ ```bash
41
+ cd ../frontend-project
42
+ npm install
43
+ ```
44
+
45
+ 4. Make sure MongoDB is running locally.
46
+
47
+ The backend uses this MongoDB database:
48
+
49
+ ```bash
50
+ mongodb://127.0.0.1:27017/SMS
51
+ ```
52
+
53
+ ## Backend Startup
54
+
55
+ ```bash
56
+ cd backend-project
57
+ npm run dev
58
+ ```
59
+
60
+ Backend URL:
61
+
62
+ ```bash
63
+ http://localhost:5000
64
+ ```
65
+
66
+ Default login account:
67
+
68
+ ```bash
69
+ Username: manager
70
+ Password: manager123
71
+ ```
72
+
73
+ ## Frontend Startup
74
+
75
+ ```bash
76
+ cd frontend-project
77
+ npm run dev
78
+ ```
79
+
80
+ Frontend URL:
81
+
82
+ ```bash
83
+ http://localhost:5173
84
+ ```
@@ -0,0 +1,3 @@
1
+ PORT=5000
2
+ MONGO_URI=mongodb://127.0.0.1:27017/epms
3
+ SESSION_SECRET=epms_exam_secret
@@ -0,0 +1,13 @@
1
+ const mongoose = require("mongoose");
2
+
3
+ const connectDB = async () => {
4
+ try {
5
+ await mongoose.connect(process.env.MONGO_URI || "mongodb://127.0.0.1:27017/epms");
6
+ console.log("MongoDB connected to EPMS database");
7
+ } catch (error) {
8
+ console.error("MongoDB connection failed:", error.message);
9
+ process.exit(1);
10
+ }
11
+ };
12
+
13
+ module.exports = connectDB;
@@ -0,0 +1,115 @@
1
+ const bcrypt = require("bcryptjs");
2
+ const User = require("../models/User");
3
+
4
+ const saveSession = (req, res, message, user) => {
5
+ req.session.user = {
6
+ id: user._id,
7
+ username: user.username
8
+ };
9
+
10
+ req.session.save((error) => {
11
+ if (error) {
12
+ return res.status(500).json({ message: "Session could not be saved" });
13
+ }
14
+
15
+ res.json({ message, user: req.session.user });
16
+ });
17
+ };
18
+
19
+ const register = async (req, res) => {
20
+ try {
21
+ const { username, password } = req.body;
22
+
23
+ if (!username || !password) {
24
+ return res.status(400).json({ message: "Username and password are required" });
25
+ }
26
+
27
+ const existingUser = await User.findOne({ username: username.trim() });
28
+ if (existingUser) {
29
+ return res.status(400).json({ message: "Username already exists" });
30
+ }
31
+
32
+ const hashedPassword = await bcrypt.hash(password, 10);
33
+ const user = await User.create({
34
+ username: username.trim(),
35
+ password: hashedPassword
36
+ });
37
+
38
+ saveSession(req, res, "Account created successfully", user);
39
+ } catch (error) {
40
+ res.status(500).json({ message: "Registration failed", error: error.message });
41
+ }
42
+ };
43
+
44
+ const login = async (req, res) => {
45
+ try {
46
+ const { username, password } = req.body;
47
+
48
+ if (!username || !password) {
49
+ return res.status(400).json({ message: "Username and password are required" });
50
+ }
51
+
52
+ const user = await User.findOne({ username: username.trim() });
53
+ if (!user) {
54
+ return res.status(400).json({ message: "Invalid username or password" });
55
+ }
56
+
57
+ const isPasswordCorrect = await bcrypt.compare(password, user.password);
58
+ if (!isPasswordCorrect) {
59
+ return res.status(400).json({ message: "Invalid username or password" });
60
+ }
61
+
62
+ saveSession(req, res, "Login successful", user);
63
+ } catch (error) {
64
+ res.status(500).json({ message: "Login failed", error: error.message });
65
+ }
66
+ };
67
+
68
+ const logout = (req, res) => {
69
+ req.session.destroy((error) => {
70
+ if (error) {
71
+ return res.status(500).json({ message: "Logout failed" });
72
+ }
73
+
74
+ res.clearCookie("connect.sid");
75
+ res.json({ message: "Logout successful" });
76
+ });
77
+ };
78
+
79
+ const getSession = (req, res) => {
80
+ if (!req.session || !req.session.user) {
81
+ return res.status(401).json({ message: "No active session" });
82
+ }
83
+
84
+ res.json({ user: req.session.user });
85
+ };
86
+
87
+ const recoverPassword = async (req, res) => {
88
+ try {
89
+ const { username, newPassword } = req.body;
90
+
91
+ if (!username || !newPassword) {
92
+ return res.status(400).json({ message: "Username and new password are required" });
93
+ }
94
+
95
+ const user = await User.findOne({ username: username.trim() });
96
+ if (!user) {
97
+ return res.status(404).json({ message: "User account was not found" });
98
+ }
99
+
100
+ user.password = await bcrypt.hash(newPassword, 10);
101
+ await user.save();
102
+
103
+ res.json({ message: "Password changed successfully" });
104
+ } catch (error) {
105
+ res.status(500).json({ message: "Password recovery failed", error: error.message });
106
+ }
107
+ };
108
+
109
+ module.exports = {
110
+ register,
111
+ login,
112
+ logout,
113
+ getSession,
114
+ recoverPassword
115
+ };
@@ -0,0 +1,97 @@
1
+ const Employee = require("../models/Employee");
2
+
3
+ const createEmployee = async (req, res) => {
4
+ try {
5
+ const { employeeCode, firstName, lastName, department, position, baseSalary, hireDate, email, phone } = req.body;
6
+
7
+ if (!employeeCode || !firstName || !lastName || !department || !position || !baseSalary || !hireDate) {
8
+ return res.status(400).json({ message: "All required fields must be filled" });
9
+ }
10
+
11
+ const existingEmployee = await Employee.findOne({ employeeCode });
12
+ if (existingEmployee) {
13
+ return res.status(400).json({ message: "Employee code already exists" });
14
+ }
15
+
16
+ const employee = await Employee.create({
17
+ employeeCode,
18
+ firstName: firstName.trim(),
19
+ lastName: lastName.trim(),
20
+ department: department.trim(),
21
+ position: position.trim(),
22
+ baseSalary,
23
+ hireDate,
24
+ email,
25
+ phone
26
+ });
27
+
28
+ res.status(201).json({ message: "Employee added successfully", employee });
29
+ } catch (error) {
30
+ res.status(500).json({ message: "Employee could not be created", error: error.message });
31
+ }
32
+ };
33
+
34
+ const getEmployees = async (req, res) => {
35
+ try {
36
+ const employees = await Employee.find().sort({ lastName: 1 });
37
+ res.json(employees);
38
+ } catch (error) {
39
+ res.status(500).json({ message: "Employees could not be retrieved", error: error.message });
40
+ }
41
+ };
42
+
43
+ const getEmployee = async (req, res) => {
44
+ try {
45
+ const employee = await Employee.findById(req.params.id);
46
+
47
+ if (!employee) {
48
+ return res.status(404).json({ message: "Employee not found" });
49
+ }
50
+
51
+ res.json(employee);
52
+ } catch (error) {
53
+ res.status(500).json({ message: "Employee could not be retrieved", error: error.message });
54
+ }
55
+ };
56
+
57
+ const updateEmployee = async (req, res) => {
58
+ try {
59
+ const { firstName, lastName, department, position, baseSalary, hireDate, email, phone } = req.body;
60
+
61
+ const employee = await Employee.findByIdAndUpdate(
62
+ req.params.id,
63
+ { firstName, lastName, department, position, baseSalary, hireDate, email, phone },
64
+ { new: true, runValidators: true }
65
+ );
66
+
67
+ if (!employee) {
68
+ return res.status(404).json({ message: "Employee not found" });
69
+ }
70
+
71
+ res.json({ message: "Employee updated successfully", employee });
72
+ } catch (error) {
73
+ res.status(500).json({ message: "Employee could not be updated", error: error.message });
74
+ }
75
+ };
76
+
77
+ const deleteEmployee = async (req, res) => {
78
+ try {
79
+ const employee = await Employee.findByIdAndDelete(req.params.id);
80
+
81
+ if (!employee) {
82
+ return res.status(404).json({ message: "Employee not found" });
83
+ }
84
+
85
+ res.json({ message: "Employee deleted successfully" });
86
+ } catch (error) {
87
+ res.status(500).json({ message: "Employee could not be deleted", error: error.message });
88
+ }
89
+ };
90
+
91
+ module.exports = {
92
+ createEmployee,
93
+ getEmployees,
94
+ getEmployee,
95
+ updateEmployee,
96
+ deleteEmployee
97
+ };
@@ -0,0 +1,113 @@
1
+ const Payroll = require("../models/Payroll");
2
+ const Employee = require("../models/Employee");
3
+
4
+ const createPayroll = async (req, res) => {
5
+ try {
6
+ const { employee, month, year, basicPay, allowances, deductions, netPay, paymentDate } = req.body;
7
+
8
+ if (!employee || !month || !year || basicPay === undefined || netPay === undefined) {
9
+ return res.status(400).json({ message: "Employee, month, year, basic pay and net pay are required" });
10
+ }
11
+
12
+ const employeeExists = await Employee.findById(employee);
13
+ if (!employeeExists) {
14
+ return res.status(404).json({ message: "Employee not found" });
15
+ }
16
+
17
+ const existingPayroll = await Payroll.findOne({ employee, month, year });
18
+ if (existingPayroll) {
19
+ return res.status(400).json({ message: "Payroll already exists for this employee for the given period" });
20
+ }
21
+
22
+ const payroll = await Payroll.create({
23
+ employee,
24
+ month,
25
+ year,
26
+ basicPay,
27
+ allowances: allowances || 0,
28
+ deductions: deductions || 0,
29
+ netPay,
30
+ paymentDate: paymentDate || Date.now()
31
+ });
32
+
33
+ const populatedPayroll = await Payroll.findById(payroll._id).populate("employee");
34
+
35
+ res.status(201).json({ message: "Payroll processed successfully", payroll: populatedPayroll });
36
+ } catch (error) {
37
+ res.status(500).json({ message: "Payroll could not be created", error: error.message });
38
+ }
39
+ };
40
+
41
+ const getPayrolls = async (req, res) => {
42
+ try {
43
+ const filter = {};
44
+
45
+ if (req.query.month) filter.month = parseInt(req.query.month);
46
+ if (req.query.year) filter.year = parseInt(req.query.year);
47
+ if (req.query.employee) filter.employee = req.query.employee;
48
+
49
+ const payrolls = await Payroll.find(filter)
50
+ .populate("employee")
51
+ .sort({ year: -1, month: -1 });
52
+
53
+ res.json(payrolls);
54
+ } catch (error) {
55
+ res.status(500).json({ message: "Payrolls could not be retrieved", error: error.message });
56
+ }
57
+ };
58
+
59
+ const getPayroll = async (req, res) => {
60
+ try {
61
+ const payroll = await Payroll.findById(req.params.id).populate("employee");
62
+
63
+ if (!payroll) {
64
+ return res.status(404).json({ message: "Payroll record not found" });
65
+ }
66
+
67
+ res.json(payroll);
68
+ } catch (error) {
69
+ res.status(500).json({ message: "Payroll could not be retrieved", error: error.message });
70
+ }
71
+ };
72
+
73
+ const updatePayroll = async (req, res) => {
74
+ try {
75
+ const { basicPay, allowances, deductions, netPay, paymentDate } = req.body;
76
+
77
+ const payroll = await Payroll.findByIdAndUpdate(
78
+ req.params.id,
79
+ { basicPay, allowances, deductions, netPay, paymentDate },
80
+ { new: true, runValidators: true }
81
+ ).populate("employee");
82
+
83
+ if (!payroll) {
84
+ return res.status(404).json({ message: "Payroll record not found" });
85
+ }
86
+
87
+ res.json({ message: "Payroll updated successfully", payroll });
88
+ } catch (error) {
89
+ res.status(500).json({ message: "Payroll could not be updated", error: error.message });
90
+ }
91
+ };
92
+
93
+ const deletePayroll = async (req, res) => {
94
+ try {
95
+ const payroll = await Payroll.findByIdAndDelete(req.params.id);
96
+
97
+ if (!payroll) {
98
+ return res.status(404).json({ message: "Payroll record not found" });
99
+ }
100
+
101
+ res.json({ message: "Payroll record deleted successfully" });
102
+ } catch (error) {
103
+ res.status(500).json({ message: "Payroll could not be deleted", error: error.message });
104
+ }
105
+ };
106
+
107
+ module.exports = {
108
+ createPayroll,
109
+ getPayrolls,
110
+ getPayroll,
111
+ updatePayroll,
112
+ deletePayroll
113
+ };
@@ -0,0 +1,35 @@
1
+ const Payroll = require("../models/Payroll");
2
+ const Employee = require("../models/Employee");
3
+
4
+ const getReports = async (req, res) => {
5
+ try {
6
+ const month = parseInt(req.query.month) || new Date().getMonth() + 1;
7
+ const year = parseInt(req.query.year) || new Date().getFullYear();
8
+
9
+ const payrolls = await Payroll.find({ month, year })
10
+ .populate("employee")
11
+ .sort({ "employee.lastName": 1 });
12
+
13
+ const totalEmployees = await Employee.countDocuments();
14
+ const totalPayrollAmount = payrolls.reduce((sum, p) => sum + p.netPay, 0);
15
+ const totalAllowances = payrolls.reduce((sum, p) => sum + (p.allowances || 0), 0);
16
+ const totalDeductions = payrolls.reduce((sum, p) => sum + (p.deductions || 0), 0);
17
+
18
+ res.json({
19
+ month,
20
+ year,
21
+ totalEmployees,
22
+ payrollRecords: payrolls,
23
+ totalPayrollAmount,
24
+ totalAllowances,
25
+ totalDeductions,
26
+ recordCount: payrolls.length
27
+ });
28
+ } catch (error) {
29
+ res.status(500).json({ message: "Report could not be generated", error: error.message });
30
+ }
31
+ };
32
+
33
+ module.exports = {
34
+ getReports
35
+ };
@@ -0,0 +1,9 @@
1
+ const requireAuth = (req, res, next) => {
2
+ if (!req.session || !req.session.user) {
3
+ return res.status(401).json({ message: "Please login first" });
4
+ }
5
+
6
+ next();
7
+ };
8
+
9
+ module.exports = requireAuth;
@@ -0,0 +1,52 @@
1
+ const mongoose = require("mongoose");
2
+
3
+ const employeeSchema = new mongoose.Schema(
4
+ {
5
+ employeeCode: {
6
+ type: String,
7
+ required: [true, "Employee code is required"],
8
+ unique: true,
9
+ trim: true
10
+ },
11
+ firstName: {
12
+ type: String,
13
+ required: [true, "First name is required"],
14
+ trim: true
15
+ },
16
+ lastName: {
17
+ type: String,
18
+ required: [true, "Last name is required"],
19
+ trim: true
20
+ },
21
+ department: {
22
+ type: String,
23
+ required: [true, "Department is required"],
24
+ trim: true
25
+ },
26
+ position: {
27
+ type: String,
28
+ required: [true, "Position is required"],
29
+ trim: true
30
+ },
31
+ baseSalary: {
32
+ type: Number,
33
+ required: [true, "Base salary is required"],
34
+ min: [0, "Salary cannot be negative"]
35
+ },
36
+ hireDate: {
37
+ type: Date,
38
+ required: [true, "Hire date is required"]
39
+ },
40
+ email: {
41
+ type: String,
42
+ trim: true
43
+ },
44
+ phone: {
45
+ type: String,
46
+ trim: true
47
+ }
48
+ },
49
+ { timestamps: true }
50
+ );
51
+
52
+ module.exports = mongoose.model("Employee", employeeSchema);
@@ -0,0 +1,50 @@
1
+ const mongoose = require("mongoose");
2
+
3
+ const payrollSchema = new mongoose.Schema(
4
+ {
5
+ employee: {
6
+ type: mongoose.Schema.Types.ObjectId,
7
+ ref: "Employee",
8
+ required: [true, "Employee is required"]
9
+ },
10
+ month: {
11
+ type: Number,
12
+ required: [true, "Month is required"],
13
+ min: 1,
14
+ max: 12
15
+ },
16
+ year: {
17
+ type: Number,
18
+ required: [true, "Year is required"]
19
+ },
20
+ basicPay: {
21
+ type: Number,
22
+ required: [true, "Basic pay is required"],
23
+ min: 0
24
+ },
25
+ allowances: {
26
+ type: Number,
27
+ default: 0,
28
+ min: 0
29
+ },
30
+ deductions: {
31
+ type: Number,
32
+ default: 0,
33
+ min: 0
34
+ },
35
+ netPay: {
36
+ type: Number,
37
+ required: [true, "Net pay is required"],
38
+ min: 0
39
+ },
40
+ paymentDate: {
41
+ type: Date,
42
+ default: Date.now
43
+ }
44
+ },
45
+ { timestamps: true }
46
+ );
47
+
48
+ payrollSchema.index({ employee: 1, month: 1, year: 1 }, { unique: true });
49
+
50
+ module.exports = mongoose.model("Payroll", payrollSchema);
@@ -0,0 +1,19 @@
1
+ const mongoose = require("mongoose");
2
+
3
+ const userSchema = new mongoose.Schema(
4
+ {
5
+ username: {
6
+ type: String,
7
+ required: [true, "Username is required"],
8
+ unique: true,
9
+ trim: true
10
+ },
11
+ password: {
12
+ type: String,
13
+ required: [true, "Password is required"]
14
+ }
15
+ },
16
+ { timestamps: true }
17
+ );
18
+
19
+ module.exports = mongoose.model("User", userSchema);