wad-lab 1.1.2 → 1.1.4

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 (256) hide show
  1. package/bin/index.js +104 -25
  2. package/package.json +1 -1
  3. package/templates/fullstack-springboot-vue/backend/pom.xml +42 -0
  4. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/CompanyApplication.java +11 -0
  5. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/controller/CompanyController.java +74 -0
  6. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/model/Department.java +51 -0
  7. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/model/Employee.java +73 -0
  8. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/repository/DepartmentRepository.java +12 -0
  9. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/repository/EmployeeRepository.java +12 -0
  10. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/service/CompanyService.java +60 -0
  11. package/templates/fullstack-springboot-vue/backend/src/main/resources/application.properties +4 -0
  12. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/index.html +12 -0
  13. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-basic}/package.json +6 -9
  14. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/src/App.vue +405 -0
  15. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-basic}/src/main.js +0 -2
  16. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/src/services/api.js +7 -0
  17. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/vite.config.js +9 -0
  18. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-interceptor}/index.html +2 -3
  19. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/package.json +20 -0
  20. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/App.vue +159 -0
  21. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/components/ToastNotification.vue +47 -0
  22. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/main.js +7 -0
  23. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/services/api.js +32 -0
  24. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/stores/toastStore.js +23 -0
  25. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/vite.config.js +6 -0
  26. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/index.html +12 -0
  27. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/package.json +20 -0
  28. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/App.vue +427 -0
  29. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/main.js +5 -0
  30. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/services/api.js +7 -0
  31. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/stores/companyStore.js +96 -0
  32. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/vite.config.js +9 -0
  33. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/index.html +12 -0
  34. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/package.json +20 -0
  35. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/App.vue +69 -0
  36. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/components/DepartmentSection.vue +152 -0
  37. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/components/EmployeeSection.vue +181 -0
  38. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/main.js +5 -0
  39. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/services/api.js +7 -0
  40. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/stores/companyStore.js +35 -0
  41. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/vite.config.js +6 -0
  42. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/index.html +12 -0
  43. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/package.json +19 -0
  44. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/App.vue +167 -0
  45. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/DepartmentForm.vue +98 -0
  46. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/DepartmentList.vue +91 -0
  47. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/EmployeeForm.vue +128 -0
  48. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/EmployeeList.vue +94 -0
  49. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/main.js +4 -0
  50. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/services/api.js +7 -0
  51. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/vite.config.js +9 -0
  52. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/index.html +12 -0
  53. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/package.json +20 -0
  54. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/App.vue +90 -0
  55. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/main.js +5 -0
  56. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/router/index.js +19 -0
  57. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/services/api.js +7 -0
  58. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/AddEmployeeView.vue +247 -0
  59. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/DepartmentView.vue +273 -0
  60. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/EmployeeView.vue +196 -0
  61. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/HomeDashboardView.vue +263 -0
  62. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/vite.config.js +6 -0
  63. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/index.html +12 -0
  64. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/package.json +20 -0
  65. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/App.vue +20 -0
  66. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/main.js +5 -0
  67. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/router/index.js +42 -0
  68. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/services/api.js +7 -0
  69. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/CompanyLayout.vue +75 -0
  70. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/CompanyOverview.vue +109 -0
  71. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/DepartmentListView.vue +231 -0
  72. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/EmployeeDetailView.vue +159 -0
  73. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/EmployeeListView.vue +295 -0
  74. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/vite.config.js +6 -0
  75. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/index.html +12 -0
  76. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/package.json +21 -0
  77. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/App.vue +92 -0
  78. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/main.js +9 -0
  79. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/router/index.js +17 -0
  80. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/services/api.js +7 -0
  81. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/stores/companyStore.js +70 -0
  82. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/DashboardView.vue +77 -0
  83. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/DepartmentView.vue +209 -0
  84. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/EmployeeView.vue +237 -0
  85. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/vite.config.js +6 -0
  86. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/index.html +12 -0
  87. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/package.json +21 -0
  88. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/App.vue +67 -0
  89. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/EntityForm.vue +101 -0
  90. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/EntityTable.vue +92 -0
  91. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/SummaryBadge.vue +43 -0
  92. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/main.js +9 -0
  93. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/router/index.js +29 -0
  94. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/services/api.js +29 -0
  95. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/stores/companyStore.js +84 -0
  96. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/ManageDepartmentsView.vue +64 -0
  97. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/ManageEmployeesView.vue +67 -0
  98. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/OverviewView.vue +38 -0
  99. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/vite.config.js +6 -0
  100. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/index.html +12 -0
  101. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/package.json +20 -0
  102. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/App.vue +59 -0
  103. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/components/DataCard.vue +53 -0
  104. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/components/EntryForm.vue +117 -0
  105. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/main.js +7 -0
  106. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/router/index.js +23 -0
  107. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/services/api.js +7 -0
  108. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/views/DepartmentPage.vue +77 -0
  109. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/views/EmployeePage.vue +116 -0
  110. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/vite.config.js +6 -0
  111. package/templates/springboot-2model-1controller-api/.mvn/wrapper/maven-wrapper.properties +3 -0
  112. package/templates/springboot-2model-1controller-api/mvnw +295 -0
  113. package/templates/springboot-2model-1controller-api/mvnw.cmd +189 -0
  114. package/templates/springboot-2model-1controller-api/pom.xml +42 -0
  115. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/CompanyApplication.java +11 -0
  116. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/controller/CompanyController.java +74 -0
  117. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/model/Department.java +51 -0
  118. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/model/Employee.java +73 -0
  119. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/repository/DepartmentRepository.java +12 -0
  120. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/repository/EmployeeRepository.java +12 -0
  121. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/service/CompanyService.java +60 -0
  122. package/templates/springboot-2model-1controller-api/src/main/resources/application.properties +4 -0
  123. package/templates/vue-axios-basic/index.html +12 -0
  124. package/templates/vue-axios-basic/package.json +19 -0
  125. package/templates/vue-axios-basic/src/App.vue +405 -0
  126. package/templates/vue-axios-basic/src/main.js +4 -0
  127. package/templates/vue-axios-basic/src/services/api.js +7 -0
  128. package/templates/vue-axios-basic/vite.config.js +9 -0
  129. package/templates/vue-axios-interceptor/index.html +12 -0
  130. package/templates/vue-axios-interceptor/package.json +20 -0
  131. package/templates/vue-axios-interceptor/src/App.vue +159 -0
  132. package/templates/vue-axios-interceptor/src/components/ToastNotification.vue +47 -0
  133. package/templates/vue-axios-interceptor/src/main.js +7 -0
  134. package/templates/vue-axios-interceptor/src/services/api.js +32 -0
  135. package/templates/vue-axios-interceptor/src/stores/toastStore.js +23 -0
  136. package/templates/vue-axios-interceptor/vite.config.js +6 -0
  137. package/templates/vue-axios-pinia/index.html +12 -0
  138. package/templates/vue-axios-pinia/package.json +20 -0
  139. package/templates/vue-axios-pinia/src/App.vue +427 -0
  140. package/templates/vue-axios-pinia/src/main.js +5 -0
  141. package/templates/vue-axios-pinia/src/services/api.js +7 -0
  142. package/templates/vue-axios-pinia/src/stores/companyStore.js +96 -0
  143. package/templates/vue-axios-pinia/vite.config.js +9 -0
  144. package/templates/vue-axios-pinia-props/index.html +12 -0
  145. package/templates/vue-axios-pinia-props/package.json +20 -0
  146. package/templates/vue-axios-pinia-props/src/App.vue +69 -0
  147. package/templates/vue-axios-pinia-props/src/components/DepartmentSection.vue +152 -0
  148. package/templates/vue-axios-pinia-props/src/components/EmployeeSection.vue +181 -0
  149. package/templates/vue-axios-pinia-props/src/main.js +5 -0
  150. package/templates/vue-axios-pinia-props/src/services/api.js +7 -0
  151. package/templates/vue-axios-pinia-props/src/stores/companyStore.js +35 -0
  152. package/templates/vue-axios-pinia-props/vite.config.js +6 -0
  153. package/templates/vue-axios-props-emits/index.html +12 -0
  154. package/templates/vue-axios-props-emits/package.json +19 -0
  155. package/templates/vue-axios-props-emits/src/App.vue +167 -0
  156. package/templates/vue-axios-props-emits/src/components/DepartmentForm.vue +98 -0
  157. package/templates/vue-axios-props-emits/src/components/DepartmentList.vue +91 -0
  158. package/templates/vue-axios-props-emits/src/components/EmployeeForm.vue +128 -0
  159. package/templates/vue-axios-props-emits/src/components/EmployeeList.vue +94 -0
  160. package/templates/vue-axios-props-emits/src/main.js +4 -0
  161. package/templates/vue-axios-props-emits/src/services/api.js +7 -0
  162. package/templates/vue-axios-props-emits/vite.config.js +9 -0
  163. package/templates/vue-axios-router/index.html +12 -0
  164. package/templates/vue-axios-router/package.json +20 -0
  165. package/templates/vue-axios-router/src/App.vue +90 -0
  166. package/templates/vue-axios-router/src/main.js +5 -0
  167. package/templates/vue-axios-router/src/router/index.js +19 -0
  168. package/templates/vue-axios-router/src/services/api.js +7 -0
  169. package/templates/vue-axios-router/src/views/AddEmployeeView.vue +247 -0
  170. package/templates/vue-axios-router/src/views/DepartmentView.vue +273 -0
  171. package/templates/vue-axios-router/src/views/EmployeeView.vue +196 -0
  172. package/templates/vue-axios-router/src/views/HomeDashboardView.vue +263 -0
  173. package/templates/vue-axios-router/vite.config.js +6 -0
  174. package/templates/vue-axios-router-children/index.html +12 -0
  175. package/templates/vue-axios-router-children/package.json +20 -0
  176. package/templates/vue-axios-router-children/src/App.vue +20 -0
  177. package/templates/vue-axios-router-children/src/main.js +5 -0
  178. package/templates/vue-axios-router-children/src/router/index.js +42 -0
  179. package/templates/vue-axios-router-children/src/services/api.js +7 -0
  180. package/templates/vue-axios-router-children/src/views/CompanyLayout.vue +75 -0
  181. package/templates/vue-axios-router-children/src/views/CompanyOverview.vue +109 -0
  182. package/templates/vue-axios-router-children/src/views/DepartmentListView.vue +231 -0
  183. package/templates/vue-axios-router-children/src/views/EmployeeDetailView.vue +159 -0
  184. package/templates/vue-axios-router-children/src/views/EmployeeListView.vue +295 -0
  185. package/templates/vue-axios-router-children/vite.config.js +6 -0
  186. package/templates/vue-axios-router-pinia/index.html +12 -0
  187. package/templates/vue-axios-router-pinia/package.json +21 -0
  188. package/templates/vue-axios-router-pinia/src/App.vue +92 -0
  189. package/templates/vue-axios-router-pinia/src/main.js +9 -0
  190. package/templates/vue-axios-router-pinia/src/router/index.js +17 -0
  191. package/templates/vue-axios-router-pinia/src/services/api.js +7 -0
  192. package/templates/vue-axios-router-pinia/src/stores/companyStore.js +70 -0
  193. package/templates/vue-axios-router-pinia/src/views/DashboardView.vue +77 -0
  194. package/templates/vue-axios-router-pinia/src/views/DepartmentView.vue +209 -0
  195. package/templates/vue-axios-router-pinia/src/views/EmployeeView.vue +237 -0
  196. package/templates/vue-axios-router-pinia/vite.config.js +6 -0
  197. package/templates/vue-axios-router-pinia-props/index.html +12 -0
  198. package/templates/vue-axios-router-pinia-props/package.json +21 -0
  199. package/templates/vue-axios-router-pinia-props/src/App.vue +67 -0
  200. package/templates/vue-axios-router-pinia-props/src/components/EntityForm.vue +101 -0
  201. package/templates/vue-axios-router-pinia-props/src/components/EntityTable.vue +92 -0
  202. package/templates/vue-axios-router-pinia-props/src/components/SummaryBadge.vue +43 -0
  203. package/templates/vue-axios-router-pinia-props/src/main.js +9 -0
  204. package/templates/vue-axios-router-pinia-props/src/router/index.js +29 -0
  205. package/templates/vue-axios-router-pinia-props/src/services/api.js +29 -0
  206. package/templates/vue-axios-router-pinia-props/src/stores/companyStore.js +84 -0
  207. package/templates/vue-axios-router-pinia-props/src/views/ManageDepartmentsView.vue +64 -0
  208. package/templates/vue-axios-router-pinia-props/src/views/ManageEmployeesView.vue +67 -0
  209. package/templates/vue-axios-router-pinia-props/src/views/OverviewView.vue +38 -0
  210. package/templates/vue-axios-router-pinia-props/vite.config.js +6 -0
  211. package/templates/vue-axios-router-props/index.html +12 -0
  212. package/templates/vue-axios-router-props/package.json +20 -0
  213. package/templates/vue-axios-router-props/src/App.vue +59 -0
  214. package/templates/vue-axios-router-props/src/components/DataCard.vue +53 -0
  215. package/templates/vue-axios-router-props/src/components/EntryForm.vue +117 -0
  216. package/templates/vue-axios-router-props/src/main.js +7 -0
  217. package/templates/vue-axios-router-props/src/router/index.js +23 -0
  218. package/templates/vue-axios-router-props/src/services/api.js +7 -0
  219. package/templates/vue-axios-router-props/src/views/DepartmentPage.vue +77 -0
  220. package/templates/vue-axios-router-props/src/views/EmployeePage.vue +116 -0
  221. package/templates/vue-axios-router-props/vite.config.js +6 -0
  222. package/templates/backend/.gitattributes +0 -2
  223. package/templates/backend/.idea/compiler.xml +0 -21
  224. package/templates/backend/.idea/encodings.xml +0 -6
  225. package/templates/backend/.idea/jarRepositories.xml +0 -20
  226. package/templates/backend/.idea/misc.xml +0 -12
  227. package/templates/backend/.idea/vcs.xml +0 -6
  228. package/templates/backend/pom.xml +0 -104
  229. package/templates/backend/src/main/java/com/example/crud/CrudApplication.java +0 -13
  230. package/templates/backend/src/main/java/com/example/crud/controller/ItemController.java +0 -42
  231. package/templates/backend/src/main/java/com/example/crud/model/Item.java +0 -20
  232. package/templates/backend/src/main/java/com/example/crud/repository/ItemRepository.java +0 -9
  233. package/templates/backend/src/main/java/com/example/crud/service/ItemService.java +0 -37
  234. package/templates/backend/src/main/resources/application.properties +0 -4
  235. package/templates/backend/src/test/java/com/example/crud/CrudApplicationTests.java +0 -13
  236. package/templates/frontend/.vscode/extensions.json +0 -3
  237. package/templates/frontend/README.md +0 -38
  238. package/templates/frontend/jsconfig.json +0 -8
  239. package/templates/frontend/public/favicon.ico +0 -0
  240. package/templates/frontend/src/App.vue +0 -50
  241. package/templates/frontend/src/assets/base.css +0 -86
  242. package/templates/frontend/src/assets/logo.svg +0 -1
  243. package/templates/frontend/src/assets/main.css +0 -35
  244. package/templates/frontend/src/components/HelloWorld.vue +0 -44
  245. package/templates/frontend/src/components/TheWelcome.vue +0 -95
  246. package/templates/frontend/src/components/WelcomeItem.vue +0 -87
  247. package/templates/frontend/src/components/icons/IconCommunity.vue +0 -7
  248. package/templates/frontend/src/components/icons/IconDocumentation.vue +0 -7
  249. package/templates/frontend/src/components/icons/IconEcosystem.vue +0 -7
  250. package/templates/frontend/src/components/icons/IconSupport.vue +0 -7
  251. package/templates/frontend/src/components/icons/IconTooling.vue +0 -19
  252. package/templates/frontend/src/services/ItemService.js +0 -21
  253. package/templates/frontend/vite.config.js +0 -18
  254. /package/templates/{backend → fullstack-springboot-vue/backend}/.mvn/wrapper/maven-wrapper.properties +0 -0
  255. /package/templates/{backend → fullstack-springboot-vue/backend}/mvnw +0 -0
  256. /package/templates/{backend → fullstack-springboot-vue/backend}/mvnw.cmd +0 -0
