create-nodemin-app 1.0.16 → 1.0.18

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 (774) hide show
  1. package/bin/cli.js +59 -40
  2. package/package.json +1 -2
  3. package/templates/vrrs/README.md +161 -0
  4. package/templates/vrrs/backend/.env.example +4 -0
  5. package/templates/vrrs/backend/README.md +11 -0
  6. package/templates/vrrs/backend/config/db.js +33 -0
  7. package/templates/vrrs/backend/constants/employeeStatuses.js +7 -0
  8. package/templates/vrrs/backend/constants/statuses.js +4 -0
  9. package/templates/vrrs/backend/controllers/authController.js +32 -0
  10. package/templates/vrrs/backend/controllers/customerController.js +103 -0
  11. package/templates/vrrs/backend/controllers/reportController.js +88 -0
  12. package/templates/vrrs/backend/controllers/reservationController.js +142 -0
  13. package/templates/vrrs/backend/controllers/userController.js +83 -0
  14. package/templates/vrrs/backend/controllers/vehicleController.js +107 -0
  15. package/templates/vrrs/backend/middleware/auth.js +7 -0
  16. package/templates/vrrs/backend/middleware/requireAdmin.js +10 -0
  17. package/templates/vrrs/backend/middleware/requireRole.js +14 -0
  18. package/templates/vrrs/backend/models/Counter.js +8 -0
  19. package/templates/vrrs/backend/models/Customer.js +15 -0
  20. package/templates/vrrs/backend/models/ReservationRental.js +22 -0
  21. package/templates/vrrs/backend/models/User.js +14 -0
  22. package/templates/vrrs/backend/models/Vehicle.js +18 -0
  23. package/templates/vrrs/backend/package-lock.json +1546 -0
  24. package/templates/vrrs/backend/package.json +22 -0
  25. package/templates/vrrs/backend/routes/authRoutes.js +9 -0
  26. package/templates/vrrs/backend/routes/customerRoutes.js +11 -0
  27. package/templates/vrrs/backend/routes/reportRoutes.js +8 -0
  28. package/templates/vrrs/backend/routes/reservationRoutes.js +11 -0
  29. package/templates/vrrs/backend/routes/userRoutes.js +10 -0
  30. package/templates/vrrs/backend/routes/vehicleRoutes.js +11 -0
  31. package/templates/vrrs/backend/server.js +55 -0
  32. package/templates/vrrs/backend/utils/authUser.js +5 -0
  33. package/templates/vrrs/backend/utils/ids.js +6 -0
  34. package/templates/vrrs/frontend/index.html +12 -0
  35. package/templates/vrrs/frontend/package-lock.json +1634 -0
  36. package/templates/vrrs/frontend/package.json +23 -0
  37. package/templates/vrrs/frontend/public/favicon.svg +4 -0
  38. package/templates/vrrs/frontend/src/App.jsx +44 -0
  39. package/templates/vrrs/frontend/src/api/client.js +22 -0
  40. package/templates/vrrs/frontend/src/components/AppLayout.jsx +178 -0
  41. package/templates/vrrs/frontend/src/components/AuthShell.jsx +22 -0
  42. package/templates/vrrs/frontend/src/components/ui.jsx +378 -0
  43. package/templates/vrrs/frontend/src/constants/nav.js +13 -0
  44. package/templates/vrrs/frontend/src/constants/statuses.js +4 -0
  45. package/templates/vrrs/frontend/src/context/AuthContext.jsx +49 -0
  46. package/templates/vrrs/frontend/src/index.css +27 -0
  47. package/templates/vrrs/frontend/src/main.jsx +16 -0
  48. package/templates/vrrs/frontend/src/pages/CustomersPage.jsx +99 -0
  49. package/templates/vrrs/frontend/src/pages/LoginPage.jsx +46 -0
  50. package/templates/vrrs/frontend/src/pages/ReportsPage.jsx +127 -0
  51. package/templates/vrrs/frontend/src/pages/ReservationsPage.jsx +143 -0
  52. package/templates/vrrs/frontend/src/pages/UsersPage.jsx +86 -0
  53. package/templates/vrrs/frontend/src/pages/VehiclesPage.jsx +109 -0
  54. package/templates/vrrs/frontend/src/theme.js +27 -0
  55. package/templates/vrrs/frontend/vite.config.js +8 -0
  56. package/templates/vrrs-aline/README.md +161 -0
  57. package/templates/vrrs-aline/backend/.env.example +4 -0
  58. package/templates/vrrs-aline/backend/README.md +11 -0
  59. package/templates/vrrs-aline/backend/config/db.js +33 -0
  60. package/templates/vrrs-aline/backend/constants/employeeStatuses.js +7 -0
  61. package/templates/vrrs-aline/backend/constants/statuses.js +4 -0
  62. package/templates/vrrs-aline/backend/controllers/authController.js +32 -0
  63. package/templates/vrrs-aline/backend/controllers/customerController.js +103 -0
  64. package/templates/vrrs-aline/backend/controllers/reportController.js +82 -0
  65. package/templates/vrrs-aline/backend/controllers/reservationController.js +142 -0
  66. package/templates/vrrs-aline/backend/controllers/userController.js +83 -0
  67. package/templates/vrrs-aline/backend/controllers/vehicleController.js +107 -0
  68. package/templates/vrrs-aline/backend/middleware/auth.js +7 -0
  69. package/templates/vrrs-aline/backend/middleware/requireAdmin.js +10 -0
  70. package/templates/vrrs-aline/backend/middleware/requireRole.js +14 -0
  71. package/templates/vrrs-aline/backend/models/Counter.js +8 -0
  72. package/templates/vrrs-aline/backend/models/Customer.js +15 -0
  73. package/templates/vrrs-aline/backend/models/ReservationRental.js +22 -0
  74. package/templates/vrrs-aline/backend/models/User.js +14 -0
  75. package/templates/vrrs-aline/backend/models/Vehicle.js +18 -0
  76. package/templates/{HRMS_Mongodb → vrrs-aline}/backend/package-lock.json +1546 -1646
  77. package/templates/vrrs-aline/backend/package.json +22 -0
  78. package/templates/vrrs-aline/backend/routes/authRoutes.js +9 -0
  79. package/templates/vrrs-aline/backend/routes/customerRoutes.js +11 -0
  80. package/templates/vrrs-aline/backend/routes/reportRoutes.js +7 -0
  81. package/templates/vrrs-aline/backend/routes/reservationRoutes.js +11 -0
  82. package/templates/vrrs-aline/backend/routes/userRoutes.js +10 -0
  83. package/templates/vrrs-aline/backend/routes/vehicleRoutes.js +11 -0
  84. package/templates/vrrs-aline/backend/server.js +55 -0
  85. package/templates/vrrs-aline/backend/utils/authUser.js +5 -0
  86. package/templates/vrrs-aline/backend/utils/ids.js +6 -0
  87. package/templates/{HRMS_Mysql → vrrs-aline}/frontend/index.html +1 -2
  88. package/templates/vrrs-aline/frontend/package-lock.json +1634 -0
  89. package/templates/vrrs-aline/frontend/package.json +23 -0
  90. package/templates/vrrs-aline/frontend/public/favicon.svg +4 -0
  91. package/templates/vrrs-aline/frontend/src/App.jsx +44 -0
  92. package/templates/vrrs-aline/frontend/src/api/client.js +17 -0
  93. package/templates/vrrs-aline/frontend/src/components/AppLayout.jsx +178 -0
  94. package/templates/vrrs-aline/frontend/src/components/AuthShell.jsx +22 -0
  95. package/templates/vrrs-aline/frontend/src/components/ui.jsx +378 -0
  96. package/templates/vrrs-aline/frontend/src/constants/nav.js +13 -0
  97. package/templates/vrrs-aline/frontend/src/constants/statuses.js +4 -0
  98. package/templates/vrrs-aline/frontend/src/context/AuthContext.jsx +49 -0
  99. package/templates/vrrs-aline/frontend/src/index.css +36 -0
  100. package/templates/vrrs-aline/frontend/src/main.jsx +16 -0
  101. package/templates/vrrs-aline/frontend/src/pages/CustomersPage.jsx +99 -0
  102. package/templates/vrrs-aline/frontend/src/pages/LoginPage.jsx +46 -0
  103. package/templates/vrrs-aline/frontend/src/pages/ReportsPage.jsx +146 -0
  104. package/templates/vrrs-aline/frontend/src/pages/ReservationsPage.jsx +143 -0
  105. package/templates/vrrs-aline/frontend/src/pages/UsersPage.jsx +86 -0
  106. package/templates/vrrs-aline/frontend/src/pages/VehiclesPage.jsx +109 -0
  107. package/templates/vrrs-aline/frontend/src/theme.js +27 -0
  108. package/templates/vrrs-aline/frontend/vite.config.js +8 -0
  109. package/templates/vrrs-deby/README.md +161 -0
  110. package/templates/vrrs-deby/backend/.env.example +4 -0
  111. package/templates/vrrs-deby/backend/README.md +11 -0
  112. package/templates/vrrs-deby/backend/config/db.js +33 -0
  113. package/templates/vrrs-deby/backend/constants/employeeStatuses.js +7 -0
  114. package/templates/vrrs-deby/backend/constants/statuses.js +4 -0
  115. package/templates/vrrs-deby/backend/controllers/authController.js +32 -0
  116. package/templates/vrrs-deby/backend/controllers/customerController.js +103 -0
  117. package/templates/vrrs-deby/backend/controllers/reportController.js +82 -0
  118. package/templates/vrrs-deby/backend/controllers/reservationController.js +142 -0
  119. package/templates/vrrs-deby/backend/controllers/userController.js +83 -0
  120. package/templates/vrrs-deby/backend/controllers/vehicleController.js +107 -0
  121. package/templates/vrrs-deby/backend/middleware/auth.js +7 -0
  122. package/templates/vrrs-deby/backend/middleware/requireAdmin.js +10 -0
  123. package/templates/vrrs-deby/backend/middleware/requireRole.js +14 -0
  124. package/templates/vrrs-deby/backend/models/Counter.js +8 -0
  125. package/templates/vrrs-deby/backend/models/Customer.js +15 -0
  126. package/templates/vrrs-deby/backend/models/ReservationRental.js +22 -0
  127. package/templates/vrrs-deby/backend/models/User.js +14 -0
  128. package/templates/vrrs-deby/backend/models/Vehicle.js +18 -0
  129. package/templates/{HRMS_Mysql → vrrs-deby}/backend/package-lock.json +457 -525
  130. package/templates/vrrs-deby/backend/package.json +22 -0
  131. package/templates/vrrs-deby/backend/routes/authRoutes.js +9 -0
  132. package/templates/vrrs-deby/backend/routes/customerRoutes.js +11 -0
  133. package/templates/vrrs-deby/backend/routes/reportRoutes.js +7 -0
  134. package/templates/vrrs-deby/backend/routes/reservationRoutes.js +11 -0
  135. package/templates/vrrs-deby/backend/routes/userRoutes.js +10 -0
  136. package/templates/vrrs-deby/backend/routes/vehicleRoutes.js +11 -0
  137. package/templates/vrrs-deby/backend/server.js +55 -0
  138. package/templates/vrrs-deby/backend/utils/authUser.js +5 -0
  139. package/templates/vrrs-deby/backend/utils/ids.js +6 -0
  140. package/templates/vrrs-deby/frontend/index.html +12 -0
  141. package/templates/vrrs-deby/frontend/package-lock.json +1634 -0
  142. package/templates/vrrs-deby/frontend/package.json +23 -0
  143. package/templates/vrrs-deby/frontend/public/favicon.svg +4 -0
  144. package/templates/vrrs-deby/frontend/src/App.jsx +44 -0
  145. package/templates/vrrs-deby/frontend/src/api/client.js +17 -0
  146. package/templates/vrrs-deby/frontend/src/components/AppLayout.jsx +178 -0
  147. package/templates/vrrs-deby/frontend/src/components/AuthShell.jsx +22 -0
  148. package/templates/vrrs-deby/frontend/src/components/ui.jsx +378 -0
  149. package/templates/vrrs-deby/frontend/src/constants/nav.js +13 -0
  150. package/templates/vrrs-deby/frontend/src/constants/statuses.js +4 -0
  151. package/templates/vrrs-deby/frontend/src/context/AuthContext.jsx +49 -0
  152. package/templates/vrrs-deby/frontend/src/index.css +31 -0
  153. package/templates/vrrs-deby/frontend/src/main.jsx +16 -0
  154. package/templates/vrrs-deby/frontend/src/pages/CustomersPage.jsx +99 -0
  155. package/templates/vrrs-deby/frontend/src/pages/LoginPage.jsx +46 -0
  156. package/templates/vrrs-deby/frontend/src/pages/ReportsPage.jsx +146 -0
  157. package/templates/vrrs-deby/frontend/src/pages/ReservationsPage.jsx +143 -0
  158. package/templates/vrrs-deby/frontend/src/pages/UsersPage.jsx +86 -0
  159. package/templates/vrrs-deby/frontend/src/pages/VehiclesPage.jsx +109 -0
  160. package/templates/vrrs-deby/frontend/src/theme.js +27 -0
  161. package/templates/vrrs-deby/frontend/vite.config.js +8 -0
  162. package/templates/vrrs-divine/README.md +161 -0
  163. package/templates/vrrs-divine/backend/.env.example +4 -0
  164. package/templates/vrrs-divine/backend/README.md +11 -0
  165. package/templates/vrrs-divine/backend/config/db.js +33 -0
  166. package/templates/vrrs-divine/backend/constants/employeeStatuses.js +7 -0
  167. package/templates/vrrs-divine/backend/constants/statuses.js +4 -0
  168. package/templates/vrrs-divine/backend/controllers/authController.js +32 -0
  169. package/templates/vrrs-divine/backend/controllers/customerController.js +103 -0
  170. package/templates/vrrs-divine/backend/controllers/reportController.js +82 -0
  171. package/templates/vrrs-divine/backend/controllers/reservationController.js +142 -0
  172. package/templates/vrrs-divine/backend/controllers/userController.js +83 -0
  173. package/templates/vrrs-divine/backend/controllers/vehicleController.js +107 -0
  174. package/templates/vrrs-divine/backend/middleware/auth.js +7 -0
  175. package/templates/vrrs-divine/backend/middleware/requireAdmin.js +10 -0
  176. package/templates/vrrs-divine/backend/middleware/requireRole.js +14 -0
  177. package/templates/vrrs-divine/backend/models/Counter.js +8 -0
  178. package/templates/vrrs-divine/backend/models/Customer.js +15 -0
  179. package/templates/vrrs-divine/backend/models/ReservationRental.js +22 -0
  180. package/templates/vrrs-divine/backend/models/User.js +14 -0
  181. package/templates/vrrs-divine/backend/models/Vehicle.js +18 -0
  182. package/templates/vrrs-divine/backend/package-lock.json +1546 -0
  183. package/templates/vrrs-divine/backend/package.json +22 -0
  184. package/templates/vrrs-divine/backend/routes/authRoutes.js +9 -0
  185. package/templates/vrrs-divine/backend/routes/customerRoutes.js +11 -0
  186. package/templates/vrrs-divine/backend/routes/reportRoutes.js +7 -0
  187. package/templates/vrrs-divine/backend/routes/reservationRoutes.js +11 -0
  188. package/templates/vrrs-divine/backend/routes/userRoutes.js +10 -0
  189. package/templates/vrrs-divine/backend/routes/vehicleRoutes.js +11 -0
  190. package/templates/vrrs-divine/backend/server.js +55 -0
  191. package/templates/vrrs-divine/backend/utils/authUser.js +5 -0
  192. package/templates/vrrs-divine/backend/utils/ids.js +6 -0
  193. package/templates/vrrs-divine/frontend/index.html +12 -0
  194. package/templates/vrrs-divine/frontend/package-lock.json +1634 -0
  195. package/templates/vrrs-divine/frontend/package.json +23 -0
  196. package/templates/vrrs-divine/frontend/public/favicon.svg +4 -0
  197. package/templates/vrrs-divine/frontend/src/App.jsx +44 -0
  198. package/templates/vrrs-divine/frontend/src/api/client.js +17 -0
  199. package/templates/vrrs-divine/frontend/src/components/AppLayout.jsx +178 -0
  200. package/templates/vrrs-divine/frontend/src/components/AuthShell.jsx +22 -0
  201. package/templates/vrrs-divine/frontend/src/components/ui.jsx +378 -0
  202. package/templates/vrrs-divine/frontend/src/constants/nav.js +13 -0
  203. package/templates/vrrs-divine/frontend/src/constants/statuses.js +4 -0
  204. package/templates/vrrs-divine/frontend/src/context/AuthContext.jsx +49 -0
  205. package/templates/vrrs-divine/frontend/src/index.css +31 -0
  206. package/templates/vrrs-divine/frontend/src/main.jsx +16 -0
  207. package/templates/vrrs-divine/frontend/src/pages/CustomersPage.jsx +99 -0
  208. package/templates/vrrs-divine/frontend/src/pages/LoginPage.jsx +46 -0
  209. package/templates/vrrs-divine/frontend/src/pages/ReportsPage.jsx +146 -0
  210. package/templates/vrrs-divine/frontend/src/pages/ReservationsPage.jsx +143 -0
  211. package/templates/vrrs-divine/frontend/src/pages/UsersPage.jsx +86 -0
  212. package/templates/vrrs-divine/frontend/src/pages/VehiclesPage.jsx +109 -0
  213. package/templates/vrrs-divine/frontend/src/theme.js +27 -0
  214. package/templates/vrrs-divine/frontend/vite.config.js +8 -0
  215. package/templates/vrrs-huggy/README.md +161 -0
  216. package/templates/vrrs-huggy/backend/.env.example +4 -0
  217. package/templates/vrrs-huggy/backend/README.md +11 -0
  218. package/templates/vrrs-huggy/backend/config/db.js +33 -0
  219. package/templates/vrrs-huggy/backend/constants/employeeStatuses.js +7 -0
  220. package/templates/vrrs-huggy/backend/constants/statuses.js +4 -0
  221. package/templates/vrrs-huggy/backend/controllers/authController.js +32 -0
  222. package/templates/vrrs-huggy/backend/controllers/customerController.js +103 -0
  223. package/templates/vrrs-huggy/backend/controllers/reportController.js +82 -0
  224. package/templates/vrrs-huggy/backend/controllers/reservationController.js +142 -0
  225. package/templates/vrrs-huggy/backend/controllers/userController.js +83 -0
  226. package/templates/vrrs-huggy/backend/controllers/vehicleController.js +107 -0
  227. package/templates/vrrs-huggy/backend/middleware/auth.js +7 -0
  228. package/templates/vrrs-huggy/backend/middleware/requireAdmin.js +10 -0
  229. package/templates/vrrs-huggy/backend/middleware/requireRole.js +14 -0
  230. package/templates/vrrs-huggy/backend/models/Counter.js +8 -0
  231. package/templates/vrrs-huggy/backend/models/Customer.js +15 -0
  232. package/templates/vrrs-huggy/backend/models/ReservationRental.js +22 -0
  233. package/templates/vrrs-huggy/backend/models/User.js +14 -0
  234. package/templates/vrrs-huggy/backend/models/Vehicle.js +18 -0
  235. package/templates/vrrs-huggy/backend/package-lock.json +1546 -0
  236. package/templates/vrrs-huggy/backend/package.json +22 -0
  237. package/templates/vrrs-huggy/backend/routes/authRoutes.js +9 -0
  238. package/templates/vrrs-huggy/backend/routes/customerRoutes.js +11 -0
  239. package/templates/vrrs-huggy/backend/routes/reportRoutes.js +7 -0
  240. package/templates/vrrs-huggy/backend/routes/reservationRoutes.js +11 -0
  241. package/templates/vrrs-huggy/backend/routes/userRoutes.js +10 -0
  242. package/templates/vrrs-huggy/backend/routes/vehicleRoutes.js +11 -0
  243. package/templates/vrrs-huggy/backend/server.js +55 -0
  244. package/templates/vrrs-huggy/backend/utils/authUser.js +5 -0
  245. package/templates/vrrs-huggy/backend/utils/ids.js +6 -0
  246. package/templates/vrrs-huggy/frontend/index.html +12 -0
  247. package/templates/vrrs-huggy/frontend/package-lock.json +1634 -0
  248. package/templates/vrrs-huggy/frontend/package.json +23 -0
  249. package/templates/vrrs-huggy/frontend/public/favicon.svg +4 -0
  250. package/templates/vrrs-huggy/frontend/src/App.jsx +44 -0
  251. package/templates/vrrs-huggy/frontend/src/api/client.js +17 -0
  252. package/templates/vrrs-huggy/frontend/src/components/AppLayout.jsx +178 -0
  253. package/templates/vrrs-huggy/frontend/src/components/AuthShell.jsx +22 -0
  254. package/templates/vrrs-huggy/frontend/src/components/ui.jsx +378 -0
  255. package/templates/vrrs-huggy/frontend/src/constants/nav.js +13 -0
  256. package/templates/vrrs-huggy/frontend/src/constants/statuses.js +4 -0
  257. package/templates/vrrs-huggy/frontend/src/context/AuthContext.jsx +49 -0
  258. package/templates/vrrs-huggy/frontend/src/index.css +31 -0
  259. package/templates/vrrs-huggy/frontend/src/main.jsx +16 -0
  260. package/templates/vrrs-huggy/frontend/src/pages/CustomersPage.jsx +99 -0
  261. package/templates/vrrs-huggy/frontend/src/pages/LoginPage.jsx +46 -0
  262. package/templates/vrrs-huggy/frontend/src/pages/ReportsPage.jsx +146 -0
  263. package/templates/vrrs-huggy/frontend/src/pages/ReservationsPage.jsx +143 -0
  264. package/templates/vrrs-huggy/frontend/src/pages/UsersPage.jsx +86 -0
  265. package/templates/vrrs-huggy/frontend/src/pages/VehiclesPage.jsx +109 -0
  266. package/templates/vrrs-huggy/frontend/src/theme.js +27 -0
  267. package/templates/vrrs-huggy/frontend/vite.config.js +8 -0
  268. package/templates/vrrs-kelia/README.md +161 -0
  269. package/templates/vrrs-kelia/backend/.env.example +4 -0
  270. package/templates/vrrs-kelia/backend/README.md +11 -0
  271. package/templates/vrrs-kelia/backend/config/db.js +33 -0
  272. package/templates/vrrs-kelia/backend/constants/employeeStatuses.js +7 -0
  273. package/templates/vrrs-kelia/backend/constants/statuses.js +4 -0
  274. package/templates/vrrs-kelia/backend/controllers/authController.js +32 -0
  275. package/templates/vrrs-kelia/backend/controllers/customerController.js +103 -0
  276. package/templates/vrrs-kelia/backend/controllers/reportController.js +82 -0
  277. package/templates/vrrs-kelia/backend/controllers/reservationController.js +142 -0
  278. package/templates/vrrs-kelia/backend/controllers/userController.js +83 -0
  279. package/templates/vrrs-kelia/backend/controllers/vehicleController.js +107 -0
  280. package/templates/vrrs-kelia/backend/middleware/auth.js +7 -0
  281. package/templates/vrrs-kelia/backend/middleware/requireAdmin.js +10 -0
  282. package/templates/vrrs-kelia/backend/middleware/requireRole.js +14 -0
  283. package/templates/vrrs-kelia/backend/models/Counter.js +8 -0
  284. package/templates/vrrs-kelia/backend/models/Customer.js +15 -0
  285. package/templates/vrrs-kelia/backend/models/ReservationRental.js +22 -0
  286. package/templates/vrrs-kelia/backend/models/User.js +14 -0
  287. package/templates/vrrs-kelia/backend/models/Vehicle.js +18 -0
  288. package/templates/vrrs-kelia/backend/package-lock.json +1546 -0
  289. package/templates/vrrs-kelia/backend/package.json +22 -0
  290. package/templates/vrrs-kelia/backend/routes/authRoutes.js +9 -0
  291. package/templates/vrrs-kelia/backend/routes/customerRoutes.js +11 -0
  292. package/templates/vrrs-kelia/backend/routes/reportRoutes.js +7 -0
  293. package/templates/vrrs-kelia/backend/routes/reservationRoutes.js +11 -0
  294. package/templates/vrrs-kelia/backend/routes/userRoutes.js +10 -0
  295. package/templates/vrrs-kelia/backend/routes/vehicleRoutes.js +11 -0
  296. package/templates/vrrs-kelia/backend/server.js +55 -0
  297. package/templates/vrrs-kelia/backend/utils/authUser.js +5 -0
  298. package/templates/vrrs-kelia/backend/utils/ids.js +6 -0
  299. package/templates/vrrs-kelia/frontend/index.html +12 -0
  300. package/templates/vrrs-kelia/frontend/package-lock.json +1634 -0
  301. package/templates/vrrs-kelia/frontend/package.json +23 -0
  302. package/templates/vrrs-kelia/frontend/public/favicon.svg +4 -0
  303. package/templates/vrrs-kelia/frontend/src/App.jsx +44 -0
  304. package/templates/vrrs-kelia/frontend/src/api/client.js +17 -0
  305. package/templates/vrrs-kelia/frontend/src/components/AppLayout.jsx +178 -0
  306. package/templates/vrrs-kelia/frontend/src/components/AuthShell.jsx +22 -0
  307. package/templates/vrrs-kelia/frontend/src/components/ui.jsx +378 -0
  308. package/templates/vrrs-kelia/frontend/src/constants/nav.js +13 -0
  309. package/templates/vrrs-kelia/frontend/src/constants/statuses.js +4 -0
  310. package/templates/vrrs-kelia/frontend/src/context/AuthContext.jsx +49 -0
  311. package/templates/vrrs-kelia/frontend/src/index.css +31 -0
  312. package/templates/vrrs-kelia/frontend/src/main.jsx +16 -0
  313. package/templates/vrrs-kelia/frontend/src/pages/CustomersPage.jsx +99 -0
  314. package/templates/vrrs-kelia/frontend/src/pages/LoginPage.jsx +46 -0
  315. package/templates/vrrs-kelia/frontend/src/pages/ReportsPage.jsx +146 -0
  316. package/templates/vrrs-kelia/frontend/src/pages/ReservationsPage.jsx +143 -0
  317. package/templates/vrrs-kelia/frontend/src/pages/UsersPage.jsx +86 -0
  318. package/templates/vrrs-kelia/frontend/src/pages/VehiclesPage.jsx +109 -0
  319. package/templates/vrrs-kelia/frontend/src/theme.js +27 -0
  320. package/templates/vrrs-kelia/frontend/vite.config.js +8 -0
  321. package/templates/vrrs-kevine/README.md +161 -0
  322. package/templates/vrrs-kevine/backend/.env.example +4 -0
  323. package/templates/vrrs-kevine/backend/README.md +11 -0
  324. package/templates/vrrs-kevine/backend/config/db.js +33 -0
  325. package/templates/vrrs-kevine/backend/constants/employeeStatuses.js +7 -0
  326. package/templates/vrrs-kevine/backend/constants/statuses.js +4 -0
  327. package/templates/vrrs-kevine/backend/controllers/authController.js +32 -0
  328. package/templates/vrrs-kevine/backend/controllers/customerController.js +103 -0
  329. package/templates/vrrs-kevine/backend/controllers/reportController.js +82 -0
  330. package/templates/vrrs-kevine/backend/controllers/reservationController.js +142 -0
  331. package/templates/vrrs-kevine/backend/controllers/userController.js +83 -0
  332. package/templates/vrrs-kevine/backend/controllers/vehicleController.js +107 -0
  333. package/templates/vrrs-kevine/backend/middleware/auth.js +7 -0
  334. package/templates/vrrs-kevine/backend/middleware/requireAdmin.js +10 -0
  335. package/templates/vrrs-kevine/backend/middleware/requireRole.js +14 -0
  336. package/templates/vrrs-kevine/backend/models/Counter.js +8 -0
  337. package/templates/vrrs-kevine/backend/models/Customer.js +15 -0
  338. package/templates/vrrs-kevine/backend/models/ReservationRental.js +22 -0
  339. package/templates/vrrs-kevine/backend/models/User.js +14 -0
  340. package/templates/vrrs-kevine/backend/models/Vehicle.js +18 -0
  341. package/templates/vrrs-kevine/backend/package-lock.json +1546 -0
  342. package/templates/vrrs-kevine/backend/package.json +22 -0
  343. package/templates/vrrs-kevine/backend/routes/authRoutes.js +9 -0
  344. package/templates/vrrs-kevine/backend/routes/customerRoutes.js +11 -0
  345. package/templates/vrrs-kevine/backend/routes/reportRoutes.js +7 -0
  346. package/templates/vrrs-kevine/backend/routes/reservationRoutes.js +11 -0
  347. package/templates/vrrs-kevine/backend/routes/userRoutes.js +10 -0
  348. package/templates/vrrs-kevine/backend/routes/vehicleRoutes.js +11 -0
  349. package/templates/vrrs-kevine/backend/server.js +55 -0
  350. package/templates/vrrs-kevine/backend/utils/authUser.js +5 -0
  351. package/templates/vrrs-kevine/backend/utils/ids.js +6 -0
  352. package/templates/vrrs-kevine/frontend/index.html +12 -0
  353. package/templates/vrrs-kevine/frontend/package-lock.json +1634 -0
  354. package/templates/vrrs-kevine/frontend/package.json +23 -0
  355. package/templates/vrrs-kevine/frontend/public/favicon.svg +4 -0
  356. package/templates/vrrs-kevine/frontend/src/App.jsx +44 -0
  357. package/templates/vrrs-kevine/frontend/src/api/client.js +17 -0
  358. package/templates/vrrs-kevine/frontend/src/components/AppLayout.jsx +178 -0
  359. package/templates/vrrs-kevine/frontend/src/components/AuthShell.jsx +22 -0
  360. package/templates/vrrs-kevine/frontend/src/components/ui.jsx +378 -0
  361. package/templates/vrrs-kevine/frontend/src/constants/nav.js +13 -0
  362. package/templates/vrrs-kevine/frontend/src/constants/statuses.js +4 -0
  363. package/templates/vrrs-kevine/frontend/src/context/AuthContext.jsx +49 -0
  364. package/templates/vrrs-kevine/frontend/src/index.css +31 -0
  365. package/templates/vrrs-kevine/frontend/src/main.jsx +16 -0
  366. package/templates/vrrs-kevine/frontend/src/pages/CustomersPage.jsx +99 -0
  367. package/templates/vrrs-kevine/frontend/src/pages/LoginPage.jsx +46 -0
  368. package/templates/vrrs-kevine/frontend/src/pages/ReportsPage.jsx +146 -0
  369. package/templates/vrrs-kevine/frontend/src/pages/ReservationsPage.jsx +143 -0
  370. package/templates/vrrs-kevine/frontend/src/pages/UsersPage.jsx +86 -0
  371. package/templates/vrrs-kevine/frontend/src/pages/VehiclesPage.jsx +109 -0
  372. package/templates/vrrs-kevine/frontend/src/theme.js +27 -0
  373. package/templates/vrrs-kevine/frontend/vite.config.js +8 -0
  374. package/templates/vrrs-mbarush/README.md +161 -0
  375. package/templates/vrrs-mbarush/backend/.env.example +4 -0
  376. package/templates/vrrs-mbarush/backend/README.md +11 -0
  377. package/templates/vrrs-mbarush/backend/config/db.js +33 -0
  378. package/templates/vrrs-mbarush/backend/constants/employeeStatuses.js +7 -0
  379. package/templates/vrrs-mbarush/backend/constants/statuses.js +4 -0
  380. package/templates/vrrs-mbarush/backend/controllers/authController.js +32 -0
  381. package/templates/vrrs-mbarush/backend/controllers/customerController.js +103 -0
  382. package/templates/vrrs-mbarush/backend/controllers/reportController.js +82 -0
  383. package/templates/vrrs-mbarush/backend/controllers/reservationController.js +142 -0
  384. package/templates/vrrs-mbarush/backend/controllers/userController.js +83 -0
  385. package/templates/vrrs-mbarush/backend/controllers/vehicleController.js +107 -0
  386. package/templates/vrrs-mbarush/backend/middleware/auth.js +7 -0
  387. package/templates/vrrs-mbarush/backend/middleware/requireAdmin.js +10 -0
  388. package/templates/vrrs-mbarush/backend/middleware/requireRole.js +14 -0
  389. package/templates/vrrs-mbarush/backend/models/Counter.js +8 -0
  390. package/templates/vrrs-mbarush/backend/models/Customer.js +15 -0
  391. package/templates/vrrs-mbarush/backend/models/ReservationRental.js +22 -0
  392. package/templates/vrrs-mbarush/backend/models/User.js +14 -0
  393. package/templates/vrrs-mbarush/backend/models/Vehicle.js +18 -0
  394. package/templates/vrrs-mbarush/backend/package-lock.json +1546 -0
  395. package/templates/vrrs-mbarush/backend/package.json +22 -0
  396. package/templates/vrrs-mbarush/backend/routes/authRoutes.js +9 -0
  397. package/templates/vrrs-mbarush/backend/routes/customerRoutes.js +11 -0
  398. package/templates/vrrs-mbarush/backend/routes/reportRoutes.js +7 -0
  399. package/templates/vrrs-mbarush/backend/routes/reservationRoutes.js +11 -0
  400. package/templates/vrrs-mbarush/backend/routes/userRoutes.js +10 -0
  401. package/templates/vrrs-mbarush/backend/routes/vehicleRoutes.js +11 -0
  402. package/templates/vrrs-mbarush/backend/server.js +55 -0
  403. package/templates/vrrs-mbarush/backend/utils/authUser.js +5 -0
  404. package/templates/vrrs-mbarush/backend/utils/ids.js +6 -0
  405. package/templates/vrrs-mbarush/frontend/index.html +12 -0
  406. package/templates/vrrs-mbarush/frontend/package-lock.json +1634 -0
  407. package/templates/vrrs-mbarush/frontend/package.json +23 -0
  408. package/templates/vrrs-mbarush/frontend/public/favicon.svg +4 -0
  409. package/templates/vrrs-mbarush/frontend/src/App.jsx +44 -0
  410. package/templates/vrrs-mbarush/frontend/src/api/client.js +17 -0
  411. package/templates/vrrs-mbarush/frontend/src/components/AppLayout.jsx +178 -0
  412. package/templates/vrrs-mbarush/frontend/src/components/AuthShell.jsx +22 -0
  413. package/templates/vrrs-mbarush/frontend/src/components/ui.jsx +378 -0
  414. package/templates/vrrs-mbarush/frontend/src/constants/nav.js +13 -0
  415. package/templates/vrrs-mbarush/frontend/src/constants/statuses.js +4 -0
  416. package/templates/vrrs-mbarush/frontend/src/context/AuthContext.jsx +49 -0
  417. package/templates/vrrs-mbarush/frontend/src/index.css +31 -0
  418. package/templates/vrrs-mbarush/frontend/src/main.jsx +16 -0
  419. package/templates/vrrs-mbarush/frontend/src/pages/CustomersPage.jsx +99 -0
  420. package/templates/vrrs-mbarush/frontend/src/pages/LoginPage.jsx +46 -0
  421. package/templates/vrrs-mbarush/frontend/src/pages/ReportsPage.jsx +146 -0
  422. package/templates/vrrs-mbarush/frontend/src/pages/ReservationsPage.jsx +143 -0
  423. package/templates/vrrs-mbarush/frontend/src/pages/UsersPage.jsx +86 -0
  424. package/templates/vrrs-mbarush/frontend/src/pages/VehiclesPage.jsx +109 -0
  425. package/templates/vrrs-mbarush/frontend/src/theme.js +27 -0
  426. package/templates/vrrs-mbarush/frontend/vite.config.js +8 -0
  427. package/templates/vrrs-orne/README.md +161 -0
  428. package/templates/vrrs-orne/backend/.env.example +4 -0
  429. package/templates/vrrs-orne/backend/README.md +11 -0
  430. package/templates/vrrs-orne/backend/config/db.js +33 -0
  431. package/templates/vrrs-orne/backend/constants/employeeStatuses.js +7 -0
  432. package/templates/vrrs-orne/backend/constants/statuses.js +4 -0
  433. package/templates/vrrs-orne/backend/controllers/authController.js +32 -0
  434. package/templates/vrrs-orne/backend/controllers/customerController.js +103 -0
  435. package/templates/vrrs-orne/backend/controllers/reportController.js +82 -0
  436. package/templates/vrrs-orne/backend/controllers/reservationController.js +142 -0
  437. package/templates/vrrs-orne/backend/controllers/userController.js +83 -0
  438. package/templates/vrrs-orne/backend/controllers/vehicleController.js +107 -0
  439. package/templates/vrrs-orne/backend/middleware/auth.js +7 -0
  440. package/templates/vrrs-orne/backend/middleware/requireAdmin.js +10 -0
  441. package/templates/vrrs-orne/backend/middleware/requireRole.js +14 -0
  442. package/templates/vrrs-orne/backend/models/Counter.js +8 -0
  443. package/templates/vrrs-orne/backend/models/Customer.js +15 -0
  444. package/templates/vrrs-orne/backend/models/ReservationRental.js +22 -0
  445. package/templates/vrrs-orne/backend/models/User.js +14 -0
  446. package/templates/vrrs-orne/backend/models/Vehicle.js +18 -0
  447. package/templates/vrrs-orne/backend/package-lock.json +1546 -0
  448. package/templates/vrrs-orne/backend/package.json +22 -0
  449. package/templates/vrrs-orne/backend/routes/authRoutes.js +9 -0
  450. package/templates/vrrs-orne/backend/routes/customerRoutes.js +11 -0
  451. package/templates/vrrs-orne/backend/routes/reportRoutes.js +7 -0
  452. package/templates/vrrs-orne/backend/routes/reservationRoutes.js +11 -0
  453. package/templates/vrrs-orne/backend/routes/userRoutes.js +10 -0
  454. package/templates/vrrs-orne/backend/routes/vehicleRoutes.js +11 -0
  455. package/templates/vrrs-orne/backend/server.js +55 -0
  456. package/templates/vrrs-orne/backend/utils/authUser.js +5 -0
  457. package/templates/vrrs-orne/backend/utils/ids.js +6 -0
  458. package/templates/vrrs-orne/frontend/index.html +12 -0
  459. package/templates/vrrs-orne/frontend/package-lock.json +1634 -0
  460. package/templates/vrrs-orne/frontend/package.json +23 -0
  461. package/templates/vrrs-orne/frontend/public/favicon.svg +4 -0
  462. package/templates/vrrs-orne/frontend/src/App.jsx +44 -0
  463. package/templates/vrrs-orne/frontend/src/api/client.js +17 -0
  464. package/templates/vrrs-orne/frontend/src/components/AppLayout.jsx +178 -0
  465. package/templates/vrrs-orne/frontend/src/components/AuthShell.jsx +22 -0
  466. package/templates/vrrs-orne/frontend/src/components/ui.jsx +378 -0
  467. package/templates/vrrs-orne/frontend/src/constants/nav.js +13 -0
  468. package/templates/vrrs-orne/frontend/src/constants/statuses.js +4 -0
  469. package/templates/vrrs-orne/frontend/src/context/AuthContext.jsx +49 -0
  470. package/templates/vrrs-orne/frontend/src/index.css +31 -0
  471. package/templates/vrrs-orne/frontend/src/main.jsx +16 -0
  472. package/templates/vrrs-orne/frontend/src/pages/CustomersPage.jsx +99 -0
  473. package/templates/vrrs-orne/frontend/src/pages/LoginPage.jsx +46 -0
  474. package/templates/vrrs-orne/frontend/src/pages/ReportsPage.jsx +146 -0
  475. package/templates/vrrs-orne/frontend/src/pages/ReservationsPage.jsx +143 -0
  476. package/templates/vrrs-orne/frontend/src/pages/UsersPage.jsx +86 -0
  477. package/templates/vrrs-orne/frontend/src/pages/VehiclesPage.jsx +109 -0
  478. package/templates/vrrs-orne/frontend/src/theme.js +27 -0
  479. package/templates/vrrs-orne/frontend/vite.config.js +8 -0
  480. package/templates/vrrs-pri/README.md +161 -0
  481. package/templates/vrrs-pri/backend/.env.example +4 -0
  482. package/templates/vrrs-pri/backend/README.md +11 -0
  483. package/templates/vrrs-pri/backend/config/db.js +33 -0
  484. package/templates/vrrs-pri/backend/constants/employeeStatuses.js +7 -0
  485. package/templates/vrrs-pri/backend/constants/statuses.js +4 -0
  486. package/templates/vrrs-pri/backend/controllers/authController.js +32 -0
  487. package/templates/vrrs-pri/backend/controllers/customerController.js +103 -0
  488. package/templates/vrrs-pri/backend/controllers/reportController.js +82 -0
  489. package/templates/vrrs-pri/backend/controllers/reservationController.js +142 -0
  490. package/templates/vrrs-pri/backend/controllers/userController.js +83 -0
  491. package/templates/vrrs-pri/backend/controllers/vehicleController.js +107 -0
  492. package/templates/vrrs-pri/backend/middleware/auth.js +7 -0
  493. package/templates/vrrs-pri/backend/middleware/requireAdmin.js +10 -0
  494. package/templates/vrrs-pri/backend/middleware/requireRole.js +14 -0
  495. package/templates/vrrs-pri/backend/models/Counter.js +8 -0
  496. package/templates/vrrs-pri/backend/models/Customer.js +15 -0
  497. package/templates/vrrs-pri/backend/models/ReservationRental.js +22 -0
  498. package/templates/vrrs-pri/backend/models/User.js +14 -0
  499. package/templates/vrrs-pri/backend/models/Vehicle.js +18 -0
  500. package/templates/vrrs-pri/backend/package-lock.json +1546 -0
  501. package/templates/vrrs-pri/backend/package.json +22 -0
  502. package/templates/vrrs-pri/backend/routes/authRoutes.js +9 -0
  503. package/templates/vrrs-pri/backend/routes/customerRoutes.js +11 -0
  504. package/templates/vrrs-pri/backend/routes/reportRoutes.js +7 -0
  505. package/templates/vrrs-pri/backend/routes/reservationRoutes.js +11 -0
  506. package/templates/vrrs-pri/backend/routes/userRoutes.js +10 -0
  507. package/templates/vrrs-pri/backend/routes/vehicleRoutes.js +11 -0
  508. package/templates/vrrs-pri/backend/server.js +55 -0
  509. package/templates/vrrs-pri/backend/utils/authUser.js +5 -0
  510. package/templates/vrrs-pri/backend/utils/ids.js +6 -0
  511. package/templates/vrrs-pri/frontend/index.html +12 -0
  512. package/templates/vrrs-pri/frontend/package-lock.json +1634 -0
  513. package/templates/vrrs-pri/frontend/package.json +23 -0
  514. package/templates/vrrs-pri/frontend/public/favicon.svg +4 -0
  515. package/templates/vrrs-pri/frontend/src/App.jsx +44 -0
  516. package/templates/vrrs-pri/frontend/src/api/client.js +17 -0
  517. package/templates/vrrs-pri/frontend/src/components/AppLayout.jsx +178 -0
  518. package/templates/vrrs-pri/frontend/src/components/AuthShell.jsx +22 -0
  519. package/templates/vrrs-pri/frontend/src/components/ui.jsx +378 -0
  520. package/templates/vrrs-pri/frontend/src/constants/nav.js +13 -0
  521. package/templates/vrrs-pri/frontend/src/constants/statuses.js +4 -0
  522. package/templates/vrrs-pri/frontend/src/context/AuthContext.jsx +49 -0
  523. package/templates/vrrs-pri/frontend/src/index.css +31 -0
  524. package/templates/vrrs-pri/frontend/src/main.jsx +16 -0
  525. package/templates/vrrs-pri/frontend/src/pages/CustomersPage.jsx +99 -0
  526. package/templates/vrrs-pri/frontend/src/pages/LoginPage.jsx +46 -0
  527. package/templates/vrrs-pri/frontend/src/pages/ReportsPage.jsx +146 -0
  528. package/templates/vrrs-pri/frontend/src/pages/ReservationsPage.jsx +143 -0
  529. package/templates/vrrs-pri/frontend/src/pages/UsersPage.jsx +86 -0
  530. package/templates/vrrs-pri/frontend/src/pages/VehiclesPage.jsx +109 -0
  531. package/templates/vrrs-pri/frontend/src/theme.js +27 -0
  532. package/templates/vrrs-pri/frontend/vite.config.js +8 -0
  533. package/templates/vrrs-price/README.md +161 -0
  534. package/templates/vrrs-price/backend/.env.example +4 -0
  535. package/templates/vrrs-price/backend/README.md +11 -0
  536. package/templates/vrrs-price/backend/config/db.js +33 -0
  537. package/templates/vrrs-price/backend/constants/employeeStatuses.js +7 -0
  538. package/templates/vrrs-price/backend/constants/statuses.js +4 -0
  539. package/templates/vrrs-price/backend/controllers/authController.js +32 -0
  540. package/templates/vrrs-price/backend/controllers/customerController.js +103 -0
  541. package/templates/vrrs-price/backend/controllers/reportController.js +82 -0
  542. package/templates/vrrs-price/backend/controllers/reservationController.js +142 -0
  543. package/templates/vrrs-price/backend/controllers/userController.js +83 -0
  544. package/templates/vrrs-price/backend/controllers/vehicleController.js +107 -0
  545. package/templates/vrrs-price/backend/middleware/auth.js +7 -0
  546. package/templates/vrrs-price/backend/middleware/requireAdmin.js +10 -0
  547. package/templates/vrrs-price/backend/middleware/requireRole.js +14 -0
  548. package/templates/vrrs-price/backend/models/Counter.js +8 -0
  549. package/templates/vrrs-price/backend/models/Customer.js +15 -0
  550. package/templates/vrrs-price/backend/models/ReservationRental.js +22 -0
  551. package/templates/vrrs-price/backend/models/User.js +14 -0
  552. package/templates/vrrs-price/backend/models/Vehicle.js +18 -0
  553. package/templates/vrrs-price/backend/package-lock.json +1546 -0
  554. package/templates/vrrs-price/backend/package.json +22 -0
  555. package/templates/vrrs-price/backend/routes/authRoutes.js +9 -0
  556. package/templates/vrrs-price/backend/routes/customerRoutes.js +11 -0
  557. package/templates/vrrs-price/backend/routes/reportRoutes.js +7 -0
  558. package/templates/vrrs-price/backend/routes/reservationRoutes.js +11 -0
  559. package/templates/vrrs-price/backend/routes/userRoutes.js +10 -0
  560. package/templates/vrrs-price/backend/routes/vehicleRoutes.js +11 -0
  561. package/templates/vrrs-price/backend/server.js +55 -0
  562. package/templates/vrrs-price/backend/utils/authUser.js +5 -0
  563. package/templates/vrrs-price/backend/utils/ids.js +6 -0
  564. package/templates/vrrs-price/frontend/index.html +12 -0
  565. package/templates/vrrs-price/frontend/package-lock.json +1634 -0
  566. package/templates/vrrs-price/frontend/package.json +23 -0
  567. package/templates/vrrs-price/frontend/public/favicon.svg +4 -0
  568. package/templates/vrrs-price/frontend/src/App.jsx +44 -0
  569. package/templates/vrrs-price/frontend/src/api/client.js +17 -0
  570. package/templates/vrrs-price/frontend/src/components/AppLayout.jsx +178 -0
  571. package/templates/vrrs-price/frontend/src/components/AuthShell.jsx +22 -0
  572. package/templates/vrrs-price/frontend/src/components/ui.jsx +378 -0
  573. package/templates/vrrs-price/frontend/src/constants/nav.js +13 -0
  574. package/templates/vrrs-price/frontend/src/constants/statuses.js +4 -0
  575. package/templates/vrrs-price/frontend/src/context/AuthContext.jsx +49 -0
  576. package/templates/vrrs-price/frontend/src/index.css +31 -0
  577. package/templates/vrrs-price/frontend/src/main.jsx +16 -0
  578. package/templates/vrrs-price/frontend/src/pages/CustomersPage.jsx +99 -0
  579. package/templates/vrrs-price/frontend/src/pages/LoginPage.jsx +46 -0
  580. package/templates/vrrs-price/frontend/src/pages/ReportsPage.jsx +146 -0
  581. package/templates/vrrs-price/frontend/src/pages/ReservationsPage.jsx +143 -0
  582. package/templates/vrrs-price/frontend/src/pages/UsersPage.jsx +86 -0
  583. package/templates/vrrs-price/frontend/src/pages/VehiclesPage.jsx +109 -0
  584. package/templates/vrrs-price/frontend/src/theme.js +27 -0
  585. package/templates/vrrs-price/frontend/vite.config.js +8 -0
  586. package/templates/vrrs-schella/README.md +161 -0
  587. package/templates/vrrs-schella/backend/.env.example +4 -0
  588. package/templates/vrrs-schella/backend/README.md +11 -0
  589. package/templates/vrrs-schella/backend/config/db.js +33 -0
  590. package/templates/vrrs-schella/backend/constants/employeeStatuses.js +7 -0
  591. package/templates/vrrs-schella/backend/constants/statuses.js +4 -0
  592. package/templates/vrrs-schella/backend/controllers/authController.js +32 -0
  593. package/templates/vrrs-schella/backend/controllers/customerController.js +103 -0
  594. package/templates/vrrs-schella/backend/controllers/reportController.js +82 -0
  595. package/templates/vrrs-schella/backend/controllers/reservationController.js +142 -0
  596. package/templates/vrrs-schella/backend/controllers/userController.js +83 -0
  597. package/templates/vrrs-schella/backend/controllers/vehicleController.js +107 -0
  598. package/templates/vrrs-schella/backend/middleware/auth.js +7 -0
  599. package/templates/vrrs-schella/backend/middleware/requireAdmin.js +10 -0
  600. package/templates/vrrs-schella/backend/middleware/requireRole.js +14 -0
  601. package/templates/vrrs-schella/backend/models/Counter.js +8 -0
  602. package/templates/vrrs-schella/backend/models/Customer.js +15 -0
  603. package/templates/vrrs-schella/backend/models/ReservationRental.js +22 -0
  604. package/templates/vrrs-schella/backend/models/User.js +14 -0
  605. package/templates/vrrs-schella/backend/models/Vehicle.js +18 -0
  606. package/templates/vrrs-schella/backend/package-lock.json +1546 -0
  607. package/templates/vrrs-schella/backend/package.json +22 -0
  608. package/templates/vrrs-schella/backend/routes/authRoutes.js +9 -0
  609. package/templates/vrrs-schella/backend/routes/customerRoutes.js +11 -0
  610. package/templates/vrrs-schella/backend/routes/reportRoutes.js +7 -0
  611. package/templates/vrrs-schella/backend/routes/reservationRoutes.js +11 -0
  612. package/templates/vrrs-schella/backend/routes/userRoutes.js +10 -0
  613. package/templates/vrrs-schella/backend/routes/vehicleRoutes.js +11 -0
  614. package/templates/vrrs-schella/backend/server.js +55 -0
  615. package/templates/vrrs-schella/backend/utils/authUser.js +5 -0
  616. package/templates/vrrs-schella/backend/utils/ids.js +6 -0
  617. package/templates/vrrs-schella/frontend/index.html +12 -0
  618. package/templates/vrrs-schella/frontend/package-lock.json +1634 -0
  619. package/templates/vrrs-schella/frontend/package.json +23 -0
  620. package/templates/vrrs-schella/frontend/public/favicon.svg +4 -0
  621. package/templates/vrrs-schella/frontend/src/App.jsx +44 -0
  622. package/templates/vrrs-schella/frontend/src/api/client.js +17 -0
  623. package/templates/vrrs-schella/frontend/src/components/AppLayout.jsx +178 -0
  624. package/templates/vrrs-schella/frontend/src/components/AuthShell.jsx +22 -0
  625. package/templates/vrrs-schella/frontend/src/components/ui.jsx +378 -0
  626. package/templates/vrrs-schella/frontend/src/constants/nav.js +13 -0
  627. package/templates/vrrs-schella/frontend/src/constants/statuses.js +4 -0
  628. package/templates/vrrs-schella/frontend/src/context/AuthContext.jsx +49 -0
  629. package/templates/vrrs-schella/frontend/src/index.css +31 -0
  630. package/templates/vrrs-schella/frontend/src/main.jsx +16 -0
  631. package/templates/vrrs-schella/frontend/src/pages/CustomersPage.jsx +99 -0
  632. package/templates/vrrs-schella/frontend/src/pages/LoginPage.jsx +46 -0
  633. package/templates/vrrs-schella/frontend/src/pages/ReportsPage.jsx +146 -0
  634. package/templates/vrrs-schella/frontend/src/pages/ReservationsPage.jsx +143 -0
  635. package/templates/vrrs-schella/frontend/src/pages/UsersPage.jsx +86 -0
  636. package/templates/vrrs-schella/frontend/src/pages/VehiclesPage.jsx +109 -0
  637. package/templates/vrrs-schella/frontend/src/theme.js +27 -0
  638. package/templates/vrrs-schella/frontend/vite.config.js +8 -0
  639. package/templates/vrrs-trizzy/README.md +161 -0
  640. package/templates/vrrs-trizzy/backend/.env.example +4 -0
  641. package/templates/vrrs-trizzy/backend/README.md +11 -0
  642. package/templates/vrrs-trizzy/backend/config/db.js +33 -0
  643. package/templates/vrrs-trizzy/backend/constants/employeeStatuses.js +7 -0
  644. package/templates/vrrs-trizzy/backend/constants/statuses.js +4 -0
  645. package/templates/vrrs-trizzy/backend/controllers/authController.js +32 -0
  646. package/templates/vrrs-trizzy/backend/controllers/customerController.js +103 -0
  647. package/templates/vrrs-trizzy/backend/controllers/reportController.js +82 -0
  648. package/templates/vrrs-trizzy/backend/controllers/reservationController.js +142 -0
  649. package/templates/vrrs-trizzy/backend/controllers/userController.js +83 -0
  650. package/templates/vrrs-trizzy/backend/controllers/vehicleController.js +107 -0
  651. package/templates/vrrs-trizzy/backend/middleware/auth.js +7 -0
  652. package/templates/vrrs-trizzy/backend/middleware/requireAdmin.js +10 -0
  653. package/templates/vrrs-trizzy/backend/middleware/requireRole.js +14 -0
  654. package/templates/vrrs-trizzy/backend/models/Counter.js +8 -0
  655. package/templates/vrrs-trizzy/backend/models/Customer.js +15 -0
  656. package/templates/vrrs-trizzy/backend/models/ReservationRental.js +22 -0
  657. package/templates/vrrs-trizzy/backend/models/User.js +14 -0
  658. package/templates/vrrs-trizzy/backend/models/Vehicle.js +18 -0
  659. package/templates/vrrs-trizzy/backend/package-lock.json +1546 -0
  660. package/templates/vrrs-trizzy/backend/package.json +22 -0
  661. package/templates/vrrs-trizzy/backend/routes/authRoutes.js +9 -0
  662. package/templates/vrrs-trizzy/backend/routes/customerRoutes.js +11 -0
  663. package/templates/vrrs-trizzy/backend/routes/reportRoutes.js +7 -0
  664. package/templates/vrrs-trizzy/backend/routes/reservationRoutes.js +11 -0
  665. package/templates/vrrs-trizzy/backend/routes/userRoutes.js +10 -0
  666. package/templates/vrrs-trizzy/backend/routes/vehicleRoutes.js +11 -0
  667. package/templates/vrrs-trizzy/backend/server.js +55 -0
  668. package/templates/vrrs-trizzy/backend/utils/authUser.js +5 -0
  669. package/templates/vrrs-trizzy/backend/utils/ids.js +6 -0
  670. package/templates/vrrs-trizzy/frontend/index.html +12 -0
  671. package/templates/vrrs-trizzy/frontend/package-lock.json +1634 -0
  672. package/templates/vrrs-trizzy/frontend/package.json +23 -0
  673. package/templates/vrrs-trizzy/frontend/public/favicon.svg +4 -0
  674. package/templates/vrrs-trizzy/frontend/src/App.jsx +44 -0
  675. package/templates/vrrs-trizzy/frontend/src/api/client.js +17 -0
  676. package/templates/vrrs-trizzy/frontend/src/components/AppLayout.jsx +178 -0
  677. package/templates/vrrs-trizzy/frontend/src/components/AuthShell.jsx +22 -0
  678. package/templates/vrrs-trizzy/frontend/src/components/ui.jsx +378 -0
  679. package/templates/vrrs-trizzy/frontend/src/constants/nav.js +13 -0
  680. package/templates/vrrs-trizzy/frontend/src/constants/statuses.js +4 -0
  681. package/templates/vrrs-trizzy/frontend/src/context/AuthContext.jsx +49 -0
  682. package/templates/vrrs-trizzy/frontend/src/index.css +31 -0
  683. package/templates/vrrs-trizzy/frontend/src/main.jsx +16 -0
  684. package/templates/vrrs-trizzy/frontend/src/pages/CustomersPage.jsx +99 -0
  685. package/templates/vrrs-trizzy/frontend/src/pages/LoginPage.jsx +46 -0
  686. package/templates/vrrs-trizzy/frontend/src/pages/ReportsPage.jsx +146 -0
  687. package/templates/vrrs-trizzy/frontend/src/pages/ReservationsPage.jsx +143 -0
  688. package/templates/vrrs-trizzy/frontend/src/pages/UsersPage.jsx +86 -0
  689. package/templates/vrrs-trizzy/frontend/src/pages/VehiclesPage.jsx +109 -0
  690. package/templates/vrrs-trizzy/frontend/src/theme.js +27 -0
  691. package/templates/vrrs-trizzy/frontend/vite.config.js +8 -0
  692. package/templates/HRMS_Mongodb/README.md +0 -331
  693. package/templates/HRMS_Mongodb/backend/.env.example +0 -6
  694. package/templates/HRMS_Mongodb/backend/package.json +0 -26
  695. package/templates/HRMS_Mongodb/backend/src/config/db.js +0 -9
  696. package/templates/HRMS_Mongodb/backend/src/controllers/authController.js +0 -187
  697. package/templates/HRMS_Mongodb/backend/src/controllers/departmentController.js +0 -70
  698. package/templates/HRMS_Mongodb/backend/src/controllers/employeeController.js +0 -178
  699. package/templates/HRMS_Mongodb/backend/src/controllers/positionController.js +0 -66
  700. package/templates/HRMS_Mongodb/backend/src/middleware/auth.js +0 -57
  701. package/templates/HRMS_Mongodb/backend/src/middleware/errorHandler.js +0 -32
  702. package/templates/HRMS_Mongodb/backend/src/middleware/restrictToAdmin.js +0 -5
  703. package/templates/HRMS_Mongodb/backend/src/middleware/validate.js +0 -13
  704. package/templates/HRMS_Mongodb/backend/src/models/Department.js +0 -19
  705. package/templates/HRMS_Mongodb/backend/src/models/Employee.js +0 -81
  706. package/templates/HRMS_Mongodb/backend/src/models/Position.js +0 -19
  707. package/templates/HRMS_Mongodb/backend/src/models/User.js +0 -40
  708. package/templates/HRMS_Mongodb/backend/src/routes/authRoutes.js +0 -27
  709. package/templates/HRMS_Mongodb/backend/src/routes/departmentRoutes.js +0 -33
  710. package/templates/HRMS_Mongodb/backend/src/routes/employeeRoutes.js +0 -39
  711. package/templates/HRMS_Mongodb/backend/src/routes/positionRoutes.js +0 -32
  712. package/templates/HRMS_Mongodb/backend/src/server.js +0 -74
  713. package/templates/HRMS_Mongodb/backend/src/utils/roles.js +0 -5
  714. package/templates/HRMS_Mongodb/backend/src/utils/seed.js +0 -78
  715. package/templates/HRMS_Mongodb/backend/src/validators/authValidator.js +0 -61
  716. package/templates/HRMS_Mongodb/backend/src/validators/departmentValidator.js +0 -21
  717. package/templates/HRMS_Mongodb/backend/src/validators/employeeValidator.js +0 -27
  718. package/templates/HRMS_Mongodb/backend/src/validators/positionValidator.js +0 -26
  719. package/templates/HRMS_Mongodb/frontend/index.html +0 -19
  720. package/templates/HRMS_Mongodb/frontend/package-lock.json +0 -2812
  721. package/templates/HRMS_Mongodb/frontend/package.json +0 -25
  722. package/templates/HRMS_Mongodb/frontend/public/favicon.svg +0 -4
  723. package/templates/HRMS_Mongodb/frontend/src/App.jsx +0 -50
  724. package/templates/HRMS_Mongodb/frontend/src/api/axios.js +0 -54
  725. package/templates/HRMS_Mongodb/frontend/src/components/ProtectedRoute.jsx +0 -26
  726. package/templates/HRMS_Mongodb/frontend/src/components/layout/DashboardLayout.jsx +0 -16
  727. package/templates/HRMS_Mongodb/frontend/src/components/layout/Sidebar.jsx +0 -108
  728. package/templates/HRMS_Mongodb/frontend/src/components/ui/Button.jsx +0 -33
  729. package/templates/HRMS_Mongodb/frontend/src/components/ui/Input.jsx +0 -20
  730. package/templates/HRMS_Mongodb/frontend/src/components/ui/Modal.jsx +0 -48
  731. package/templates/HRMS_Mongodb/frontend/src/components/ui/Select.jsx +0 -27
  732. package/templates/HRMS_Mongodb/frontend/src/context/AuthContext.jsx +0 -97
  733. package/templates/HRMS_Mongodb/frontend/src/index.css +0 -34
  734. package/templates/HRMS_Mongodb/frontend/src/main.jsx +0 -16
  735. package/templates/HRMS_Mongodb/frontend/src/pages/Dashboard.jsx +0 -78
  736. package/templates/HRMS_Mongodb/frontend/src/pages/Departments.jsx +0 -144
  737. package/templates/HRMS_Mongodb/frontend/src/pages/Employees.jsx +0 -297
  738. package/templates/HRMS_Mongodb/frontend/src/pages/LeaveReport.jsx +0 -113
  739. package/templates/HRMS_Mongodb/frontend/src/pages/Login.jsx +0 -92
  740. package/templates/HRMS_Mongodb/frontend/src/pages/Positions.jsx +0 -157
  741. package/templates/HRMS_Mongodb/frontend/src/pages/Register.jsx +0 -93
  742. package/templates/HRMS_Mongodb/frontend/src/pages/ResetPassword.jsx +0 -135
  743. package/templates/HRMS_Mongodb/frontend/src/utils/roles.js +0 -1
  744. package/templates/HRMS_Mongodb/frontend/src/utils/session.js +0 -5
  745. package/templates/HRMS_Mongodb/frontend/src/utils/validation.js +0 -66
  746. package/templates/HRMS_Mongodb/frontend/vite.config.js +0 -16
  747. package/templates/HRMS_Mysql/backend/db.js +0 -13
  748. package/templates/HRMS_Mysql/backend/package.json +0 -21
  749. package/templates/HRMS_Mysql/backend/server.js +0 -421
  750. package/templates/HRMS_Mysql/frontend/dist/assets/index-CtLtQf3_.js +0 -75
  751. package/templates/HRMS_Mysql/frontend/dist/assets/index-Dq1AXlEY.css +0 -1
  752. package/templates/HRMS_Mysql/frontend/dist/index.html +0 -14
  753. package/templates/HRMS_Mysql/frontend/dist/vite.svg +0 -1
  754. package/templates/HRMS_Mysql/frontend/package-lock.json +0 -2978
  755. package/templates/HRMS_Mysql/frontend/package.json +0 -25
  756. package/templates/HRMS_Mysql/frontend/postcss.config.js +0 -6
  757. package/templates/HRMS_Mysql/frontend/public/vite.svg +0 -1
  758. package/templates/HRMS_Mysql/frontend/src/App.jsx +0 -55
  759. package/templates/HRMS_Mysql/frontend/src/api.js +0 -11
  760. package/templates/HRMS_Mysql/frontend/src/components/Layout.jsx +0 -59
  761. package/templates/HRMS_Mysql/frontend/src/index.css +0 -7
  762. package/templates/HRMS_Mysql/frontend/src/main.jsx +0 -13
  763. package/templates/HRMS_Mysql/frontend/src/pages/Dashboard.jsx +0 -45
  764. package/templates/HRMS_Mysql/frontend/src/pages/Departments.jsx +0 -108
  765. package/templates/HRMS_Mysql/frontend/src/pages/EmployeeStatusReport.jsx +0 -72
  766. package/templates/HRMS_Mysql/frontend/src/pages/Employees.jsx +0 -252
  767. package/templates/HRMS_Mysql/frontend/src/pages/ForgotPassword.jsx +0 -66
  768. package/templates/HRMS_Mysql/frontend/src/pages/Login.jsx +0 -79
  769. package/templates/HRMS_Mysql/frontend/src/pages/Positions.jsx +0 -109
  770. package/templates/HRMS_Mysql/frontend/src/pages/Register.jsx +0 -95
  771. package/templates/HRMS_Mysql/frontend/src/pages/Users.jsx +0 -133
  772. package/templates/HRMS_Mysql/frontend/tailwind.config.js +0 -26
  773. package/templates/HRMS_Mysql/frontend/vite.config.js +0 -15
  774. package/templates/HRMS_Mysql/hrms_schema.sql +0 -57
