kybernus 1.0.1 → 1.1.3

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 (300) hide show
  1. package/README.md +48 -263
  2. package/dist/cli/commands/init.d.ts.map +1 -1
  3. package/dist/cli/commands/init.js +5 -1
  4. package/dist/cli/commands/init.js.map +1 -1
  5. package/dist/cli/commands/upgrade.js +2 -2
  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/free/mvc/README.md.hbs +0 -28
  86. package/templates/nestjs/free/mvc/package.json.hbs +0 -29
  87. package/templates/nestjs/free/mvc/src/app.module.ts.hbs +0 -13
  88. package/templates/nestjs/free/mvc/src/controllers/health.controller.ts.hbs +0 -9
  89. package/templates/nestjs/free/mvc/src/controllers/items.controller.ts.hbs +0 -32
  90. package/templates/nestjs/free/mvc/src/main.ts.hbs +0 -17
  91. package/templates/nestjs/free/mvc/src/models/create-item.dto.ts.hbs +0 -10
  92. package/templates/nestjs/free/mvc/src/models/item.model.ts.hbs +0 -6
  93. package/templates/nestjs/free/mvc/src/modules/items.module.ts.hbs +0 -9
  94. package/templates/nestjs/free/mvc/src/services/items.service.ts.hbs +0 -32
  95. package/templates/nestjs/free/mvc/tsconfig.json.hbs +0 -21
  96. package/templates/nestjs/pro/clean/.env.example.hbs +0 -19
  97. package/templates/nestjs/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  98. package/templates/nestjs/pro/clean/Dockerfile.hbs +0 -45
  99. package/templates/nestjs/pro/clean/infra/main.tf.hbs +0 -83
  100. package/templates/nestjs/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  101. package/templates/nestjs/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  102. package/templates/nestjs/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  103. package/templates/nestjs/pro/clean/package.json.hbs +0 -37
  104. package/templates/nestjs/pro/clean/src/auth.module.ts.hbs +0 -17
  105. package/templates/nestjs/pro/clean/src/domain/entities/user.entity.ts.hbs +0 -12
  106. package/templates/nestjs/pro/clean/src/domain/repositories/user.repository.ts.hbs +0 -6
  107. package/templates/nestjs/pro/clean/src/domain/use-cases/register.use-case.ts.hbs +0 -18
  108. package/templates/nestjs/pro/clean/src/infrastructure/database/in-memory.repository.ts.hbs +0 -17
  109. package/templates/nestjs/pro/clean/src/infrastructure/http/auth.controller.ts.hbs +0 -16
  110. package/templates/nestjs/pro/clean/tsconfig.json.hbs +0 -21
  111. package/templates/nestjs/pro/hexagonal/.env.example.hbs +0 -19
  112. package/templates/nestjs/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  113. package/templates/nestjs/pro/hexagonal/Dockerfile.hbs +0 -45
  114. package/templates/nestjs/pro/hexagonal/infra/main.tf.hbs +0 -83
  115. package/templates/nestjs/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  116. package/templates/nestjs/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  117. package/templates/nestjs/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  118. package/templates/nestjs/pro/hexagonal/package.json.hbs +0 -37
  119. package/templates/nestjs/pro/hexagonal/src/adapters/inbound/http.adapter.ts.hbs +0 -12
  120. package/templates/nestjs/pro/hexagonal/src/adapters/outbound/persistence.adapter.ts.hbs +0 -13
  121. package/templates/nestjs/pro/hexagonal/src/auth.module.ts.hbs +0 -19
  122. package/templates/nestjs/pro/hexagonal/src/core/auth.service.ts.hbs +0 -16
  123. package/templates/nestjs/pro/hexagonal/src/core/domain/user.entity.ts.hbs +0 -8
  124. package/templates/nestjs/pro/hexagonal/src/core/ports/ports.ts.hbs +0 -9
  125. package/templates/nestjs/pro/hexagonal/tsconfig.json.hbs +0 -21
  126. package/templates/nestjs/pro/mvc/.env.example.hbs +0 -19
  127. package/templates/nestjs/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  128. package/templates/nestjs/pro/mvc/Dockerfile.hbs +0 -45
  129. package/templates/nestjs/pro/mvc/README.md.hbs +0 -28
  130. package/templates/nestjs/pro/mvc/infra/main.tf.hbs +0 -83
  131. package/templates/nestjs/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  132. package/templates/nestjs/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  133. package/templates/nestjs/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  134. package/templates/nestjs/pro/mvc/package.json.hbs +0 -37
  135. package/templates/nestjs/pro/mvc/src/app.module.ts.hbs +0 -17
  136. package/templates/nestjs/pro/mvc/src/auth/auth.controller.ts.hbs +0 -35
  137. package/templates/nestjs/pro/mvc/src/auth/auth.module.ts.hbs +0 -25
  138. package/templates/nestjs/pro/mvc/src/auth/auth.service.ts.hbs +0 -55
  139. package/templates/nestjs/pro/mvc/src/auth/jwt.strategy.ts.hbs +0 -19
  140. package/templates/nestjs/pro/mvc/src/controllers/health.controller.ts.hbs +0 -9
  141. package/templates/nestjs/pro/mvc/src/controllers/items.controller.ts.hbs +0 -32
  142. package/templates/nestjs/pro/mvc/src/main.ts.hbs +0 -17
  143. package/templates/nestjs/pro/mvc/src/models/create-item.dto.ts.hbs +0 -10
  144. package/templates/nestjs/pro/mvc/src/models/item.model.ts.hbs +0 -6
  145. package/templates/nestjs/pro/mvc/src/modules/items.module.ts.hbs +0 -9
  146. package/templates/nestjs/pro/mvc/src/payments/payments.controller.ts.hbs +0 -26
  147. package/templates/nestjs/pro/mvc/src/payments/payments.module.ts.hbs +0 -11
  148. package/templates/nestjs/pro/mvc/src/payments/payments.service.ts.hbs +0 -43
  149. package/templates/nestjs/pro/mvc/src/services/items.service.ts.hbs +0 -32
  150. package/templates/nestjs/pro/mvc/tsconfig.json.hbs +0 -21
  151. package/templates/nextjs/pro/default/.env.example.hbs +0 -20
  152. package/templates/nextjs/pro/default/.github/workflows/ci-cd.yml.hbs +0 -88
  153. package/templates/nextjs/pro/default/Dockerfile.hbs +0 -45
  154. package/templates/nextjs/pro/default/README.md.hbs +0 -96
  155. package/templates/nextjs/pro/default/docker-compose.yml.hbs +0 -18
  156. package/templates/nextjs/pro/default/infra/main.tf.hbs +0 -83
  157. package/templates/nextjs/pro/default/infra/modules/ecs/main.tf.hbs +0 -54
  158. package/templates/nextjs/pro/default/infra/modules/rds/main.tf.hbs +0 -88
  159. package/templates/nextjs/pro/default/infra/modules/vpc/main.tf.hbs +0 -107
  160. package/templates/nextjs/pro/default/next.config.js.hbs +0 -4
  161. package/templates/nextjs/pro/default/package.json.hbs +0 -34
  162. package/templates/nextjs/pro/default/postcss.config.js.hbs +0 -6
  163. package/templates/nextjs/pro/default/prisma/schema.prisma.hbs +0 -18
  164. package/templates/nextjs/pro/default/public/.gitkeep +0 -0
  165. package/templates/nextjs/pro/default/src/app/api/auth/[...nextauth]/route.ts.hbs +0 -61
  166. package/templates/nextjs/pro/default/src/app/api/checkout/route.ts.hbs +0 -30
  167. package/templates/nextjs/pro/default/src/app/api/health/route.ts.hbs +0 -9
  168. package/templates/nextjs/pro/default/src/app/api/webhook/route.ts.hbs +0 -51
  169. package/templates/nextjs/pro/default/src/app/dashboard/page.tsx.hbs +0 -52
  170. package/templates/nextjs/pro/default/src/app/globals.css.hbs +0 -3
  171. package/templates/nextjs/pro/default/src/app/layout.tsx.hbs +0 -22
  172. package/templates/nextjs/pro/default/src/app/page.tsx.hbs +0 -38
  173. package/templates/nextjs/pro/default/src/components/.gitkeep +0 -0
  174. package/templates/nextjs/pro/default/src/components/AuthButton.tsx.hbs +0 -34
  175. package/templates/nextjs/pro/default/src/components/Providers.tsx.hbs +0 -7
  176. package/templates/nextjs/pro/default/src/lib/prisma.ts.hbs +0 -13
  177. package/templates/nextjs/pro/default/src/proxy.ts.hbs +0 -22
  178. package/templates/nextjs/pro/default/tailwind.config.ts.hbs +0 -15
  179. package/templates/nextjs/pro/default/template.json +0 -18
  180. package/templates/nextjs/pro/default/tsconfig.json.hbs +0 -40
  181. package/templates/nodejs-express/pro/clean/.env.example.hbs +0 -19
  182. package/templates/nodejs-express/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  183. package/templates/nodejs-express/pro/clean/Dockerfile.hbs +0 -45
  184. package/templates/nodejs-express/pro/clean/README.md.hbs +0 -41
  185. package/templates/nodejs-express/pro/clean/docker-compose.yml.hbs +0 -18
  186. package/templates/nodejs-express/pro/clean/infra/main.tf.hbs +0 -83
  187. package/templates/nodejs-express/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  188. package/templates/nodejs-express/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  189. package/templates/nodejs-express/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  190. package/templates/nodejs-express/pro/clean/package.json.hbs +0 -55
  191. package/templates/nodejs-express/pro/clean/src/application/services/AuthService.ts.hbs +0 -66
  192. package/templates/nodejs-express/pro/clean/src/domain/entities/User.ts.hbs +0 -38
  193. package/templates/nodejs-express/pro/clean/src/domain/repositories/IUserRepository.ts.hbs +0 -13
  194. package/templates/nodejs-express/pro/clean/src/domain/usecases/LoginUserUseCase.ts.hbs +0 -39
  195. package/templates/nodejs-express/pro/clean/src/domain/usecases/RegisterUserUseCase.ts.hbs +0 -51
  196. package/templates/nodejs-express/pro/clean/src/index.ts.hbs +0 -40
  197. package/templates/nodejs-express/pro/clean/src/infrastructure/database/InMemoryUserRepository.ts.hbs +0 -46
  198. package/templates/nodejs-express/pro/clean/src/infrastructure/http/controllers/AuthController.ts.hbs +0 -45
  199. package/templates/nodejs-express/pro/clean/src/infrastructure/http/middlewares/AuthMiddleware.ts.hbs +0 -27
  200. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/PasswordHasher.ts.hbs +0 -14
  201. package/templates/nodejs-express/pro/clean/src/infrastructure/providers/TokenGenerator.ts.hbs +0 -25
  202. package/templates/nodejs-express/pro/clean/tsconfig.json.hbs +0 -27
  203. package/templates/nodejs-express/pro/hexagonal/.env.example.hbs +0 -19
  204. package/templates/nodejs-express/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  205. package/templates/nodejs-express/pro/hexagonal/Dockerfile.hbs +0 -45
  206. package/templates/nodejs-express/pro/hexagonal/README.md.hbs +0 -42
  207. package/templates/nodejs-express/pro/hexagonal/docker-compose.yml.hbs +0 -18
  208. package/templates/nodejs-express/pro/hexagonal/infra/main.tf.hbs +0 -83
  209. package/templates/nodejs-express/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  210. package/templates/nodejs-express/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  211. package/templates/nodejs-express/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  212. package/templates/nodejs-express/pro/hexagonal/package.json.hbs +0 -55
  213. package/templates/nodejs-express/pro/hexagonal/src/adapters/inbound/http/AuthController.ts.hbs +0 -48
  214. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/SecurityAdapters.ts.hbs +0 -31
  215. package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/persistence/InMemoryUserAdapter.ts.hbs +0 -38
  216. package/templates/nodejs-express/pro/hexagonal/src/core/AuthService.ts.hbs +0 -51
  217. package/templates/nodejs-express/pro/hexagonal/src/core/domain/entities/User.ts.hbs +0 -28
  218. package/templates/nodejs-express/pro/hexagonal/src/core/ports/inbound/IAuthPort.ts.hbs +0 -11
  219. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/ISecurityPorts.ts.hbs +0 -15
  220. package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/IUserRepositoryPort.ts.hbs +0 -13
  221. package/templates/nodejs-express/pro/hexagonal/src/index.ts.hbs +0 -41
  222. package/templates/nodejs-express/pro/hexagonal/tsconfig.json.hbs +0 -27
  223. package/templates/nodejs-express/pro/mvc/.env.example.hbs +0 -19
  224. package/templates/nodejs-express/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  225. package/templates/nodejs-express/pro/mvc/Dockerfile.hbs +0 -45
  226. package/templates/nodejs-express/pro/mvc/README.md.hbs +0 -85
  227. package/templates/nodejs-express/pro/mvc/docker-compose.yml.hbs +0 -18
  228. package/templates/nodejs-express/pro/mvc/infra/main.tf.hbs +0 -83
  229. package/templates/nodejs-express/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  230. package/templates/nodejs-express/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  231. package/templates/nodejs-express/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  232. package/templates/nodejs-express/pro/mvc/package.json.hbs +0 -55
  233. package/templates/nodejs-express/pro/mvc/src/app.ts.hbs +0 -34
  234. package/templates/nodejs-express/pro/mvc/src/config/database.ts.hbs +0 -10
  235. package/templates/nodejs-express/pro/mvc/src/controllers/auth.controller.ts.hbs +0 -91
  236. package/templates/nodejs-express/pro/mvc/src/controllers/healthController.ts.hbs +0 -20
  237. package/templates/nodejs-express/pro/mvc/src/controllers/payments.controller.ts.hbs +0 -72
  238. package/templates/nodejs-express/pro/mvc/src/index.ts.hbs +0 -12
  239. package/templates/nodejs-express/pro/mvc/src/middleware/errorHandler.ts.hbs +0 -22
  240. package/templates/nodejs-express/pro/mvc/src/middlewares/auth.middleware.ts.hbs +0 -31
  241. package/templates/nodejs-express/pro/mvc/src/models/.gitkeep +0 -0
  242. package/templates/nodejs-express/pro/mvc/src/routes/index.ts.hbs +0 -14
  243. package/templates/nodejs-express/pro/mvc/src/services/.gitkeep +0 -0
  244. package/templates/nodejs-express/pro/mvc/src/services/stripe.service.ts.hbs +0 -102
  245. package/templates/nodejs-express/pro/mvc/template.json +0 -18
  246. package/templates/nodejs-express/pro/mvc/tsconfig.json.hbs +0 -27
  247. package/templates/python-fastapi/free/mvc/README.md.hbs +0 -41
  248. package/templates/python-fastapi/free/mvc/app/controllers/health.py.hbs +0 -7
  249. package/templates/python-fastapi/free/mvc/app/controllers/items.py.hbs +0 -27
  250. package/templates/python-fastapi/free/mvc/app/main.py.hbs +0 -26
  251. package/templates/python-fastapi/free/mvc/app/models/item.py.hbs +0 -11
  252. package/templates/python-fastapi/free/mvc/app/schemas/item.py.hbs +0 -17
  253. package/templates/python-fastapi/free/mvc/app/services/item_service.py.hbs +0 -33
  254. package/templates/python-fastapi/free/mvc/requirements.txt.hbs +0 -4
  255. package/templates/python-fastapi/pro/clean/.env.example.hbs +0 -17
  256. package/templates/python-fastapi/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
  257. package/templates/python-fastapi/pro/clean/Dockerfile.hbs +0 -20
  258. package/templates/python-fastapi/pro/clean/app/domain/entities/user.py.hbs +0 -23
  259. package/templates/python-fastapi/pro/clean/app/domain/repositories/user_repository.py.hbs +0 -22
  260. package/templates/python-fastapi/pro/clean/app/domain/usecases/register_user.py.hbs +0 -30
  261. package/templates/python-fastapi/pro/clean/app/infrastructure/database/in_memory_repository.py.hbs +0 -26
  262. package/templates/python-fastapi/pro/clean/app/infrastructure/http/auth_controller.py.hbs +0 -26
  263. package/templates/python-fastapi/pro/clean/app/infrastructure/security/adapters.py.hbs +0 -23
  264. package/templates/python-fastapi/pro/clean/app/main.py.hbs +0 -10
  265. package/templates/python-fastapi/pro/clean/infra/main.tf.hbs +0 -83
  266. package/templates/python-fastapi/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
  267. package/templates/python-fastapi/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
  268. package/templates/python-fastapi/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
  269. package/templates/python-fastapi/pro/clean/requirements.txt.hbs +0 -12
  270. package/templates/python-fastapi/pro/hexagonal/.env.example.hbs +0 -17
  271. package/templates/python-fastapi/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
  272. package/templates/python-fastapi/pro/hexagonal/Dockerfile.hbs +0 -20
  273. package/templates/python-fastapi/pro/hexagonal/app/adapters/inbound/http_adapter.py.hbs +0 -29
  274. package/templates/python-fastapi/pro/hexagonal/app/core/domain/user.py.hbs +0 -15
  275. package/templates/python-fastapi/pro/hexagonal/app/core/ports.py.hbs +0 -25
  276. package/templates/python-fastapi/pro/hexagonal/app/core/service.py.hbs +0 -28
  277. package/templates/python-fastapi/pro/hexagonal/app/main.py.hbs +0 -22
  278. package/templates/python-fastapi/pro/hexagonal/infra/main.tf.hbs +0 -83
  279. package/templates/python-fastapi/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
  280. package/templates/python-fastapi/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
  281. package/templates/python-fastapi/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
  282. package/templates/python-fastapi/pro/hexagonal/requirements.txt.hbs +0 -12
  283. package/templates/python-fastapi/pro/mvc/.env.example.hbs +0 -17
  284. package/templates/python-fastapi/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
  285. package/templates/python-fastapi/pro/mvc/Dockerfile.hbs +0 -20
  286. package/templates/python-fastapi/pro/mvc/README.md.hbs +0 -41
  287. package/templates/python-fastapi/pro/mvc/app/controllers/auth.py.hbs +0 -46
  288. package/templates/python-fastapi/pro/mvc/app/controllers/health.py.hbs +0 -7
  289. package/templates/python-fastapi/pro/mvc/app/controllers/items.py.hbs +0 -21
  290. package/templates/python-fastapi/pro/mvc/app/controllers/payments.py.hbs +0 -32
  291. package/templates/python-fastapi/pro/mvc/app/main.py.hbs +0 -20
  292. package/templates/python-fastapi/pro/mvc/app/middleware/security.py.hbs +0 -39
  293. package/templates/python-fastapi/pro/mvc/app/models/item.py.hbs +0 -11
  294. package/templates/python-fastapi/pro/mvc/app/schemas/item.py.hbs +0 -16
  295. package/templates/python-fastapi/pro/mvc/app/services/item_service.py.hbs +0 -24
  296. package/templates/python-fastapi/pro/mvc/infra/main.tf.hbs +0 -83
  297. package/templates/python-fastapi/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
  298. package/templates/python-fastapi/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
  299. package/templates/python-fastapi/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
  300. package/templates/python-fastapi/pro/mvc/requirements.txt.hbs +0 -12