package/bin/index.js CHANGED
@@ -27,8 +27,35 @@ function copyDirRecursive(src, dest) {
27
27
  }
28
28
  }
29
29
 
30
+ const frontendOptions = [
31
+ { name: 'all (Include all 10 Vue variants inside frontend/)', value: 'all' },
32
+ { name: 'vue-axios-basic (Vue 3 + Axios Direct CRUD)', value: 'vue-axios-basic' },
33
+ { name: 'vue-axios-props-emits (Vue 3 + Axios + Props & Emits)', value: 'vue-axios-props-emits' },
34
+ { name: 'vue-axios-router (Vue 3 + Axios + Router Views)', value: 'vue-axios-router' },
35
+ { name: 'vue-axios-pinia (Vue 3 + Axios + Pinia Centralized Store)', value: 'vue-axios-pinia' },
36
+ { name: 'vue-axios-router-props (Vue 3 + Axios + Router + Props/Emits)', value: 'vue-axios-router-props' },
37
+ { name: 'vue-axios-pinia-props (Vue 3 + Axios + Pinia + Props/Emits)', value: 'vue-axios-pinia-props' },
38
+ { name: 'vue-axios-router-pinia (Vue 3 + Axios + Router + Pinia)', value: 'vue-axios-router-pinia' },
39
+ { name: 'vue-axios-router-pinia-props (The Kitchen Sink — Router + Pinia + Props + Emits)', value: 'vue-axios-router-pinia-props' },
40
+ { name: 'vue-axios-router-children (Vue 3 + Axios + Router Nested Children)', value: 'vue-axios-router-children' },
41
+ { name: 'vue-axios-interceptor (Vue 3 + Axios Interceptors + Toast Alerts)', value: 'vue-axios-interceptor' }
42
+ ];
43
+
30
44
  const templates = [
31
- { name: 'all (Unpack All 42 Templates)', value: 'all' },
45
+ { name: 'all (Unpack All 54 Templates)', value: 'all' },
46
+ { name: 'servlet-voter-eligibility (Name & Age Voting Eligibility Check)', value: 'servlet-voter-eligibility' },
47
+ { name: 'fullstack-springboot-vue (Spring Boot Backend + Selectable Vue Frontend)', value: 'fullstack-springboot-vue' },
48
+ { name: 'springboot-2model-1controller-api (Spring Boot 1 Service, 1 Controller, 2 Models, 2 Repos)', value: 'springboot-2model-1controller-api' },
49
+ { name: 'vue-axios-basic (Vue 3 + Axios Direct CRUD)', value: 'vue-axios-basic' },
50
+ { name: 'vue-axios-props-emits (Vue 3 + Axios + Props & Emits)', value: 'vue-axios-props-emits' },
51
+ { name: 'vue-axios-router (Vue 3 + Axios + Router Views)', value: 'vue-axios-router' },
52
+ { name: 'vue-axios-pinia (Vue 3 + Axios + Pinia Centralized Store)', value: 'vue-axios-pinia' },
53
+ { name: 'vue-axios-router-props (Vue 3 + Axios + Router + Props/Emits)', value: 'vue-axios-router-props' },
54
+ { name: 'vue-axios-pinia-props (Vue 3 + Axios + Pinia + Props/Emits)', value: 'vue-axios-pinia-props' },
55
+ { name: 'vue-axios-router-pinia (Vue 3 + Axios + Router + Pinia)', value: 'vue-axios-router-pinia' },
56
+ { name: 'vue-axios-router-pinia-props (The Kitchen Sink — Router + Pinia + Props + Emits)', value: 'vue-axios-router-pinia-props' },
57
+ { name: 'vue-axios-router-children (Vue 3 + Axios + Router Nested Children)', value: 'vue-axios-router-children' },
58
+ { name: 'vue-axios-interceptor (Vue 3 + Axios Interceptors + Toast Alerts)', value: 'vue-axios-interceptor' },
32
59
  { name: 'vue-basics (ref, reactive, computed, v-model)', value: 'vue-basics' },
33
60
  { name: 'vue-props-emits (Parent/Child Component Communication)', value: 'vue-props-emits' },
34
61
  { name: 'vue-router (Parent Layout & Nested Children)', value: 'vue-router' },
@@ -45,7 +72,6 @@ const templates = [
45
72
  { name: 'servlet-jdbc (Tomcat + MySQL JDBC)', value: 'servlet-jdbc' },
46
73
  { name: 'servlet-flow (HelloServlet with GET/POST)', value: 'servlet-flow' },
47
74
  { name: 'servlet-session-tracking (HttpSession, Cookies, Redirect, URL Rewriting)', value: 'servlet-session-tracking' },
48
- { name: 'servlet-voter-eligibility (Name & Age Voting Eligibility Check)', value: 'servlet-voter-eligibility' },
49
75
  { name: 'springboot-mongo-crud (4-Layer REST API)', value: 'springboot-mongo-crud' },
50
76
  { name: 'springboot-mongo-aggregation ($group, $sum, $avg, $sort)', value: 'springboot-mongo-aggregation' },
51
77
  { name: 'springboot-mockmvc (Controller Tests)', value: 'springboot-mockmvc' },
@@ -103,37 +129,90 @@ function promptFolderName(choices) {
103
129
  process.stdin.setRawMode(false);
104
130
  }
105
131
 
106
- const isAll = choices.includes('all');
107
- const defaultFolder = isAll || choices.length > 1 ? 'wad-templates' : choices[0];
108
-
109
132
  const rl = readline.createInterface({
110
133
  input: process.stdin,
111
134
  output: process.stdout
112
135
  });
113
136
 
114
- console.log('\nSelected to unpack: ' + choices.join(', '));
115
- rl.question(`Enter destination folder name (default: "${defaultFolder}"): `, (answer) => {
116
- rl.close();
117
- const folder = answer.trim() || defaultFolder;
118
- const destDir = path.resolve(process.cwd(), folder);
119
-
120
- if (!fs.existsSync(destDir)) {
121
- fs.mkdirSync(destDir, { recursive: true });
137
+ function askFrontendIfRequired(done) {
138
+ if (choices.includes('fullstack-springboot-vue')) {
139
+ console.log('\n=== SELECT FRONTEND FOR FULLSTACK TEMPLATE ===');
140
+ frontendOptions.forEach((opt, idx) => {
141
+ console.log(` [${idx + 1}] ${opt.name}`);
142
+ });
143
+ rl.question('\nChoose frontend (1-11, default: 1 [all]): ', (ans) => {
144
+ const val = ans.trim();
145
+ let selectedFrontend = 'all';
146
+ const num = parseInt(val, 10);
147
+ if (!isNaN(num) && num >= 1 && num <= frontendOptions.length) {
148
+ selectedFrontend = frontendOptions[num - 1].value;
149
+ } else {
150
+ const directMatch = frontendOptions.find(f => f.value === val);
151
+ if (directMatch) {
152
+ selectedFrontend = directMatch.value;
153
+ }
154
+ }
155
+ done(selectedFrontend);
156
+ });
157
+ } else {
158
+ done(null);
122
159
  }
160
+ }
123
161
 
124
- if (isAll) {
125
- copyDirRecursive(templatesRoot, destDir);
126
- console.log('\nSuccessfully unpacked ALL templates into: ' + destDir);
127
- } else {
128
- choices.forEach(c => {
129
- const src = path.join(templatesRoot, c);
130
- const dest = path.join(destDir, c);
131
- copyDirRecursive(src, dest);
132
- console.log('Unpacked [' + c + '] into: ' + dest);
133
- });
134
- console.log('\nSuccessfully unpacked all chosen templates into: ' + destDir);
162
+ askFrontendIfRequired((selectedFrontend) => {
163
+ const isAll = choices.includes('all');
164
+ const defaultFolder = isAll || choices.length > 1 ? 'wad-templates' : choices[0];
165
+
166
+ console.log('\nSelected to unpack: ' + choices.join(', '));
167
+ if (selectedFrontend) {
168
+ console.log('Selected frontend variant: ' + selectedFrontend);
135
169
  }
136
- process.exit(0);
170
+
171
+ rl.question(`Enter destination folder name (default: "${defaultFolder}"): `, (answer) => {
172
+ rl.close();
173
+ const folder = answer.trim() || defaultFolder;
174
+ const destDir = path.resolve(process.cwd(), folder);
175
+
176
+ if (!fs.existsSync(destDir)) {
177
+ fs.mkdirSync(destDir, { recursive: true });
178
+ }
179
+
180
+ if (isAll) {
181
+ copyDirRecursive(templatesRoot, destDir);
182
+ console.log('\nSuccessfully unpacked ALL templates into: ' + destDir);
183
+ } else {
184
+ choices.forEach(c => {
185
+ if (c === 'fullstack-springboot-vue') {
186
+ const targetFullstack = choices.length === 1 ? destDir : path.join(destDir, c);
187
+ if (!fs.existsSync(targetFullstack)) {
188
+ fs.mkdirSync(targetFullstack, { recursive: true });
189
+ }
190
+ const backendSrc = path.join(templatesRoot, 'springboot-2model-1controller-api');
191
+ const backendDest = path.join(targetFullstack, 'backend');
192
+ copyDirRecursive(backendSrc, backendDest);
193
+ console.log('Unpacked [backend] (Spring Boot 2-Model API) into: ' + backendDest);
194
+
195
+ const frontendDest = path.join(targetFullstack, 'frontend');
196
+ if (selectedFrontend === 'all') {
197
+ const fullstackTemplateFrontendSrc = path.join(templatesRoot, 'fullstack-springboot-vue', 'frontend');
198
+ copyDirRecursive(fullstackTemplateFrontendSrc, frontendDest);
199
+ console.log('Unpacked [frontend] (All 10 Vue variants) into: ' + frontendDest);
200
+ } else {
201
+ const singleFrontendSrc = path.join(templatesRoot, selectedFrontend);
202
+ copyDirRecursive(singleFrontendSrc, frontendDest);
203
+ console.log('Unpacked [frontend] (' + selectedFrontend + ') into: ' + frontendDest);
204
+ }
205
+ } else {
206
+ const src = path.join(templatesRoot, c);
207
+ const dest = path.join(destDir, c);
208
+ copyDirRecursive(src, dest);
209
+ console.log('Unpacked [' + c + '] into: ' + dest);
210
+ }
211
+ });
212
+ console.log('\nSuccessfully unpacked all chosen templates into: ' + destDir);
213
+ }
214
+ process.exit(0);
215
+ });
137
216
  });
138
217
  }
139
218
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wad-lab",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "Interactive CLI for WAD Lab starter templates compatible with Node 12+",
5
5
  "bin": {
6
6
  "wad-lab": "./bin/index.js"
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+ <parent>
6
+ <groupId>org.springframework.boot</groupId>
7
+ <artifactId>spring-boot-starter-parent</artifactId>
8
+ <version>3.3.4</version>
9
+ <relativePath/>
10
+ </parent>
11
+ <groupId>com.example</groupId>
12
+ <artifactId>springboot-2model-1controller-api</artifactId>
13
+ <version>0.0.1-SNAPSHOT</version>
14
+ <name>springboot-2model-1controller-api</name>
15
+ <description>Demo project for Spring Boot with 2 models, 2 repositories, 1 service, 1 controller</description>
16
+ <properties>
17
+ <java.version>17</java.version>
18
+ </properties>
19
+ <dependencies>
20
+ <dependency>
21
+ <groupId>org.springframework.boot</groupId>
22
+ <artifactId>spring-boot-starter-data-mongodb</artifactId>
23
+ </dependency>
24
+ <dependency>
25
+ <groupId>org.springframework.boot</groupId>
26
+ <artifactId>spring-boot-starter-web</artifactId>
27
+ </dependency>
28
+ <dependency>
29
+ <groupId>org.springframework.boot</groupId>
30
+ <artifactId>spring-boot-starter-test</artifactId>
31
+ <scope>test</scope>
32
+ </dependency>
33
+ </dependencies>
34
+ <build>
35
+ <plugins>
36
+ <plugin>
37
+ <groupId>org.springframework.boot</groupId>
38
+ <artifactId>spring-boot-maven-plugin</artifactId>
39
+ </plugin>
40
+ </plugins>
41
+ </build>
42
+ </project>
@@ -0,0 +1,11 @@
1
+ package com.example.company;
2
+
3
+ import org.springframework.boot.SpringApplication;
4
+ import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+
6
+ @SpringBootApplication
7
+ public class CompanyApplication {
8
+ public static void main(String[] args) {
9
+ SpringApplication.run(CompanyApplication.class, args);
10
+ }
11
+ }
@@ -0,0 +1,74 @@
1
+ package com.example.company.controller;
2
+
3
+ import com.example.company.model.Department;
4
+ import com.example.company.model.Employee;
5
+ import com.example.company.service.CompanyService;
6
+ import org.springframework.beans.factory.annotation.Autowired;
7
+ import org.springframework.http.ResponseEntity;
8
+ import org.springframework.web.bind.annotation.*;
9
+
10
+ import java.util.List;
11
+
12
+ @RestController
13
+ @RequestMapping("/api")
14
+ @CrossOrigin(origins = "*")
15
+ public class CompanyController {
16
+
17
+ private final CompanyService companyService;
18
+
19
+ @Autowired
20
+ public CompanyController(CompanyService companyService) {
21
+ this.companyService = companyService;
22
+ }
23
+
24
+ @GetMapping("/departments")
25
+ public List<Department> getAllDepartments() {
26
+ return companyService.getAllDepartments();
27
+ }
28
+
29
+ @GetMapping("/departments/{id}")
30
+ public ResponseEntity<Department> getDepartmentById(@PathVariable String id) {
31
+ return companyService.getDepartmentById(id)
32
+ .map(ResponseEntity::ok)
33
+ .orElse(ResponseEntity.notFound().build());
34
+ }
35
+
36
+ @PostMapping("/departments")
37
+ public Department createDepartment(@RequestBody Department department) {
38
+ return companyService.createDepartment(department);
39
+ }
40
+
41
+ @DeleteMapping("/departments/{id}")
42
+ public ResponseEntity<Void> deleteDepartment(@PathVariable String id) {
43
+ companyService.deleteDepartment(id);
44
+ return ResponseEntity.noContent().build();
45
+ }
46
+
47
+ @GetMapping("/employees")
48
+ public List<Employee> getAllEmployees() {
49
+ return companyService.getAllEmployees();
50
+ }
51
+
52
+ @GetMapping("/employees/{id}")
53
+ public ResponseEntity<Employee> getEmployeeById(@PathVariable String id) {
54
+ return companyService.getEmployeeById(id)
55
+ .map(ResponseEntity::ok)
56
+ .orElse(ResponseEntity.notFound().build());
57
+ }
58
+
59
+ @GetMapping("/employees/dept/{deptId}")
60
+ public List<Employee> getEmployeesByDepartment(@PathVariable String deptId) {
61
+ return companyService.getEmployeesByDepartment(deptId);
62
+ }
63
+
64
+ @PostMapping("/employees")
65
+ public Employee createEmployee(@RequestBody Employee employee) {
66
+ return companyService.createEmployee(employee);
67
+ }
68
+
69
+ @DeleteMapping("/employees/{id}")
70
+ public ResponseEntity<Void> deleteEmployee(@PathVariable String id) {
71
+ companyService.deleteEmployee(id);
72
+ return ResponseEntity.noContent().build();
73
+ }
74
+ }
@@ -0,0 +1,51 @@
1
+ package com.example.company.model;
2
+
3
+ import org.springframework.data.annotation.Id;
4
+ import org.springframework.data.mongodb.core.mapping.Document;
5
+
6
+ @Document(collection = "departments")
7
+ public class Department {
8
+
9
+ @Id
10
+ private String id;
11
+ private String name;
12
+ private String code;
13
+
14
+ public Department() {
15
+ }
16
+
17
+ public Department(String name, String code) {
18
+ this.name = name;
19
+ this.code = code;
20
+ }
21
+
22
+ public Department(String id, String name, String code) {
23
+ this.id = id;
24
+ this.name = name;
25
+ this.code = code;
26
+ }
27
+
28
+ public String getId() {
29
+ return id;
30
+ }
31
+
32
+ public void setId(String id) {
33
+ this.id = id;
34
+ }
35
+
36
+ public String getName() {
37
+ return name;
38
+ }
39
+
40
+ public void setName(String name) {
41
+ this.name = name;
42
+ }
43
+
44
+ public String getCode() {
45
+ return code;
46
+ }
47
+
48
+ public void setCode(String code) {
49
+ this.code = code;
50
+ }
51
+ }
@@ -0,0 +1,73 @@
1
+ package com.example.company.model;
2
+
3
+ import org.springframework.data.annotation.Id;
4
+ import org.springframework.data.mongodb.core.mapping.Document;
5
+
6
+ @Document(collection = "employees")
7
+ public class Employee {
8
+
9
+ @Id
10
+ private String id;
11
+ private String name;
12
+ private String email;
13
+ private String departmentId;
14
+ private double salary;
15
+
16
+ public Employee() {
17
+ }
18
+
19
+ public Employee(String name, String email, String departmentId, double salary) {
20
+ this.name = name;
21
+ this.email = email;
22
+ this.departmentId = departmentId;
23
+ this.salary = salary;
24
+ }
25
+
26
+ public Employee(String id, String name, String email, String departmentId, double salary) {
27
+ this.id = id;
28
+ this.name = name;
29
+ this.email = email;
30
+ this.departmentId = departmentId;
31
+ this.salary = salary;
32
+ }
33
+
34
+ public String getId() {
35
+ return id;
36
+ }
37
+
38
+ public void setId(String id) {
39
+ this.id = id;
40
+ }
41
+
42
+ public String getName() {
43
+ return name;
44
+ }
45
+
46
+ public void setName(String name) {
47
+ this.name = name;
48
+ }
49
+
50
+ public String getEmail() {
51
+ return email;
52
+ }
53
+
54
+ public void setEmail(String email) {
55
+ this.email = email;
56
+ }
57
+
58
+ public String getDepartmentId() {
59
+ return departmentId;
60
+ }
61
+
62
+ public void setDepartmentId(String departmentId) {
63
+ this.departmentId = departmentId;
64
+ }
65
+
66
+ public double getSalary() {
67
+ return salary;
68
+ }
69
+
70
+ public void setSalary(double salary) {
71
+ this.salary = salary;
72
+ }
73
+ }
@@ -0,0 +1,12 @@
1
+ package com.example.company.repository;
2
+
3
+ import com.example.company.model.Department;
4
+ import org.springframework.data.mongodb.repository.MongoRepository;
5
+ import org.springframework.stereotype.Repository;
6
+
7
+ import java.util.Optional;
8
+
9
+ @Repository
10
+ public interface DepartmentRepository extends MongoRepository<Department, String> {
11
+ Optional<Department> findByCode(String code);
12
+ }
@@ -0,0 +1,12 @@
1
+ package com.example.company.repository;
2
+
3
+ import com.example.company.model.Employee;
4
+ import org.springframework.data.mongodb.repository.MongoRepository;
5
+ import org.springframework.stereotype.Repository;
6
+
7
+ import java.util.List;
8
+
9
+ @Repository
10
+ public interface EmployeeRepository extends MongoRepository<Employee, String> {
11
+ List<Employee> findByDepartmentId(String departmentId);
12
+ }
@@ -0,0 +1,60 @@
1
+ package com.example.company.service;
2
+
3
+ import com.example.company.model.Department;
4
+ import com.example.company.model.Employee;
5
+ import com.example.company.repository.DepartmentRepository;
6
+ import com.example.company.repository.EmployeeRepository;
7
+ import org.springframework.beans.factory.annotation.Autowired;
8
+ import org.springframework.stereotype.Service;
9
+
10
+ import java.util.List;
11
+ import java.util.Optional;
12
+
13
+ @Service
14
+ public class CompanyService {
15
+
16
+ private final DepartmentRepository departmentRepository;
17
+ private final EmployeeRepository employeeRepository;
18
+
19
+ @Autowired
20
+ public CompanyService(DepartmentRepository departmentRepository, EmployeeRepository employeeRepository) {
21
+ this.departmentRepository = departmentRepository;
22
+ this.employeeRepository = employeeRepository;
23
+ }
24
+
25
+ public List<Department> getAllDepartments() {
26
+ return departmentRepository.findAll();
27
+ }
28
+
29
+ public Optional<Department> getDepartmentById(String id) {
30
+ return departmentRepository.findById(id);
31
+ }
32
+
33
+ public Department createDepartment(Department department) {
34
+ return departmentRepository.save(department);
35
+ }
36
+
37
+ public void deleteDepartment(String id) {
38
+ departmentRepository.deleteById(id);
39
+ }
40
+
41
+ public List<Employee> getAllEmployees() {
42
+ return employeeRepository.findAll();
43
+ }
44
+
45
+ public Optional<Employee> getEmployeeById(String id) {
46
+ return employeeRepository.findById(id);
47
+ }
48
+
49
+ public List<Employee> getEmployeesByDepartment(String departmentId) {
50
+ return employeeRepository.findByDepartmentId(departmentId);
51
+ }
52
+
53
+ public Employee createEmployee(Employee employee) {
54
+ return employeeRepository.save(employee);
55
+ }
56
+
57
+ public void deleteEmployee(String id) {
58
+ employeeRepository.deleteById(id);
59
+ }
60
+ }
@@ -0,0 +1,4 @@
1
+ spring.application.name=springboot-2model-1controller-api
2
+ spring.data.mongodb.uri=mongodb://localhost:27017/company_db
3
+ spring.data.mongodb.database=company_db
4
+ server.port=8080
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Vue Axios Basic CRUD</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.js"></script>
11
+ </body>
12
+ </html>
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "crud-frontend",
3
- "version": "0.0.0",
2
+ "name": "vue-axios-basic",
4
3
  "private": true,
4
+ "version": "0.0.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -9,14 +9,11 @@
9
9
  "preview": "vite preview"
10
10
  },
11
11
  "dependencies": {
12
- "vue": "^3.5.42"
12
+ "axios": "^1.7.7",
13
+ "vue": "^3.5.44"
13
14
  },
14
15
  "devDependencies": {
15
- "@vitejs/plugin-vue": "^6.0.8",
16
- "vite": "^8.2.2",
17
- "vite-plugin-vue-devtools": "^8.2.1"
18
- },
19
- "engines": {
20
- "node": "^22.18.0 || >=24.12.0"
16
+ "@vitejs/plugin-vue": "^6.0.10",
17
+ "vite": "^8.3.4"
21
18
  }
22
19
  }