kybernus 1.0.1 → 1.1.0

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 (281) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +49 -263
  3. package/dist/cli/commands/init.d.ts.map +1 -1
  4. package/dist/cli/commands/init.js +5 -1
  5. package/dist/cli/commands/init.js.map +1 -1
  6. package/dist/cli/prompts/wizard.d.ts +14 -1
  7. package/dist/cli/prompts/wizard.d.ts.map +1 -1
  8. package/dist/cli/prompts/wizard.js +45 -9
  9. package/dist/cli/prompts/wizard.js.map +1 -1
  10. package/dist/core/generator/project.d.ts +8 -0
  11. package/dist/core/generator/project.d.ts.map +1 -1
  12. package/dist/core/generator/project.js +41 -2
  13. package/dist/core/generator/project.js.map +1 -1
  14. package/dist/core/templates/downloader.d.ts +32 -0
  15. package/dist/core/templates/downloader.d.ts.map +1 -0
  16. package/dist/core/templates/downloader.js +95 -0
  17. package/dist/core/templates/downloader.js.map +1 -0
  18. package/dist/models/config.d.ts +1 -0
  19. package/dist/models/config.d.ts.map +1 -1
  20. package/package.json +6 -2
  21. package/templates/java-spring/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  22. package/templates/java-spring/pro/clean/Dockerfile.hbs +0 -45
  23. package/templates/java-spring/pro/clean/README.md.hbs +0 -31
  24. package/templates/java-spring/pro/clean/docker-compose.yml.hbs +0 -18
  25. package/templates/java-spring/pro/clean/infra/main.tf.hbs +0 -83
  26. package/templates/java-spring/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  27. package/templates/java-spring/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  28. package/templates/java-spring/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  29. package/templates/java-spring/pro/clean/pom.xml.hbs +0 -130
  30. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +0 -36
  31. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +0 -77
  32. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +0 -15
  33. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +0 -36
  34. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +0 -46
  35. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +0 -41
  36. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +0 -53
  37. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +0 -41
  38. package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -14
  39. package/templates/java-spring/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  40. package/templates/java-spring/pro/hexagonal/Dockerfile.hbs +0 -45
  41. package/templates/java-spring/pro/hexagonal/README.md.hbs +0 -38
  42. package/templates/java-spring/pro/hexagonal/docker-compose.yml.hbs +0 -18
  43. package/templates/java-spring/pro/hexagonal/infra/main.tf.hbs +0 -83
  44. package/templates/java-spring/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  45. package/templates/java-spring/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  46. package/templates/java-spring/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  47. package/templates/java-spring/pro/hexagonal/pom.xml.hbs +0 -130
  48. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +0 -36
  49. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +0 -77
  50. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +0 -15
  51. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +0 -36
  52. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +0 -46
  53. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +0 -41
  54. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +0 -53
  55. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +0 -41
  56. package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -14
  57. package/templates/java-spring/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  58. package/templates/java-spring/pro/mvc/Dockerfile.hbs +0 -45
  59. package/templates/java-spring/pro/mvc/README.md.hbs +0 -116
  60. package/templates/java-spring/pro/mvc/docker-compose.yml.hbs +0 -18
  61. package/templates/java-spring/pro/mvc/infra/main.tf.hbs +0 -83
  62. package/templates/java-spring/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  63. package/templates/java-spring/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  64. package/templates/java-spring/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  65. package/templates/java-spring/pro/mvc/pom.xml.hbs +0 -130
  66. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/GlobalExceptionHandler.java.hbs +0 -39
  67. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/SecurityConfig.java.hbs +0 -44
  68. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/WebConfig.java.hbs +0 -30
  69. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/AuthController.java.hbs +0 -69
  70. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/HealthController.java.hbs +0 -30
  71. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/PaymentsController.java.hbs +0 -49
  72. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthRequest.java.hbs +0 -3
  73. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthResponse.java.hbs +0 -3
  74. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/model/.gitkeep +0 -0
  75. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/repository/.gitkeep +0 -0
  76. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtAuthenticationFilter.java.hbs +0 -56
  77. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtTokenProvider.java.hbs +0 -59
  78. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/.gitkeep +0 -0
  79. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/StripeService.java.hbs +0 -67
  80. package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -13
  81. package/templates/java-spring/pro/mvc/src/main/resources/application.yml.hbs +0 -32
  82. package/templates/java-spring/pro/mvc/src/test/java/{{packagePath}}/{{projectNamePascalCase}}ApplicationTests.java.hbs +0 -13
  83. package/templates/java-spring/pro/mvc/src/test/resources/application.yml.hbs +0 -10
  84. package/templates/java-spring/pro/mvc/template.json +0 -14
  85. package/templates/nestjs/pro/clean/.env.example.hbs +0 -19
  86. package/templates/nestjs/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  87. package/templates/nestjs/pro/clean/Dockerfile.hbs +0 -45
  88. package/templates/nestjs/pro/clean/infra/main.tf.hbs +0 -83
  89. package/templates/nestjs/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  90. package/templates/nestjs/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  91. package/templates/nestjs/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  92. package/templates/nestjs/pro/clean/package.json.hbs +0 -37
  93. package/templates/nestjs/pro/clean/src/auth.module.ts.hbs +0 -17
  94. package/templates/nestjs/pro/clean/src/domain/entities/user.entity.ts.hbs +0 -12
  95. package/templates/nestjs/pro/clean/src/domain/repositories/user.repository.ts.hbs +0 -6
  96. package/templates/nestjs/pro/clean/src/domain/use-cases/register.use-case.ts.hbs +0 -18
  97. package/templates/nestjs/pro/clean/src/infrastructure/database/in-memory.repository.ts.hbs +0 -17
  98. package/templates/nestjs/pro/clean/src/infrastructure/http/auth.controller.ts.hbs +0 -16
  99. package/templates/nestjs/pro/clean/tsconfig.json.hbs +0 -21
  100. package/templates/nestjs/pro/hexagonal/.env.example.hbs +0 -19
  101. package/templates/nestjs/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  102. package/templates/nestjs/pro/hexagonal/Dockerfile.hbs +0 -45
  103. package/templates/nestjs/pro/hexagonal/infra/main.tf.hbs +0 -83
  104. package/templates/nestjs/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  105. package/templates/nestjs/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  106. package/templates/nestjs/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  107. package/templates/nestjs/pro/hexagonal/package.json.hbs +0 -37
  108. package/templates/nestjs/pro/hexagonal/src/adapters/inbound/http.adapter.ts.hbs +0 -12
  109. package/templates/nestjs/pro/hexagonal/src/adapters/outbound/persistence.adapter.ts.hbs +0 -13
  110. package/templates/nestjs/pro/hexagonal/src/auth.module.ts.hbs +0 -19
  111. package/templates/nestjs/pro/hexagonal/src/core/auth.service.ts.hbs +0 -16
  112. package/templates/nestjs/pro/hexagonal/src/core/domain/user.entity.ts.hbs +0 -8
  113. package/templates/nestjs/pro/hexagonal/src/core/ports/ports.ts.hbs +0 -9
  114. package/templates/nestjs/pro/hexagonal/tsconfig.json.hbs +0 -21
  115. package/templates/nestjs/pro/mvc/.env.example.hbs +0 -19
  116. package/templates/nestjs/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  117. package/templates/nestjs/pro/mvc/Dockerfile.hbs +0 -45
  118. package/templates/nestjs/pro/mvc/README.md.hbs +0 -28
  119. package/templates/nestjs/pro/mvc/infra/main.tf.hbs +0 -83
  120. package/templates/nestjs/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  121. package/templates/nestjs/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  122. package/templates/nestjs/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  123. package/templates/nestjs/pro/mvc/package.json.hbs +0 -37
  124. package/templates/nestjs/pro/mvc/src/app.module.ts.hbs +0 -17
  125. package/templates/nestjs/pro/mvc/src/auth/auth.controller.ts.hbs +0 -35
  126. package/templates/nestjs/pro/mvc/src/auth/auth.module.ts.hbs +0 -25
  127. package/templates/nestjs/pro/mvc/src/auth/auth.service.ts.hbs +0 -55
  128. package/templates/nestjs/pro/mvc/src/auth/jwt.strategy.ts.hbs +0 -19
  129. package/templates/nestjs/pro/mvc/src/controllers/health.controller.ts.hbs +0 -9
  130. package/templates/nestjs/pro/mvc/src/controllers/items.controller.ts.hbs +0 -32
  131. package/templates/nestjs/pro/mvc/src/main.ts.hbs +0 -17
  132. package/templates/nestjs/pro/mvc/src/models/create-item.dto.ts.hbs +0 -10
  133. package/templates/nestjs/pro/mvc/src/models/item.model.ts.hbs +0 -6
  134. package/templates/nestjs/pro/mvc/src/modules/items.module.ts.hbs +0 -9
  135. package/templates/nestjs/pro/mvc/src/payments/payments.controller.ts.hbs +0 -26
  136. package/templates/nestjs/pro/mvc/src/payments/payments.module.ts.hbs +0 -11
  137. package/templates/nestjs/pro/mvc/src/payments/payments.service.ts.hbs +0 -43
  138. package/templates/nestjs/pro/mvc/src/services/items.service.ts.hbs +0 -32
  139. package/templates/nestjs/pro/mvc/tsconfig.json.hbs +0 -21
  140. package/templates/nextjs/pro/default/.env.example.hbs +0 -20
  141. package/templates/nextjs/pro/default/.github/workflows/ci-cd.yml.hbs +0 -88
  142. package/templates/nextjs/pro/default/Dockerfile.hbs +0 -45
  143. package/templates/nextjs/pro/default/README.md.hbs +0 -96
  144. package/templates/nextjs/pro/default/docker-compose.yml.hbs +0 -18
  145. package/templates/nextjs/pro/default/infra/main.tf.hbs +0 -83
  146. package/templates/nextjs/pro/default/infra/modules/ecs/main.tf.hbs +0 -54
  147. package/templates/nextjs/pro/default/infra/modules/rds/main.tf.hbs +0 -88
  148. package/templates/nextjs/pro/default/infra/modules/vpc/main.tf.hbs +0 -107
  149. package/templates/nextjs/pro/default/next.config.js.hbs +0 -4
  150. package/templates/nextjs/pro/default/package.json.hbs +0 -34
  151. package/templates/nextjs/pro/default/postcss.config.js.hbs +0 -6
  152. package/templates/nextjs/pro/default/prisma/schema.prisma.hbs +0 -18
  153. package/templates/nextjs/pro/default/public/.gitkeep +0 -0
  154. package/templates/nextjs/pro/default/src/app/api/auth/[...nextauth]/route.ts.hbs +0 -61
  155. package/templates/nextjs/pro/default/src/app/api/checkout/route.ts.hbs +0 -30
  156. package/templates/nextjs/pro/default/src/app/api/health/route.ts.hbs +0 -9
  157. package/templates/nextjs/pro/default/src/app/api/webhook/route.ts.hbs +0 -51
  158. package/templates/nextjs/pro/default/src/app/dashboard/page.tsx.hbs +0 -52
  159. package/templates/nextjs/pro/default/src/app/globals.css.hbs +0 -3
  160. package/templates/nextjs/pro/default/src/app/layout.tsx.hbs +0 -22
  161. package/templates/nextjs/pro/default/src/app/page.tsx.hbs +0 -38
  162. package/templates/nextjs/pro/default/src/components/.gitkeep +0 -0
  163. package/templates/nextjs/pro/default/src/components/AuthButton.tsx.hbs +0 -34
  164. package/templates/nextjs/pro/default/src/components/Providers.tsx.hbs +0 -7
  165. package/templates/nextjs/pro/default/src/lib/prisma.ts.hbs +0 -13
  166. package/templates/nextjs/pro/default/src/proxy.ts.hbs +0 -22
  167. package/templates/nextjs/pro/default/tailwind.config.ts.hbs +0 -15
  168. package/templates/nextjs/pro/default/template.json +0 -18
  169. package/templates/nextjs/pro/default/tsconfig.json.hbs +0 -40
  170. package/templates/nodejs-express/pro/clean/.env.example.hbs +0 -19
  171. package/templates/nodejs-express/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  172. package/templates/nodejs-express/pro/clean/Dockerfile.hbs +0 -45
  173. package/templates/nodejs-express/pro/clean/README.md.hbs +0 -41
  174. package/templates/nodejs-express/pro/clean/docker-compose.yml.hbs +0 -18
  175. package/templates/nodejs-express/pro/clean/infra/main.tf.hbs +0 -83
  176. package/templates/nodejs-express/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  177. package/templates/nodejs-express/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  178. package/templates/nodejs-express/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  179. package/templates/nodejs-express/pro/clean/package.json.hbs +0 -55
  180. package/templates/nodejs-express/pro/clean/src/application/services/AuthService.ts.hbs +0 -66
  181. package/templates/nodejs-express/pro/clean/src/domain/entities/User.ts.hbs +0 -38
  182. package/templates/nodejs-express/pro/clean/src/domain/repositories/IUserRepository.ts.hbs +0 -13
  183. package/templates/nodejs-express/pro/clean/src/domain/usecases/LoginUserUseCase.ts.hbs +0 -39
  184. package/templates/nodejs-express/pro/clean/src/domain/usecases/RegisterUserUseCase.ts.hbs +0 -51
  185. package/templates/nodejs-express/pro/clean/src/index.ts.hbs +0 -40
  186. package/templates/nodejs-express/pro/clean/src/infrastructure/database/InMemoryUserRepository.ts.hbs +0 -46
  187. package/templates/nodejs-express/pro/clean/src/infrastructure/http/controllers/AuthController.ts.hbs +0 -45
  188. package/templates/nodejs-express/pro/clean/src/infrastructure/http/middlewares/AuthMiddleware.ts.hbs +0 -27
  189. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/PasswordHasher.ts.hbs +0 -14
  190. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/TokenGenerator.ts.hbs +0 -25
  191. package/templates/nodejs-express/pro/clean/tsconfig.json.hbs +0 -27
  192. package/templates/nodejs-express/pro/hexagonal/.env.example.hbs +0 -19
  193. package/templates/nodejs-express/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  194. package/templates/nodejs-express/pro/hexagonal/Dockerfile.hbs +0 -45
  195. package/templates/nodejs-express/pro/hexagonal/README.md.hbs +0 -42
  196. package/templates/nodejs-express/pro/hexagonal/docker-compose.yml.hbs +0 -18
  197. package/templates/nodejs-express/pro/hexagonal/infra/main.tf.hbs +0 -83
  198. package/templates/nodejs-express/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  199. package/templates/nodejs-express/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  200. package/templates/nodejs-express/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  201. package/templates/nodejs-express/pro/hexagonal/package.json.hbs +0 -55
  202. package/templates/nodejs-express/pro/hexagonal/src/adapters/inbound/http/AuthController.ts.hbs +0 -48
  203. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/SecurityAdapters.ts.hbs +0 -31
  204. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/persistence/InMemoryUserAdapter.ts.hbs +0 -38
  205. package/templates/nodejs-express/pro/hexagonal/src/core/AuthService.ts.hbs +0 -51
  206. package/templates/nodejs-express/pro/hexagonal/src/core/domain/entities/User.ts.hbs +0 -28
  207. package/templates/nodejs-express/pro/hexagonal/src/core/ports/inbound/IAuthPort.ts.hbs +0 -11
  208. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/ISecurityPorts.ts.hbs +0 -15
  209. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/IUserRepositoryPort.ts.hbs +0 -13
  210. package/templates/nodejs-express/pro/hexagonal/src/index.ts.hbs +0 -41
  211. package/templates/nodejs-express/pro/hexagonal/tsconfig.json.hbs +0 -27
  212. package/templates/nodejs-express/pro/mvc/.env.example.hbs +0 -19
  213. package/templates/nodejs-express/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  214. package/templates/nodejs-express/pro/mvc/Dockerfile.hbs +0 -45
  215. package/templates/nodejs-express/pro/mvc/README.md.hbs +0 -85
  216. package/templates/nodejs-express/pro/mvc/docker-compose.yml.hbs +0 -18
  217. package/templates/nodejs-express/pro/mvc/infra/main.tf.hbs +0 -83
  218. package/templates/nodejs-express/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  219. package/templates/nodejs-express/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  220. package/templates/nodejs-express/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  221. package/templates/nodejs-express/pro/mvc/package.json.hbs +0 -55
  222. package/templates/nodejs-express/pro/mvc/src/app.ts.hbs +0 -34
  223. package/templates/nodejs-express/pro/mvc/src/config/database.ts.hbs +0 -10
  224. package/templates/nodejs-express/pro/mvc/src/controllers/auth.controller.ts.hbs +0 -91
  225. package/templates/nodejs-express/pro/mvc/src/controllers/healthController.ts.hbs +0 -20
  226. package/templates/nodejs-express/pro/mvc/src/controllers/payments.controller.ts.hbs +0 -72
  227. package/templates/nodejs-express/pro/mvc/src/index.ts.hbs +0 -12
  228. package/templates/nodejs-express/pro/mvc/src/middleware/errorHandler.ts.hbs +0 -22
  229. package/templates/nodejs-express/pro/mvc/src/middlewares/auth.middleware.ts.hbs +0 -31
  230. package/templates/nodejs-express/pro/mvc/src/models/.gitkeep +0 -0
  231. package/templates/nodejs-express/pro/mvc/src/routes/index.ts.hbs +0 -14
  232. package/templates/nodejs-express/pro/mvc/src/services/.gitkeep +0 -0
  233. package/templates/nodejs-express/pro/mvc/src/services/stripe.service.ts.hbs +0 -102
  234. package/templates/nodejs-express/pro/mvc/template.json +0 -18
  235. package/templates/nodejs-express/pro/mvc/tsconfig.json.hbs +0 -27
  236. package/templates/python-fastapi/pro/clean/.env.example.hbs +0 -17
  237. package/templates/python-fastapi/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  238. package/templates/python-fastapi/pro/clean/Dockerfile.hbs +0 -20
  239. package/templates/python-fastapi/pro/clean/app/domain/entities/user.py.hbs +0 -23
  240. package/templates/python-fastapi/pro/clean/app/domain/repositories/user_repository.py.hbs +0 -22
  241. package/templates/python-fastapi/pro/clean/app/domain/usecases/register_user.py.hbs +0 -30
  242. package/templates/python-fastapi/pro/clean/app/infrastructure/database/in_memory_repository.py.hbs +0 -26
  243. package/templates/python-fastapi/pro/clean/app/infrastructure/http/auth_controller.py.hbs +0 -26
  244. package/templates/python-fastapi/pro/clean/app/infrastructure/security/adapters.py.hbs +0 -23
  245. package/templates/python-fastapi/pro/clean/app/main.py.hbs +0 -10
  246. package/templates/python-fastapi/pro/clean/infra/main.tf.hbs +0 -83
  247. package/templates/python-fastapi/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  248. package/templates/python-fastapi/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  249. package/templates/python-fastapi/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  250. package/templates/python-fastapi/pro/clean/requirements.txt.hbs +0 -12
  251. package/templates/python-fastapi/pro/hexagonal/.env.example.hbs +0 -17
  252. package/templates/python-fastapi/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  253. package/templates/python-fastapi/pro/hexagonal/Dockerfile.hbs +0 -20
  254. package/templates/python-fastapi/pro/hexagonal/app/adapters/inbound/http_adapter.py.hbs +0 -29
  255. package/templates/python-fastapi/pro/hexagonal/app/core/domain/user.py.hbs +0 -15
  256. package/templates/python-fastapi/pro/hexagonal/app/core/ports.py.hbs +0 -25
  257. package/templates/python-fastapi/pro/hexagonal/app/core/service.py.hbs +0 -28
  258. package/templates/python-fastapi/pro/hexagonal/app/main.py.hbs +0 -22
  259. package/templates/python-fastapi/pro/hexagonal/infra/main.tf.hbs +0 -83
  260. package/templates/python-fastapi/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  261. package/templates/python-fastapi/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  262. package/templates/python-fastapi/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  263. package/templates/python-fastapi/pro/hexagonal/requirements.txt.hbs +0 -12
  264. package/templates/python-fastapi/pro/mvc/.env.example.hbs +0 -17
  265. package/templates/python-fastapi/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  266. package/templates/python-fastapi/pro/mvc/Dockerfile.hbs +0 -20
  267. package/templates/python-fastapi/pro/mvc/README.md.hbs +0 -41
  268. package/templates/python-fastapi/pro/mvc/app/controllers/auth.py.hbs +0 -46
  269. package/templates/python-fastapi/pro/mvc/app/controllers/health.py.hbs +0 -7
  270. package/templates/python-fastapi/pro/mvc/app/controllers/items.py.hbs +0 -21
  271. package/templates/python-fastapi/pro/mvc/app/controllers/payments.py.hbs +0 -32
  272. package/templates/python-fastapi/pro/mvc/app/main.py.hbs +0 -20
  273. package/templates/python-fastapi/pro/mvc/app/middleware/security.py.hbs +0 -39
  274. package/templates/python-fastapi/pro/mvc/app/models/item.py.hbs +0 -11
  275. package/templates/python-fastapi/pro/mvc/app/schemas/item.py.hbs +0 -16
  276. package/templates/python-fastapi/pro/mvc/app/services/item_service.py.hbs +0 -24
  277. package/templates/python-fastapi/pro/mvc/infra/main.tf.hbs +0 -83
  278. package/templates/python-fastapi/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  279. package/templates/python-fastapi/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  280. package/templates/python-fastapi/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  281. package/templates/python-fastapi/pro/mvc/requirements.txt.hbs +0 -12