package/bin/cli.js CHANGED
@@ -5,77 +5,96 @@ const path = require("path");
5
5
  const readline = require("readline");
6
6
  const { execSync } = require("child_process");
7
7
 
8
- // Create interface
9
8
  const rl = readline.createInterface({
10
9
  input: process.stdin,
11
10
  output: process.stdout
12
11
  });
13
12
 
14
- console.log("\nSelect project to create:\n");
15
- console.log("1. HRMS_Mongdb(human resource Management System)");
16
- console.log("1. HRMS_Mysql(human resource Management System)");
13
+ const projects = {
14
+ "1": { template: "vrrs", project: "vrrs-app", title: "VRRS" },
15
+ "2": { template: "vrrs-aline", project: "vrrs-aline-app", title: "VRRS-ALINE" },
16
+ "3": { template: "vrrs-deby", project: "vrrs-deby-app", title: "VRRS-DEBY" },
17
+ "4": { template: "vrrs-divine", project: "vrrs-divine-app", title: "VRRS-DIVINE" },
18
+ "5": { template: "vrrs-huggy", project: "vrrs-huggy-app", title: "VRRS-HUGGY" },
19
+ "6": { template: "vrrs-kelia", project: "vrrs-kelia-app", title: "VRRS-KELIA" },
20
+ "7": { template: "vrrs-kevine", project: "vrrs-kevine-app", title: "VRRS-KEVINE" },
21
+ "8": { template: "vrrs-mbarush", project: "vrrs-mbarush-app", title: "VRRS-MBARUSH" },
22
+ "9": { template: "vrrs-orne", project: "vrrs-orne-app", title: "VRRS-ORNE" },
23
+ "10": { template: "vrrs-pri", project: "vrrs-pri-app", title: "VRRS-PRI" },
24
+ "11": { template: "vrrs-price", project: "vrrs-price-app", title: "VRRS-PRICE" },
25
+ "12": { template: "vrrs-schella", project: "vrrs-schella-app", title: "VRRS-SCHELLA" },
26
+ "13": { template: "vrrs-trizzy", project: "vrrs-trizzy-app", title: "VRRS-TRIZZY" }
27
+ };
28
+
29
+ console.log("\n======================================");
30
+ console.log(" SELECT PROJECT TO CREATE");
31
+ console.log("======================================\n");
32
+
33
+ Object.entries(projects).forEach(([key, value]) => {
34
+ console.log(`${key}. ${value.title}`);
35
+ });
17
36
 