@@ -1,59 +0,0 @@
1
- package {{packageName}}.security;
2
-
3
- import io.jsonwebtoken.*;
4
- import io.jsonwebtoken.security.Keys;
5
- import org.springframework.beans.factory.annotation.Value;
6
- import org.springframework.stereotype.Component;
7
-
8
- import javax.crypto.SecretKey;
9
- import java.nio.charset.StandardCharsets;
10
- import java.util.Date;
11
-
12
- @Component
13
- public class JwtTokenProvider {
14
-
15
- @Value("${jwt.secret:your-super-secret-jwt-key-change-in-production}")
16
- private String jwtSecret;
17
-
18
- @Value("${jwt.expiration:604800000}")
19
- private long jwtExpiration; // 7 days in milliseconds
20
-
21
- private SecretKey getSigningKey() {
22
- return Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8));
23
- }
24
-
25
- public String generateToken(String userId, String email) {
26
- Date now = new Date();
27
- Date expiryDate = new Date(now.getTime() + jwtExpiration);
28
-
29
- return Jwts.builder()
30
- .subject(userId)
31
- .claim("email", email)
32
- .issuedAt(now)
33
- .expiration(expiryDate)
34
- .signWith(getSigningKey())
35
- .compact();
36
- }
37
-
38
- public String getUserIdFromToken(String token) {
39
- Claims claims = Jwts.parser()
40
- .verifyWith(getSigningKey())
41
- .build()
42
- .parseSignedClaims(token)
43
- .getPayload();
44
-
45
- return claims.getSubject();
46
- }
47
-
48
- public boolean validateToken(String token) {
49
- try {
50
- Jwts.parser()
51
- .verifyWith(getSigningKey())
52
- .build()
53
- .parseSignedClaims(token);
54
- return true;
55
- } catch (JwtException | IllegalArgumentException e) {
56
- return false;
57
- }
58
- }
59
- }
@@ -1,67 +0,0 @@
1
- package {{packageName}}.service;
2
-
3
- import com.stripe.Stripe;
4
- import com.stripe.exception.StripeException;
5
- import com.stripe.model.Customer;
6
- import com.stripe.model.checkout.Session;
7
- import com.stripe.param.CustomerCreateParams;
8
- import com.stripe.param.checkout.SessionCreateParams;
9
- import jakarta.annotation.PostConstruct;
10
- import org.springframework.beans.factory.annotation.Value;
11
- import org.springframework.stereotype.Service;
12
-
13
- @Service
14
- public class StripeService {
15
-
16
- @Value("${stripe.secret-key}")
17
- private String stripeSecretKey;
18
-
19
- @Value("${stripe.price-id}")
20
- private String priceId;
21
-
22
- @Value("${frontend.url}")
23
- private String frontendUrl;
24
-
25
- @PostConstruct
26
- public void init() {
27
- Stripe.apiKey = stripeSecretKey;
28
- }
29
-
30
- public Session createCheckoutSession(String customerId) throws StripeException {
31
- SessionCreateParams.Builder paramsBuilder = SessionCreateParams.builder()
32
- .setMode(SessionCreateParams.Mode.SUBSCRIPTION)
33
- .setSuccessUrl(frontendUrl + "/success?session_id={CHECKOUT_SESSION_ID}")
34
- .setCancelUrl(frontendUrl + "/cancel")
35
- .addLineItem(
36
- SessionCreateParams.LineItem.builder()
37
- .setPrice(priceId)
38
- .setQuantity(1L)
39
- .build()
40
- );
41
-
42
- if (customerId != null && !customerId.isEmpty()) {
43
- paramsBuilder.setCustomer(customerId);
44
- }
45
-
46
- return Session.create(paramsBuilder.build());
47
- }
48
-
49
- public com.stripe.model.billingportal.Session createPortalSession(String customerId) throws StripeException {
50
- com.stripe.param.billingportal.SessionCreateParams params =
51
- com.stripe.param.billingportal.SessionCreateParams.builder()
52
- .setCustomer(customerId)
53
- .setReturnUrl(frontendUrl + "/dashboard")
54
- .build();
55
-
56
- return com.stripe.model.billingportal.Session.create(params);
57
- }
58
-
59
- public Customer createCustomer(String email, String name) throws StripeException {
60
- CustomerCreateParams params = CustomerCreateParams.builder()
61
- .setEmail(email)
62
- .setName(name)
63
- .build();
64
-
65
- return Customer.create(params);
66
- }
67
- }
@@ -1,13 +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
- }
12
-
13
- }
@@ -1,32 +0,0 @@
1
- spring:
2
- application:
3
- name: {{projectNameKebabCase}}
4
-
5
- datasource:
6
- url: jdbc:postgresql://localhost:5432/{{projectNameSnakeCase}}
7
- username: postgres
8
- password: postgres
9
- driver-class-name: org.postgresql.Driver
10
-
11
- jpa:
12
- hibernate:
13
- ddl-auto: update
14
- show-sql: true
15
- properties:
16
- hibernate:
17
- format_sql: true
18
- dialect: org.hibernate.dialect.PostgreSQLDialect
19
-
20
- # H2 Console (for development)
21
- h2:
22
- console:
23
- enabled: true
24
- path: /h2-console
25
-
26
- server:
27
- port: 8080
28
-
29
- logging:
30
- level:
31
- root: INFO
32
- {{packageName}}: DEBUG
@@ -1,13 +0,0 @@
1
- package {{packageName}};
2
-
3
- import org.junit.jupiter.api.Test;
4
- import org.springframework.boot.test.context.SpringBootTest;
5
-
6
- @SpringBootTest
7
- class {{projectNamePascalCase}}ApplicationTests {
8
-
9
- @Test
10
- void contextLoads() {
11
- }
12
-
13
- }
@@ -1,10 +0,0 @@
1
- spring:
2
- datasource:
3
- url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
4
- driver-class-name: org.h2.Driver
5
- username: sa
6
- password: password
7
- jpa:
8
- database-platform: org.hibernate.dialect.H2Dialect
9
- hibernate:
10
- ddl-auto: create-drop
@@ -1,14 +0,0 @@
1
- {
2
- "name": "Java Spring Boot MVC",
3
- "tier": "free",
4
- "stack": "java-spring",
5
- "version": "1.0.0",
6
- "description": "Spring Boot 4 REST API with Java 21 and MVC architecture",
7
- "targetVersions": {
8
- "java": "21",
9
- "springBoot": "^4.0.0",
10
- "maven": "^3.9.0"
11
- },
12
- "requiredConfig": ["projectName", "packageName"],
13
- "optionalConfig": ["useAI", "buildTool"]
14
- }
@@ -1,28 +0,0 @@
1
- # {{projectName}}
2
-
3
- > Generated by [Kybernus CLI](https://kybernus.dev) 🚀 (Free)
4
-
5
- ## Stack
6
-
7
- - **Framework**: NestJS
8
- - **Language**: TypeScript
9
- - **Validation**: class-validator
10
-
11
- ## Quick Start
12
-
13
- ```bash
14
- npm install
15
- npm run dev
16
- ```
17
-
18
- ## API Endpoints
19
-
20
- - `GET /api/health` - Health check
21
- - `GET /api/items` - List items
22
- - `POST /api/items` - Create item
23
- - `GET /api/items/:id` - Get item
24
- - `DELETE /api/items/:id` - Delete item
25
-
26
- ---
27
-
28
- Made with ❤️ using [Kybernus](https://kybernus.dev)
@@ -1,29 +0,0 @@
1
- {
2
- "name": "{{kebabCase projectName}}",
3
- "version": "1.0.0",
4
- "description": "Generated by Kybernus CLI",
5
- "scripts": {
6
- "dev": "nest start --watch",
7
- "build": "nest build",
8
- "start": "node dist/main.js",
9
- "lint": "eslint \"{src,test}/**/*.ts\"",
10
- "test": "jest"
11
- },
12
- "dependencies": {
13
- "@nestjs/common": "^10.3.0",
14
- "@nestjs/core": "^10.3.0",
15
- "@nestjs/config": "^3.1.1",
16
- "@nestjs/platform-express": "^10.3.0",
17
- "class-transformer": "^0.5.1",
18
- "class-validator": "^0.14.1",
19
- "reflect-metadata": "^0.2.1",
20
- "rxjs": "^7.8.1",
21
- "uuid": "^9.0.1"
22
- },
23
- "devDependencies": {
24
- "@nestjs/cli": "^10.3.0",
25
- "@types/node": "^20.11.0",
26
- "@types/uuid": "^9.0.7",
27
- "typescript": "^5.3.3"
28
- }
29
- }
@@ -1,13 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
- import { ConfigModule } from '@nestjs/config';
3
- import { ItemsModule } from './modules/items.module';
4
- import { HealthController } from './controllers/health.controller';
5
-
6
- @Module({
7
- imports: [
8
- ConfigModule.forRoot({ isGlobal: true }),
9
- ItemsModule,
10
- ],
11
- controllers: [HealthController],
12
- })
13
- export class AppModule {}
@@ -1,9 +0,0 @@
1
- import { Controller, Get } from '@nestjs/common';
2
-
3
- @Controller()
4
- export class HealthController {
5
- @Get('health')
6
- health() {
7
- return { status: 'ok' };
8
- }
9
- }
@@ -1,32 +0,0 @@
1
- import { Controller, Get, Post, Delete, Param, Body, NotFoundException } from '@nestjs/common';
2
- import { ItemsService } from '../services/items.service';
3
- import { CreateItemDto } from '../models/create-item.dto';
4
-
5
- @Controller('items')
6
- export class ItemsController {
7
- constructor(private readonly itemsService: ItemsService) {}
8
-
9
- @Get()
10
- findAll() {
11
- return this.itemsService.findAll();
12
- }
13
-
14
- @Get(':id')
15
- findOne(@Param('id') id: string) {
16
- const item = this.itemsService.findOne(id);
17
- if (!item) throw new NotFoundException('Item not found');
18
- return item;
19
- }
20
-
21
- @Post()
22
- create(@Body() createItemDto: CreateItemDto) {
23
- return this.itemsService.create(createItemDto);
24
- }
25
-
26
- @Delete(':id')
27
- remove(@Param('id') id: string) {
28
- const deleted = this.itemsService.remove(id);
29
- if (!deleted) throw new NotFoundException('Item not found');
30
- return { message: 'Item deleted' };
31
- }
32
- }
@@ -1,17 +0,0 @@
1
- import { NestFactory } from '@nestjs/core';
2
- import { AppModule } from './app.module';
3
- import { ValidationPipe } from '@nestjs/common';
4
-
5
- async function bootstrap() {
6
- const app = await NestFactory.create(AppModule);
7
-
8
- app.enableCors();
9
- app.setGlobalPrefix('api');
10
- app.useGlobalPipes(new ValidationPipe({ whitelist: true }));
11
-
12
- const port = process.env.PORT || 3000;
13
- await app.listen(port);
14
-
15
- console.log(`🚀 {{pascalCase projectName}} running on port ${port}`);
16
- }
17
- bootstrap();
@@ -1,10 +0,0 @@
1
- import { IsString, IsOptional } from 'class-validator';
2
-
3
- export class CreateItemDto {
4
- @IsString()
5
- name: string;
6
-
7
- @IsString()
8
- @IsOptional()
9
- description?: string;
10
- }
@@ -1,6 +0,0 @@
1
- export interface Item {
2
- id: string;
3
- name: string;
4
- description?: string;
5
- createdAt: Date;
6
- }
@@ -1,9 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
- import { ItemsController } from '../controllers/items.controller';
3
- import { ItemsService } from '../services/items.service';
4
-
5
- @Module({
6
- controllers: [ItemsController],
7
- providers: [ItemsService],
8
- })
9
- export class ItemsModule {}
@@ -1,32 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { CreateItemDto } from '../models/create-item.dto';
3
- import { Item } from '../models/item.model';
4
- import { v4 as uuidv4 } from 'uuid';
5
-
6
- @Injectable()
7
- export class ItemsService {
8
- private items: Map<string, Item> = new Map();
9
-
10
- findAll(): Item[] {
11
- return Array.from(this.items.values());
12
- }
13
-
14
- findOne(id: string): Item | undefined {
15
- return this.items.get(id);
16
- }
17
-
18
- create(dto: CreateItemDto): Item {
19
- const item: Item = {
20
- id: uuidv4(),
21
- name: dto.name,
22
- description: dto.description,
23
- createdAt: new Date(),
24
- };
25
- this.items.set(item.id, item);
26
- return item;
27
- }
28
-
29
- remove(id: string): boolean {
30
- return this.items.delete(id);
31
- }
32
- }
@@ -1,21 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "module": "commonjs",
4
- "declaration": true,
5
- "removeComments": true,
6
- "emitDecoratorMetadata": true,
7
- "experimentalDecorators": true,
8
- "allowSyntheticDefaultImports": true,
9
- "target": "ES2021",
10
- "sourceMap": true,
11
- "outDir": "./dist",
12
- "baseUrl": "./",
13
- "incremental": true,
14
- "skipLibCheck": true,
15
- "strictNullChecks": true,
16
- "noImplicitAny": true,
17
- "strictBindCallApply": true,
18
- "forceConsistentCasingInFileNames": true,
19
- "noFallthroughCasesInSwitch": true
20
- }
21
- }
@@ -1,19 +0,0 @@
1
- # {{projectName}} Environment Variables
2
-
3
- # Server
4
- NODE_ENV=development
5
- PORT=3000
6
-
7
- # Database
8
- DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectNameSnakeCase}}
9
-
10
- # Authentication
11
- JWT_SECRET=your-super-secret-jwt-key-change-in-production
12
-
13
- # Stripe
14
- STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
15
- STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
16
- STRIPE_PRICE_ID=price_your_price_id
17
-
18
- # Frontend URL (for redirects)
19
- FRONTEND_URL=http://localhost:3001
@@ -1,88 +0,0 @@
1
- name: CI/CD Pipeline
2
-
3
- on:
4
- push:
5
- branches: [main, develop]
6
- pull_request:
7
- branches: [main]
8
-
9
- env:
10
- NODE_VERSION: '20'
11
- AWS_REGION: 'us-east-1'
12
-
13
- jobs:
14
- test:
15
- runs-on: ubuntu-latest
16
-
17
- steps:
18
- - uses: actions/checkout@v4
19
-
20
- - name: Setup Node.js
21
- uses: actions/setup-node@v4
22
- with:
23
- node-version: $\{{ env.NODE_VERSION }}
24
- cache: 'npm'
25
-
26
- - name: Install dependencies
27
- run: npm ci
28
-
29
- - name: Run linter
30
- run: npm run lint --if-present
31
-
32
- - name: Run tests
33
- run: npm test --if-present
34
-
35
- - name: Build
36
- run: npm run build
37
-
38
- build-and-push:
39
- needs: test
40
- runs-on: ubuntu-latest
41
- if: github.ref == 'refs/heads/main'
42
-
43
- steps:
44
- - uses: actions/checkout@v4
45
-
46
- - name: Configure AWS credentials
47
- uses: aws-actions/configure-aws-credentials@v4
48
- with:
49
- aws-access-key-id: $\{{ secrets.AWS_ACCESS_KEY_ID }}
50
- aws-secret-access-key: $\{{ secrets.AWS_SECRET_ACCESS_KEY }}
51
- aws-region: $\{{ env.AWS_REGION }}
52
-
53
- - name: Login to Amazon ECR
54
- id: login-ecr
55
- uses: aws-actions/amazon-ecr-login@v2
56
-
57
- - name: Build, tag, and push image to Amazon ECR
58
- env:
59
- ECR_REGISTRY: $\{{ steps.login-ecr.outputs.registry }}
60
- ECR_REPOSITORY: {{projectNameKebabCase}}
61
- IMAGE_TAG: $\{{ github.sha }}
62
- run: |
63
- docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
64
- docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:latest .
65
- docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
66
- docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
67
-
68
- deploy:
69
- needs: build-and-push
70
- runs-on: ubuntu-latest
71
- if: github.ref == 'refs/heads/main'
72
-
73
- steps:
74
- - uses: actions/checkout@v4
75
-
76
- - name: Configure AWS credentials
77
- uses: aws-actions/configure-aws-credentials@v4
78
- with:
79
- aws-access-key-id: $\{{ secrets.AWS_ACCESS_KEY_ID }}
80
- aws-secret-access-key: $\{{ secrets.AWS_SECRET_ACCESS_KEY }}
81
- aws-region: $\{{ env.AWS_REGION }}
82
-
83
- - name: Deploy to ECS
84
- run: |
85
- aws ecs update-service \
86
- --cluster {{projectNameKebabCase}}-prod \
87
- --service {{projectNameKebabCase}}-api \
88
- --force-new-deployment
@@ -1,45 +0,0 @@
1
- # Production Dockerfile for {{projectName}}
2
-
3
- # Build stage
4
- FROM node:20-alpine AS builder
5
-
6
- WORKDIR /app
7
-
8
- # Copy package files
9
- COPY package*.json ./
10
-
11
- # Install dependencies
12
- RUN npm ci --only=production
13
-
14
- # Copy source code
15
- COPY . .
16
-
17
- # Build TypeScript
18
- RUN npm run build
19
-
20
- # Production stage
21
- FROM node:20-alpine AS production
22
-
23
- WORKDIR /app
24
-
25
- # Create non-root user
26
- RUN addgroup -g 1001 -S nodejs && \
27
- adduser -S nodejs -u 1001
28
-
29
- # Copy built application
30
- COPY --from=builder --chown=nodejs:nodejs /app/dist ./dist
31
- COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
32
- COPY --from=builder --chown=nodejs:nodejs /app/package.json ./
33
-
34
- # Switch to non-root user
35
- USER nodejs
36
-
37
- # Expose port
38
- EXPOSE 3000
39
-
40
- # Health check
41
- HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
42
- CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
43
-
44
- # Start application
45
- CMD ["node", "dist/index.js"]
@@ -1,83 +0,0 @@
1
- # Terraform Infrastructure for {{projectName}}
2
-
3
- terraform {
4
- required_version = ">= 1.0.0"
5
-
6
- required_providers {
7
- aws = {
8
- source = "hashicorp/aws"
9
- version = "~> 5.0"
10
- }
11
- }
12
-
13
- # Uncomment for remote state (recommended for production)
14
- # backend "s3" {
15
- # bucket = "your-terraform-state-bucket"
16
- # key = "{{projectNameKebabCase}}/terraform.tfstate"
17
- # region = "us-east-1"
18
- # encrypt = true
19
- # dynamodb_table = "terraform-locks"
20
- # }
21
- }
22
-
23
- provider "aws" {
24
- region = var.aws_region
25
- }
26
-
27
- # Variables
28
- variable "aws_region" {
29
- description = "AWS region"
30
- type = string
31
- default = "us-east-1"
32
- }
33
-
34
- variable "environment" {
35
- description = "Environment name (dev, staging, prod)"
36
- type = string
37
- default = "dev"
38
- }
39
-
40
- variable "app_name" {
41
- description = "Application name"
42
- type = string
43
- default = "{{projectNameKebabCase}}"
44
- }
45
-
46
- # VPC
47
- module "vpc" {
48
- source = "./modules/vpc"
49
-
50
- app_name = var.app_name
51
- environment = var.environment
52
- }
53
-
54
- # ECS Cluster
55
- module "ecs" {
56
- source = "./modules/ecs"
57
-
58
- app_name = var.app_name
59
- environment = var.environment
60
- vpc_id = module.vpc.vpc_id
61
- subnet_ids = module.vpc.private_subnet_ids
62
- }
63
-
64
- # RDS PostgreSQL
65
- module "rds" {
66
- source = "./modules/rds"
67
-
68
- app_name = var.app_name
69
- environment = var.environment
70
- vpc_id = module.vpc.vpc_id
71
- subnet_ids = module.vpc.private_subnet_ids
72
- security_group_id = module.vpc.db_security_group_id
73
- }
74
-
75
- # Outputs
76
- output "ecs_cluster_name" {
77
- value = module.ecs.cluster_name
78
- }
79
-
80
- output "rds_endpoint" {
81
- value = module.rds.endpoint
82
- sensitive = true
83
- }