@@ -1,88 +0,0 @@
1
- # RDS Module
2
-
3
- variable "app_name" {
4
- type = string
5
- }
6
-
7
- variable "environment" {
8
- type = string
9
- }
10
-
11
- variable "vpc_id" {
12
- type = string
13
- }
14
-
15
- variable "subnet_ids" {
16
- type = list(string)
17
- }
18
-
19
- variable "security_group_id" {
20
- type = string
21
- }
22
-
23
- # DB Subnet Group
24
- resource "aws_db_subnet_group" "main" {
25
- name = "${var.app_name}-${var.environment}"
26
- subnet_ids = var.subnet_ids
27
-
28
- tags = {
29
- Name = "${var.app_name}-${var.environment}"
30
- Environment = var.environment
31
- }
32
- }
33
-
34
- # RDS PostgreSQL Instance
35
- resource "aws_db_instance" "main" {
36
- identifier = "${var.app_name}-${var.environment}"
37
-
38
- engine = "postgres"
39
- engine_version = "16"
40
- instance_class = "db.t3.micro"
41
-
42
- allocated_storage = 20
43
- max_allocated_storage = 100
44
- storage_type = "gp3"
45
- storage_encrypted = true
46
-
47
- db_name = replace(var.app_name, "-", "_")
48
- username = "postgres"
49
- password = random_password.db_password.result
50
-
51
- db_subnet_group_name = aws_db_subnet_group.main.name
52
- vpc_security_group_ids = [var.security_group_id]
53
-
54
- backup_retention_period = 7
55
- skip_final_snapshot = var.environment != "prod"
56
-
57
- tags = {
58
- Name = "${var.app_name}-${var.environment}"
59
- Environment = var.environment
60
- }
61
- }
62
-
63
- # Random password for DB
64
- resource "random_password" "db_password" {
65
- length = 32
66
- special = false
67
- }
68
-
69
- # Store password in SSM
70
- resource "aws_ssm_parameter" "db_password" {
71
- name = "/${var.app_name}/${var.environment}/db-password"
72
- description = "Database password for ${var.app_name}"
73
- type = "SecureString"
74
- value = random_password.db_password.result
75
-
76
- tags = {
77
- Environment = var.environment
78
- }
79
- }
80
-
81
- # Outputs
82
- output "endpoint" {
83
- value = aws_db_instance.main.endpoint
84
- }
85
-
86
- output "db_name" {
87
- value = aws_db_instance.main.db_name
88
- }
@@ -1,107 +0,0 @@
1
- # VPC Module
2
-
3
- variable "app_name" {
4
- type = string
5
- }
6
-
7
- variable "environment" {
8
- type = string
9
- }
10
-
11
- # VPC
12
- resource "aws_vpc" "main" {
13
- cidr_block = "10.0.0.0/16"
14
- enable_dns_hostnames = true
15
- enable_dns_support = true
16
-
17
- tags = {
18
- Name = "${var.app_name}-${var.environment}-vpc"
19
- Environment = var.environment
20
- }
21
- }
22
-
23
- # Public Subnets
24
- resource "aws_subnet" "public" {
25
- count = 2
26
- vpc_id = aws_vpc.main.id
27
- cidr_block = "10.0.${count.index + 1}.0/24"
28
- availability_zone = data.aws_availability_zones.available.names[count.index]
29
-
30
- map_public_ip_on_launch = true
31
-
32
- tags = {
33
- Name = "${var.app_name}-${var.environment}-public-${count.index + 1}"
34
- Environment = var.environment
35
- }
36
- }
37
-
38
- # Private Subnets
39
- resource "aws_subnet" "private" {
40
- count = 2
41
- vpc_id = aws_vpc.main.id
42
- cidr_block = "10.0.${count.index + 10}.0/24"
43
- availability_zone = data.aws_availability_zones.available.names[count.index]
44
-
45
- tags = {
46
- Name = "${var.app_name}-${var.environment}-private-${count.index + 1}"
47
- Environment = var.environment
48
- }
49
- }
50
-
51
- # Internet Gateway
52
- resource "aws_internet_gateway" "main" {
53
- vpc_id = aws_vpc.main.id
54
-
55
- tags = {
56
- Name = "${var.app_name}-${var.environment}-igw"
57
- Environment = var.environment
58
- }
59
- }
60
-
61
- # Data source for AZs
62
- data "aws_availability_zones" "available" {
63
- state = "available"
64
- }
65
-
66
- # Security Group for DB
67
- resource "aws_security_group" "db" {
68
- name = "${var.app_name}-${var.environment}-db-sg"
69
- description = "Security group for database"
70
- vpc_id = aws_vpc.main.id
71
-
72
- ingress {
73
- from_port = 5432
74
- to_port = 5432
75
- protocol = "tcp"
76
- cidr_blocks = ["10.0.0.0/16"]
77
- }
78
-
79
- egress {
80
- from_port = 0
81
- to_port = 0
82
- protocol = "-1"
83
- cidr_blocks = ["0.0.0.0/0"]
84
- }
85
-
86
- tags = {
87
- Name = "${var.app_name}-${var.environment}-db-sg"
88
- Environment = var.environment
89
- }
90
- }
91
-
92
- # Outputs
93
- output "vpc_id" {
94
- value = aws_vpc.main.id
95
- }
96
-
97
- output "public_subnet_ids" {
98
- value = aws_subnet.public[*].id
99
- }
100
-
101
- output "private_subnet_ids" {
102
- value = aws_subnet.private[*].id
103
- }
104
-
105
- output "db_security_group_id" {
106
- value = aws_security_group.db.id
107
- }
@@ -1,130 +0,0 @@
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
4
- https://maven.apache.org/xsd/maven-4.0.0.xsd">
5
- <modelVersion>4.0.0</modelVersion>
6
-
7
- <parent>
8
- <groupId>org.springframework.boot</groupId>
9
- <artifactId>spring-boot-starter-parent</artifactId>
10
- <version>3.4.1</version>
11
- <relativePath />
12
- </parent>
13
-
14
- <groupId>{{packageName}}</groupId>
15
- <artifactId>{{projectNameKebabCase}}</artifactId>
16
- <version>0.0.1-SNAPSHOT</version>
17
- <name>{{projectNamePascalCase}}</name>
18
- <description>Generated by Kibernus CLI</description>
19
-
20
- <properties>
21
- <java.version>21</java.version>
22
- </properties>
23
-
24
- <dependencies>
25
- <!-- Spring Boot Starters -->
26
- <dependency>
27
- <groupId>org.springframework.boot</groupId>
28
- <artifactId>spring-boot-starter-web</artifactId>
29
- </dependency>
30
- <dependency>
31
- <groupId>org.springframework.boot</groupId>
32
- <artifactId>spring-boot-starter-validation</artifactId>
33
- </dependency>
34
- <dependency>
35
- <groupId>org.springframework.boot</groupId>
36
- <artifactId>spring-boot-starter-data-jpa</artifactId>
37
- </dependency>
38
- <dependency>
39
- <groupId>org.springframework.boot</groupId>
40
- <artifactId>spring-boot-starter-security</artifactId>
41
- </dependency>
42
- <dependency>
43
- <groupId>org.springframework.boot</groupId>
44
- <artifactId>spring-boot-starter-actuator</artifactId>
45
- </dependency>
46
-
47
- <!-- JWT -->
48
- <dependency>
49
- <groupId>io.jsonwebtoken</groupId>
50
- <artifactId>jjwt-api</artifactId>
51
- <version>0.12.5</version>
52
- </dependency>
53
- <dependency>
54
- <groupId>io.jsonwebtoken</groupId>
55
- <artifactId>jjwt-impl</artifactId>
56
- <version>0.12.5</version>
57
- <scope>runtime</scope>
58
- </dependency>
59
- <dependency>
60
- <groupId>io.jsonwebtoken</groupId>
61
- <artifactId>jjwt-jackson</artifactId>
62
- <version>0.12.5</version>
63
- <scope>runtime</scope>
64
- </dependency>
65
-
66
- <!-- Stripe -->
67
- <dependency>
68
- <groupId>com.stripe</groupId>
69
- <artifactId>stripe-java</artifactId>
70
- <version>24.19.0</version>
71
- </dependency>
72
-
73
- <!-- Database -->
74
- <dependency>
75
- <groupId>org.postgresql</groupId>
76
- <artifactId>postgresql</artifactId>
77
- <scope>runtime</scope>
78
- </dependency>
79
- <dependency>
80
- <groupId>com.h2database</groupId>
81
- <artifactId>h2</artifactId>
82
- <scope>runtime</scope>
83
- </dependency>
84
-
85
- <!-- Lombok -->
86
- <dependency>
87
- <groupId>org.projectlombok</groupId>
88
- <artifactId>lombok</artifactId>
89
- <optional>true</optional>
90
- </dependency>
91
-
92
- <!-- DevTools -->
93
- <dependency>
94
- <groupId>org.springframework.boot</groupId>
95
- <artifactId>spring-boot-devtools</artifactId>
96
- <scope>runtime</scope>
97
- <optional>true</optional>
98
- </dependency>
99
-
100
- <!-- Testing -->
101
- <dependency>
102
- <groupId>org.springframework.boot</groupId>
103
- <artifactId>spring-boot-starter-test</artifactId>
104
- <scope>test</scope>
105
- </dependency>
106
- <dependency>
107
- <groupId>org.springframework.security</groupId>
108
- <artifactId>spring-security-test</artifactId>
109
- <scope>test</scope>
110
- </dependency>
111
- </dependencies>
112
-
113
- <build>
114
- <plugins>
115
- <plugin>
116
- <groupId>org.springframework.boot</groupId>
117
- <artifactId>spring-boot-maven-plugin</artifactId>
118
- <configuration>
119
- <excludes>
120
- <exclude>
121
- <groupId>org.projectlombok</groupId>
122
- <artifactId>lombok</artifactId>
123
- </exclude>
124
- </excludes>
125
- </configuration>
126
- </plugin>
127
- </plugins>
128
- </build>
129
-
130
- </project>
@@ -1,36 +0,0 @@
1
- package {{packageName}}.application.service;
2
-
3
- import {{packageName}}.domain.entity.User;
4
- import {{packageName}}.domain.repository.UserRepository;
5
- import {{packageName}}.domain.usecase.LoginUserUseCase;
6
- import {{packageName}}.domain.usecase.RegisterUserUseCase;
7
- import org.springframework.stereotype.Service;
8
-
9
- /**
10
- * Auth Service - Application Layer
11
- * Orchestrates use cases
12
- */
13
- @Service
14
- public class AuthService {
15
- private final RegisterUserUseCase registerUserUseCase;
16
- private final LoginUserUseCase loginUserUseCase;
17
-
18
- public AuthService(UserRepository userRepository,
19
- RegisterUserUseCase.PasswordEncoder passwordEncoder,
20
- RegisterUserUseCase.TokenGenerator tokenGenerator) {
21
- this.registerUserUseCase = new RegisterUserUseCase(userRepository, passwordEncoder, tokenGenerator);
22
- this.loginUserUseCase = new LoginUserUseCase(userRepository, passwordEncoder, tokenGenerator);
23
- }
24
-
25
- public record AuthResponse(String token, String userId, String email, String name) {}
26
-
27
- public AuthResponse register(String email, String name, String password) {
28
- var result = registerUserUseCase.execute(new RegisterUserUseCase.Input(email, name, password));
29
- return new AuthResponse(result.token(), result.user().getId(), result.user().getEmail(), result.user().getName());
30
- }
31
-
32
- public AuthResponse login(String email, String password) {
33
- var result = loginUserUseCase.execute(new LoginUserUseCase.Input(email, password));
34
- return new AuthResponse(result.token(), result.user().getId(), result.user().getEmail(), result.user().getName());
35
- }
36
- }
@@ -1,77 +0,0 @@
1
- package {{packageName}}.domain.entity;
2
-
3
- import java.time.LocalDateTime;
4
- import java.util.UUID;
5
-
6
- /**
7
- * User Entity - Domain Layer (Clean Architecture)
8
- * Pure business object with no framework dependencies
9
- */
10
- public class User {
11
- private final String id;
12
- private final String email;
13
- private final String name;
14
- private final String password;
15
- private String stripeCustomerId;
16
- private final LocalDateTime createdAt;
17
-
18
- private User(String id, String email, String name, String password, String stripeCustomerId, LocalDateTime createdAt) {
19
- this.id = id;
20
- this.email = email;
21
- this.name = name;
22
- this.password = password;
23
- this.stripeCustomerId = stripeCustomerId;
24
- this.createdAt = createdAt;
25
- }
26
-
27
- public static User create(String email, String name, String password) {
28
- validateEmail(email);
29
- validatePassword(password);
30
- return new User(UUID.randomUUID().toString(), email, name, password, null, LocalDateTime.now());
31
- }
32
-
33
- public static User restore(String id, String email, String name, String password, String stripeCustomerId, LocalDateTime createdAt) {
34
- return new User(id, email, name, password, stripeCustomerId, createdAt);
35
- }
36
-
37
- private static void validateEmail(String email) {
38
- if (email == null || !email.contains("@")) {
39
- throw new IllegalArgumentException("Invalid email format");
40
- }
41
- }
42
-
43
- private static void validatePassword(String password) {
44
- if (password == null || password.length() < 8) {
45
- throw new IllegalArgumentException("Password must be at least 8 characters");
46
- }
47
- }
48
-
49
- // Getters
50
- public String getId() {
51
- return id;
52
- }
53
-
54
- public String getEmail() {
55
- return email;
56
- }
57
-
58
- public String getName() {
59
- return name;
60
- }
61
-
62
- public String getPassword() {
63
- return password;
64
- }
65
-
66
- public String getStripeCustomerId() {
67
- return stripeCustomerId;
68
- }
69
-
70
- public LocalDateTime getCreatedAt() {
71
- return createdAt;
72
- }
73
-
74
- public void setStripeCustomerId(String stripeCustomerId) {
75
- this.stripeCustomerId = stripeCustomerId;
76
- }
77
- }
@@ -1,15 +0,0 @@
1
- package {{packageName}}.domain.repository;
2
-
3
- import {{packageName}}.domain.entity.User;
4
- import java.util.Optional;
5
-
6
- /**
7
- * User Repository Interface - Domain Layer
8
- * Defines the contract for user persistence
9
- */
10
- public interface UserRepository {
11
- Optional<User> findById(String id);
12
- Optional<User> findByEmail(String email);
13
- User save(User user);
14
- void delete(String id);
15
- }
@@ -1,36 +0,0 @@
1
- package {{packageName}}.domain.usecase;
2
-
3
- import {{packageName}}.domain.entity.User;
4
- import {{packageName}}.domain.repository.UserRepository;
5
-
6
- /**
7
- * Login User Use Case - Domain Layer
8
- */
9
- public class LoginUserUseCase {
10
- private final UserRepository userRepository;
11
- private final RegisterUserUseCase.PasswordEncoder passwordEncoder;
12
- private final RegisterUserUseCase.TokenGenerator tokenGenerator;
13
-
14
- public LoginUserUseCase(UserRepository userRepository,
15
- RegisterUserUseCase.PasswordEncoder passwordEncoder,
16
- RegisterUserUseCase.TokenGenerator tokenGenerator) {
17
- this.userRepository = userRepository;
18
- this.passwordEncoder = passwordEncoder;
19
- this.tokenGenerator = tokenGenerator;
20
- }
21
-
22
- public record Input(String email, String password) {}
23
- public record Output(User user, String token) {}
24
-
25
- public Output execute(Input input) {
26
- User user = userRepository.findByEmail(input.email())
27
- .orElseThrow(() -> new IllegalArgumentException("Invalid credentials"));
28
-
29
- if (!passwordEncoder.matches(input.password(), user.getPassword())) {
30
- throw new IllegalArgumentException("Invalid credentials");
31
- }
32
-
33
- String token = tokenGenerator.generate(user.getId(), user.getEmail());
34
- return new Output(user, token);
35
- }
36
- }
@@ -1,46 +0,0 @@
1
- package {{packageName}}.domain.usecase;
2
-
3
- import {{packageName}}.domain.entity.User;
4
- import {{packageName}}.domain.repository.UserRepository;
5
-
6
- /**
7
- * Register User Use Case - Domain Layer
8
- */
9
- public class RegisterUserUseCase {
10
- private final UserRepository userRepository;
11
- private final PasswordEncoder passwordEncoder;
12
- private final TokenGenerator tokenGenerator;
13
-
14
- public RegisterUserUseCase(UserRepository userRepository, PasswordEncoder passwordEncoder, TokenGenerator
15
- tokenGenerator) {
16
- this.userRepository = userRepository;
17
- this.passwordEncoder = passwordEncoder;
18
- this.tokenGenerator = tokenGenerator;
19
- }
20
-
21
- public record Input(String email, String name, String password) {}
22
- public record Output(User user, String token) {}
23
-
24
- public Output execute(Input input) {
25
- userRepository.findByEmail(input.email()).ifPresent(u -> {
26
- throw new IllegalStateException("User already exists");
27
- });
28
-
29
- String hashedPassword = passwordEncoder.encode(input.password());
30
- User user = User.create(input.email(), input.name(), hashedPassword);
31
- User savedUser = userRepository.save(user);
32
- String token = tokenGenerator.generate(savedUser.getId(), savedUser.getEmail());
33
-
34
- return new Output(savedUser, token);
35
- }
36
-
37
- // Port interfaces
38
- public interface PasswordEncoder {
39
- String encode(String rawPassword);
40
- boolean matches(String rawPassword, String encodedPassword);
41
- }
42
-
43
- public interface TokenGenerator {
44
- String generate(String userId, String email);
45
- }
46
- }
@@ -1,41 +0,0 @@
1
- package {{packageName}}.infrastructure.persistence;
2
-
3
- import {{packageName}}.domain.entity.User;
4
- import {{packageName}}.domain.repository.UserRepository;
5
- import org.springframework.stereotype.Repository;
6
-
7
- import java.util.Map;
8
- import java.util.Optional;
9
- import java.util.concurrent.ConcurrentHashMap;
10
-
11
- /**
12
- * In-Memory User Repository - Infrastructure Layer
13
- * Replace with JPA implementation for production
14
- */
15
- @Repository
16
- public class InMemoryUserRepository implements UserRepository {
17
- private final Map<String, User> users = new ConcurrentHashMap<>();
18
-
19
- @Override
20
- public Optional<User> findById(String id) {
21
- return Optional.ofNullable(users.get(id));
22
- }
23
-
24
- @Override
25
- public Optional<User> findByEmail(String email) {
26
- return users.values().stream()
27
- .filter(user -> user.getEmail().equals(email))
28
- .findFirst();
29
- }
30
-
31
- @Override
32
- public User save(User user) {
33
- users.put(user.getId(), user);
34
- return user;
35
- }
36
-
37
- @Override
38
- public void delete(String id) {
39
- users.remove(id);
40
- }
41
- }
@@ -1,53 +0,0 @@
1
- package {{packageName}}.infrastructure.security;
2
-
3
- import {{packageName}}.domain.usecase.RegisterUserUseCase;
4
- import io.jsonwebtoken.Jwts;
5
- import io.jsonwebtoken.security.Keys;
6
- import org.springframework.beans.factory.annotation.Value;
7
- import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
8
- import org.springframework.stereotype.Component;
9
-
10
- import javax.crypto.SecretKey;
11
- import java.nio.charset.StandardCharsets;
12
- import java.util.Date;
13
-
14
- /**
15
- * Security Adapters - Infrastructure Layer
16
- * Implements domain port interfaces
17
- */
18
- @Component
19
- public class SecurityAdapters implements RegisterUserUseCase.PasswordEncoder, RegisterUserUseCase.TokenGenerator {
20
-
21
- private final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
22
-
23
- @Value("${jwt.secret:your-super-secret-jwt-key-change-in-production}")
24
- private String jwtSecret;
25
-
26
- @Value("${jwt.expiration:604800000}")
27
- private long jwtExpiration;
28
-
29
- private SecretKey getSigningKey() {
30
- return Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8));
31
- }
32
-
33
- @Override
34
- public String encode(String rawPassword) {
35
- return encoder.encode(rawPassword);
36
- }
37
-
38
- @Override
39
- public boolean matches(String rawPassword, String encodedPassword) {
40
- return encoder.matches(rawPassword, encodedPassword);
41
- }
42
-
43
- @Override
44
- public String generate(String userId, String email) {
45
- return Jwts.builder()
46
- .subject(userId)
47
- .claim("email", email)
48
- .issuedAt(new Date())
49
- .expiration(new Date(System.currentTimeMillis() + jwtExpiration))
50
- .signWith(getSigningKey())
51
- .compact();
52
- }
53
- }
@@ -1,41 +0,0 @@
1
- package {{packageName}}.infrastructure.web.controller;
2
-
3
- import {{packageName}}.application.service.AuthService;
4
- import org.springframework.http.ResponseEntity;
5
- import org.springframework.web.bind.annotation.*;
6
-
7
- import java.util.Map;
8
-
9
- @RestController
10
- @RequestMapping("/api/auth")
11
- public class AuthController {
12
-
13
- private final AuthService authService;
14
-
15
- public AuthController(AuthService authService) {
16
- this.authService = authService;
17
- }
18
-
19
- public record AuthRequest(String email, String name, String password) {}
20
-
21
- @PostMapping("/register")
22
- public ResponseEntity
23
- <?> register(@RequestBody AuthRequest request) {
24
- try {
25
- var result = authService.register(request.email(), request.name(), request.password());
26
- return ResponseEntity.ok(result);
27
- } catch (Exception e) {
28
- return ResponseEntity.badRequest().body(Map.of("error", e.getMessage()));
29
- }
30
- }
31
-
32
- @PostMapping("/login")
33
- public ResponseEntity<?> login(@RequestBody AuthRequest request) {
34
- try {
35
- var result = authService.login(request.email(), request.password());
36
- return ResponseEntity.ok(result);
37
- } catch (Exception e) {
38
- return ResponseEntity.status(401).body(Map.of("error", e.getMessage()));
39
- }
40
- }
41
- }
@@ -1,14 +0,0 @@
1
- package {{packageName}};
2
-
3
- import org.springframework.boot.SpringApplication;
4
- import org.springframework.boot.autoconfigure.SpringBootApplication;
5
-
6
- @SpringBootApplication
7
- public class {{projectNamePascalCase}}Application {
8
-
9
- public static void main(String[] args) {
10
- SpringApplication.run({{projectNamePascalCase}}Application.class, args);
11
- System.out.println("🚀 {{projectNamePascalCase}} running!");
12
- System.out.println("📐 Architecture: Clean Architecture");
13
- }
14
- }