37
+ console.log("");
18
38
 
19
- // Ask user
20
39
  rl.question("Enter your choice: ", (choice) => {
21
40
 
22
- let templateName = "";
23
- let projectName = "";
24
-
25
- switch (choice) {
26
- case "1":
27
- templateName = "HRMS_Mongodb";
28
- projectName = "hrms-app";
29
- break;
30
- case "2":
31
- templateName = "HRMS_Mysql";
32
- projectName = "hrms-app";
33
- break;
34
-
41
+ const selectedProject = projects[choice];
35
42
 
36
-
37
- default:
38
- console.log(" Invalid choice");
39
- rl.close();
40
- return;
43
+ if (!selectedProject) {
44
+ console.log("\n❌ Invalid choice!");
45
+ rl.close();
46
+ return;
41
47
  }
42
48
 
43
- const targetPath = path.join(process.cwd(), projectName);
44
- const templatePath = path.resolve(__dirname, "../templates", templateName);
49
+ const templatePath = path.resolve(
50
+ __dirname,
51
+ "../templates",
52
+ selectedProject.template
53
+ );
54
+
55
+ const targetPath = path.join(
56
+ process.cwd(),
57
+ selectedProject.project
58
+ );
45
59
 
46
60
  if (!fs.existsSync(templatePath)) {
47
- console.log(" Template not found:", templatePath);
61
+ console.log(`\n❌ Template not found: ${templatePath}`);
48
62
  rl.close();
49
63
  return;
50
64
  }
51
65
 
52
66
  if (fs.existsSync(targetPath)) {
53
- console.log(` Folder "${projectName}" already exists`);
67
+ console.log(`\n❌ Folder "${selectedProject.project}" already exists.`);
54
68
  rl.close();
55
69
  return;
56
70
  }
57
71
 
58
72
  try {
59
- // Create folder
73
+ console.log("\n📁 Creating project...\n");
74
+
60
75
  fs.mkdirSync(targetPath, { recursive: true });
61
76
 
62
- // Copy template
63
- fs.cpSync(templatePath, targetPath, { recursive: true });
77
+ fs.cpSync(templatePath, targetPath, {
78
+ recursive: true
79
+ });
80
+
81
+ console.log(`✅ ${selectedProject.title} created successfully!`);
82
+ console.log(`📍 Location: ${targetPath}`);
64
83
 
65
- console.log(`\n ${projectName} created successfully!`);
66
- console.log(" Location:", targetPath);
84
+ console.log("\n📦 Installing dependencies...\n");
67
85
 
68
- // Install dependencies (IMPORTANT for npx usability)
69
- console.log("\n Installing dependencies...\n");
70
- execSync(`cd ${targetPath} && npm install`, { stdio: "inherit" });
86
+ execSync("npm install", {
87
+ cwd: targetPath,
88
+ stdio: "inherit"
89
+ });
71
90
 
72
- console.log("\n Setup complete!");
73
- console.log(`\n Run your project:`);
74
- console.log(` cd ${projectName}`);
75
- console.log(` npm run dev\n`);
91
+ console.log("\n🎉 Setup complete!");
92
+ console.log("\nRun your project:");
93
+ console.log(`cd ${selectedProject.project}`);
94
+ console.log("npm run dev\n");
76
95
 
77
96
  } catch (error) {
78
- console.log(" Error:", error.message);
97
+ console.error("\n❌ Error:", error.message);
79
98
  }
80
99
 
81
100
  rl.close();
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
-
2
1
  {
3
2
  "name": "create-nodemin-app",
4
- "version": "1.0.16",
3
+ "version": "1.0.18",
5
4
  "description": "",
6
5
  "main": "index.js",
7
6
  "bin": {
@@ -0,0 +1,161 @@
1
+ # Vehicle Rental and Reservation Subsystem (VRRS)
2
+
3
+ Web application for **SwitchWheels Enterprise** (Huye) to manage customers, fleet vehicles, reservations/rentals, and reporting.
4
+
5
+ ## Stack
6
+
7
+ | Layer | Technology | Port |
8
+ |-------|------------|------|
9
+ | Frontend | React + Vite + Tailwind | **5180** |
10
+ | Backend | Express + Mongoose + express-session | **5560** |
11
+ | Database | MongoDB **VRRS** | — |
12
+
13
+ ## Quick start
14
+
15
+ ```bash
16
+ cd vrrs/backend && cp .env.example .env && npm install && npm run dev
17
+ cd vrrs/frontend && npm install && npm run dev
18
+ ```
19
+
20
+ Open http://localhost:5180 — login: `admin` / `admin123`
21
+
22
+ ## Features
23
+
24
+ | Feature | Implementation |
25
+ |---------|----------------|
26
+ | MongoDB database **VRRS** | `backend/config/db.js` |
27
+ | ERD with PK/FK | Below |
28
+ | Level 0 DFD | Below |
29
+ | CRUD + search | Customers, vehicles, reservations, users |
30
+ | Session login | Cookie `vrrs.sid`, `withCredentials` |
31
+ | Roles | admin, manager, staff |
32
+ | Report | `GET /api/reports/reservation-rental` |
33
+
34
+ ---
35
+
36
+ ## Entity Relationship Diagram (ERD)
37
+
38
+ ```mermaid
39
+ erDiagram
40
+ CUSTOMERS ||--o{ RESERVATION_RENTALS : "makes"
41
+ VEHICLES ||--o{ RESERVATION_RENTALS : "involves"
42
+ USERS ||--o{ RESERVATION_RENTALS : "records"
43
+
44
+ CUSTOMERS {
45
+ int customer_id PK
46
+ varchar full_name
47
+ varchar national_id UK
48
+ varchar phone
49
+ varchar email
50
+ varchar address
51
+ }
52
+
53
+ VEHICLES {
54
+ int vehicle_id PK
55
+ varchar plate_number UK
56
+ varchar brand
57
+ varchar model
58
+ int year
59
+ varchar vehicle_type
60
+ decimal purchase_price
61
+ enum status
62
+ }
63
+
64
+ RESERVATION_RENTALS {
65
+ int reservation_rental_id PK
66
+ date reservation_date
67
+ date start_date
68
+ date end_date
69
+ enum reservation_status
70
+ date rental_date
71
+ date return_date
72
+ decimal rental_fee
73
+ enum rental_status
74
+ int customer_id FK
75
+ int vehicle_id FK
76
+ int user_id FK
77
+ }
78
+
79
+ USERS {
80
+ int user_id PK
81
+ varchar user_name UK
82
+ varchar password
83
+ enum role
84
+ }
85
+ ```
86
+
87
+ ### Relationships
88
+
89
+ 1. **Customer (1) — (M) Reservation_Rental**
90
+ 2. **Vehicle (1) — (M) Reservation_Rental**
91
+ 3. **User (1) — (M) Reservation_Rental**
92
+
93
+ ---
94
+
95
+ ## Level 0 DFD
96
+
97
+ External entities: **Customer**, **User**, **Manager**
98
+
99
+ | Process | Data stores |
100
+ |---------|-------------|
101
+ | 1.0 Manage Customers | D1 Customers |
102
+ | 2.0 Manage Vehicles | D2 Vehicles |
103
+ | 3.0 Manage Reservation/Rental | D1, D2, D3 |
104
+ | 4.0 Generate Reports | D1, D2, D3 |
105
+ | 5.0 User Authentication | D4 Users |
106
+
107
+ ```mermaid
108
+ flowchart TB
109
+ Cust["Customer"]
110
+ User["User"]
111
+ Mgr["Manager"]
112
+ P1(("1.0 Manage Customers"))
113
+ P2(("2.0 Manage Vehicles"))
114
+ P3(("3.0 Manage Reservation/Rental"))
115
+ P4(("4.0 Generate Reports"))
116
+ P5(("5.0 Authentication"))
117
+ D1[("D1 Customers")]
118
+ D2[("D2 Vehicles")]
119
+ D3[("D3 Reservations")]
120
+ D4[("D4 Users")]
121
+ Rpt["Reservation Rental Report"]
122
+
123
+ Cust --> P1 --> D1
124
+ User --> P2 --> D2
125
+ User --> P3
126
+ P3 --> D1
127
+ P3 --> D2
128
+ P3 --> D3
129
+ User --> P5 --> D4
130
+ Mgr --> P4
131
+ D1 --> P4
132
+ D2 --> P4
133
+ D3 --> P4
134
+ P4 --> Rpt
135
+ ```
136
+
137
+ ---
138
+
139
+ ## API
140
+
141
+ | Method | Endpoint |
142
+ |--------|----------|
143
+ | POST | `/api/auth/login` |
144
+ | POST | `/api/auth/logout` |
145
+ | GET | `/api/auth/me` |
146
+ | CRUD | `/api/customers`, `/api/vehicles`, `/api/reservations` |
147
+ | GET | `*/search?q=` |
148
+ | CRUD | `/api/users` (admin) |
149
+ | GET | `/api/reports/reservation-rental` (manager/admin) — full report |
150
+ | GET | `/api/reports?startDate=&endDate=` (manager/admin) — report by date |
151
+
152
+ ---
153
+
154
+ ## Project structure
155
+
156
+ ```
157
+ vrrs/
158
+ ├── README.md
159
+ ├── backend/ ← MongoDB (database VRRS)
160
+ └── frontend/
161
+ ```
@@ -0,0 +1,4 @@
1
+ PORT=5560
2
+ SESSION_SECRET=change_me_in_production
3
+ FRONTEND_URL=http://localhost:5180
4
+ MONGO_URI=mongodb://localhost:27017/VRRS
@@ -0,0 +1,11 @@
1
+ # VRRS Backend
2
+
3
+ MongoDB database: **VRRS**
4
+
5
+ ```bash
6
+ cp .env.example .env
7
+ npm install
8
+ npm run dev
9
+ ```
10
+
11
+ Port **5560**. Session cookie: `vrrs.sid`. Seed login: `admin` / `admin123`.
@@ -0,0 +1,33 @@
1
+ import mongoose from "mongoose";
2
+ import dotenv from "dotenv";
3
+ import User from "../models/User.js";
4
+ import Counter from "../models/Counter.js";
5
+
6
+ dotenv.config();
7
+
8
+ const ADMIN_HASH = "$2b$10$aULsUjp9bb9lf5CZZyY.7./KhwsocVO0duyPlqu0Qnte75xHBdG5C";
9
+
10
+ export const connectDatabase = async () => {
11
+ try {
12
+ await mongoose.connect(process.env.MONGO_URI || "mongodb://localhost:27017/VRRS");
13
+ console.log("Database Connected Successfully");
14
+ if ((await User.countDocuments()) === 0) {
15
+ await User.create({ user_id: 1, user_name: "admin", password: ADMIN_HASH, role: "admin" });
16
+ await Counter.findOneAndUpdate({ name: "user_id" }, { seq: 1 }, { upsert: true });
17
+ }
18
+ for (const name of ["customer_id", "vehicle_id", "reservation_rental_id", "user_id"]) {
19
+ await Counter.findOneAndUpdate(
20
+ { name },
21
+ { $setOnInsert: { seq: name === "user_id" ? 1 : 0 } },
22
+ { upsert: true }
23
+ );
24
+ }
25
+ return true;
26
+ } catch (error) {
27
+ console.log("Database Connection Failed");
28
+ console.error(error.message);
29
+ return false;
30
+ }
31
+ };
32
+
33
+ export default mongoose;
@@ -0,0 +1,7 @@
1
+ export const EMPLOYEE_STATUSES = [
2
+ "On Leave",
3
+ "Left",
4
+ "Blacklisted",
5
+ "Deceased",
6
+ "On Mission",
7
+ ];
@@ -0,0 +1,4 @@
1
+ export const VEHICLE_STATUSES = ["Available", "Reserved", "Rented", "Maintenance", "Sold"];
2
+ export const RESERVATION_STATUSES = ["Pending", "Confirmed", "Cancelled", "Completed"];
3
+ export const RENTAL_STATUSES = ["Not Started", "Active", "Returned", "Overdue"];
4
+ export const USER_ROLES = ["admin", "manager", "staff"];
@@ -0,0 +1,32 @@
1
+ import bcrypt from "bcryptjs";
2
+ import User from "../models/User.js";
3
+ import { toAuthUser } from "../utils/authUser.js";
4
+
5
+ export const login = async (req, res) => {
6
+ try {
7
+ const { username, password } = req.body;
8
+ if (!username || !password) return res.status(400).json({ message: "Username and password are required." });
9
+ const user = await User.findOne({ user_name: username.trim() });
10
+ if (!user || !(await bcrypt.compare(password, user.password))) {
11
+ return res.status(401).json({ message: "Invalid credentials." });
12
+ }
13
+ const profile = toAuthUser(user);
14
+ req.session.user = profile;
15
+ return res.json({ message: "Login successful.", user: profile, auth: { session: true } });
16
+ } catch {
17
+ return res.status(500).json({ message: "Server error during login." });
18
+ }
19
+ };
20
+
21
+ export const logout = (req, res) => {
22
+ req.session.destroy((err) => {
23
+ if (err) return res.status(500).json({ message: "Could not end session." });
24
+ res.clearCookie("vrrs.sid");
25
+ return res.json({ message: "Logged out successfully." });
26
+ });
27
+ };
28
+
29
+ export const me = (req, res) => {
30
+ if (!req.session?.user) return res.status(401).json({ message: "Not authenticated." });
31
+ return res.json({ user: req.session.user });
32
+ };
@@ -0,0 +1,103 @@
1
+ import Customer from "../models/Customer.js";
2
+ import ReservationRental from "../models/ReservationRental.js";
3
+ import { nextId } from "../utils/ids.js";
4
+
5
+ const strip = (d) => {
6
+ const o = d.toObject ? d.toObject() : d;
7
+ const { _id, __v, ...r } = o;
8
+ return r;
9
+ };
10
+
11
+ export const create = async (req, res) => {
12
+ try {
13
+ const { fullName, nationalId, phone, email, address } = req.body;
14
+ if (!fullName?.trim() || !nationalId?.trim() || !phone?.trim() || !email?.trim() || !address?.trim()) {
15
+ return res.status(400).json({ message: "All customer fields are required." });
16
+ }
17
+ await Customer.create({
18
+ customer_id: await nextId("customer_id"),
19
+ full_name: fullName.trim(),
20
+ national_id: nationalId.trim(),
21
+ phone: phone.trim(),
22
+ email: email.trim(),
23
+ address: address.trim(),
24
+ });
25
+ return res.status(201).json({ message: "Customer added successfully." });
26
+ } catch (e) {
27
+ if (e.code === 11000) return res.status(409).json({ message: "National ID already exists." });
28
+ return res.status(500).json({ message: "Failed to add customer." });
29
+ }
30
+ };
31
+
32
+ export const getAll = async (_req, res) => {
33
+ try {
34
+ return res.json((await Customer.find().sort({ customer_id: -1 }).lean()).map(strip));
35
+ } catch {
36
+ return res.status(500).json({ message: "Failed to fetch customers." });
37
+ }
38
+ };
39
+
40
+ export const search = async (req, res) => {
41
+ try {
42
+ const q = (req.query.q || "").trim();
43
+ if (!q) return getAll(req, res);
44
+ const re = new RegExp(q, "i");
45
+ return res.json(
46
+ (
47
+ await Customer.find({
48
+ $or: [{ full_name: re }, { national_id: re }, { phone: re }, { email: re }],
49
+ })
50
+ .sort({ customer_id: -1 })
51
+ .lean()
52
+ ).map(strip)
53
+ );
54
+ } catch {
55
+ return res.status(500).json({ message: "Failed to search customers." });
56
+ }
57
+ };
58
+
59
+ export const getById = async (req, res) => {
60
+ try {
61
+ const doc = await Customer.findOne({ customer_id: Number(req.params.id) }).lean();
62
+ if (!doc) return res.status(404).json({ message: "Customer not found." });
63
+ return res.json(strip(doc));
64
+ } catch {
65
+ return res.status(500).json({ message: "Failed to fetch customer." });
66
+ }
67
+ };
68
+
69
+ export const update = async (req, res) => {
70
+ try {
71
+ const { fullName, nationalId, phone, email, address } = req.body;
72
+ const doc = await Customer.findOneAndUpdate(
73
+ { customer_id: Number(req.params.id) },
74
+ {
75
+ full_name: fullName?.trim(),
76
+ national_id: nationalId?.trim(),
77
+ phone: phone?.trim(),
78
+ email: email?.trim(),
79
+ address: address?.trim(),
80
+ },
81
+ { new: true }
82
+ );
83
+ if (!doc) return res.status(404).json({ message: "Customer not found." });
84
+ return res.json({ message: "Customer updated successfully." });
85
+ } catch (e) {
86
+ if (e.code === 11000) return res.status(409).json({ message: "National ID already exists." });
87
+ return res.status(500).json({ message: "Failed to update customer." });
88
+ }
89
+ };
90
+
91
+ export const remove = async (req, res) => {
92
+ try {
93
+ const id = Number(req.params.id);
94
+ if (await ReservationRental.findOne({ customer_id: id })) {
95
+ return res.status(409).json({ message: "Cannot delete: customer has reservations/rentals." });
96
+ }
97
+ const doc = await Customer.findOneAndDelete({ customer_id: id });
98
+ if (!doc) return res.status(404).json({ message: "Customer not found." });
99
+ return res.json({ message: "Customer deleted successfully." });
100
+ } catch {
101
+ return res.status(500).json({ message: "Failed to delete customer." });
102
+ }
103
+ };
@@ -0,0 +1,88 @@
1
+ import Customer from "../models/Customer.js";
2
+ import Vehicle from "../models/Vehicle.js";
3
+ import ReservationRental from "../models/ReservationRental.js";
4
+
5
+ const fmt = (d) => {
6
+ if (!d) return null;
7
+ const date = d instanceof Date ? d : new Date(d);
8
+ if (!Number.isNaN(date.getTime())) return date.toISOString().slice(0, 10);
9
+ const s = String(d);
10
+ return /^\d{4}-\d{2}-\d{2}/.test(s) ? s.slice(0, 10) : null;
11
+ };
12
+
13
+ const inRange = (dateStr, start, end) => {
14
+ if (!dateStr) return false;
15
+ const d = fmt(dateStr);
16
+ return d >= start && d <= end;
17
+ };
18
+
19
+ async function buildReportRows(filterFn = null) {
20
+ const rows = await ReservationRental.find().sort({ reservation_rental_id: -1 }).lean();
21
+ const customers = Object.fromEntries((await Customer.find().lean()).map((c) => [c.customer_id, c]));
22
+ const vehicles = Object.fromEntries((await Vehicle.find().lean()).map((v) => [v.vehicle_id, v]));
23
+ const filtered = filterFn ? rows.filter(filterFn) : rows;
24
+ return filtered.map((r) => {
25
+ const c = customers[r.customer_id] || {};
26
+ const v = vehicles[r.vehicle_id] || {};
27
+ return {
28
+ customer_full_name: c.full_name,
29
+ national_id: c.national_id,
30
+ phone_number: c.phone,
31
+ vehicle_plate_number: v.plate_number,
32
+ vehicle_brand: v.brand,
33
+ vehicle_model: v.model,
34
+ vehicle_year: v.year,
35
+ vehicle_type: v.vehicle_type,
36
+ reservation_date: fmt(r.reservation_date),
37
+ rental_start_date: fmt(r.start_date),
38
+ rental_end_date: fmt(r.end_date),
39
+ reservation_status: r.reservation_status,
40
+ rental_date: fmt(r.rental_date),
41
+ return_date: fmt(r.return_date),
42
+ rental_fee: r.rental_fee,
43
+ rental_status: r.rental_status,
44
+ reservation_rental_id: r.reservation_rental_id,
45
+ };
46
+ });
47
+ }
48
+
49
+ export const getReservationRentalReport = async (_req, res) => {
50
+ try {
51
+ const report = await buildReportRows();
52
+ return res.json({
53
+ reportTitle: "Customer Vehicle Reservation Rental Report",
54
+ company: "SwitchWheels Enterprise — Huye",
55
+ totalRecords: report.length,
56
+ rows: report,
57
+ });
58
+ } catch {
59
+ return res.status(500).json({ message: "Failed to generate report." });
60
+ }
61
+ };
62
+
63
+ export const getReportByDate = async (req, res) => {
64
+ try {
65
+ const { startDate, endDate } = req.query;
66
+ if (!startDate || !endDate) {
67
+ return res.status(400).json({ message: "Start date and end date are required." });
68
+ }
69
+ if (startDate > endDate) {
70
+ return res.status(400).json({ message: "Start date must be before or equal to end date." });
71
+ }
72
+
73
+ const report = await buildReportRows(
74
+ (r) => inRange(r.reservation_date, startDate, endDate) || inRange(r.start_date, startDate, endDate)
75
+ );
76
+
77
+ return res.json({
78
+ reportTitle: "Reservation & Rental Report by Date",
79
+ company: "SwitchWheels Enterprise — Huye",
80
+ startDate,
81
+ endDate,
82
+ totalRecords: report.length,
83
+ rows: report,
84
+ });
85
+ } catch {
86
+ return res.status(500).json({ message: "Failed to generate report." });
87
+ }
88
+ };