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.
- package/README.md +48 -263
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/upgrade.js +2 -2
- package/dist/cli/prompts/wizard.d.ts +14 -1
- package/dist/cli/prompts/wizard.d.ts.map +1 -1
- package/dist/cli/prompts/wizard.js +45 -9
- package/dist/cli/prompts/wizard.js.map +1 -1
- package/dist/core/generator/project.d.ts +8 -0
- package/dist/core/generator/project.d.ts.map +1 -1
- package/dist/core/generator/project.js +41 -2
- package/dist/core/generator/project.js.map +1 -1
- package/dist/core/templates/downloader.d.ts +32 -0
- package/dist/core/templates/downloader.d.ts.map +1 -0
- package/dist/core/templates/downloader.js +95 -0
- package/dist/core/templates/downloader.js.map +1 -0
- package/dist/models/config.d.ts +1 -0
- package/dist/models/config.d.ts.map +1 -1
- package/package.json +6 -2
- package/templates/java-spring/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/java-spring/pro/clean/Dockerfile.hbs +0 -45
- package/templates/java-spring/pro/clean/README.md.hbs +0 -31
- package/templates/java-spring/pro/clean/docker-compose.yml.hbs +0 -18
- package/templates/java-spring/pro/clean/infra/main.tf.hbs +0 -83
- package/templates/java-spring/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/java-spring/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/java-spring/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/java-spring/pro/clean/pom.xml.hbs +0 -130
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +0 -36
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +0 -77
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +0 -15
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +0 -36
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +0 -46
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +0 -41
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +0 -53
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +0 -41
- package/templates/java-spring/pro/clean/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -14
- package/templates/java-spring/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/java-spring/pro/hexagonal/Dockerfile.hbs +0 -45
- package/templates/java-spring/pro/hexagonal/README.md.hbs +0 -38
- package/templates/java-spring/pro/hexagonal/docker-compose.yml.hbs +0 -18
- package/templates/java-spring/pro/hexagonal/infra/main.tf.hbs +0 -83
- package/templates/java-spring/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/java-spring/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/java-spring/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/java-spring/pro/hexagonal/pom.xml.hbs +0 -130
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/application/service/AuthService.java.hbs +0 -36
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/entity/User.java.hbs +0 -77
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/repository/UserRepository.java.hbs +0 -15
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/LoginUserUseCase.java.hbs +0 -36
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/domain/usecase/RegisterUserUseCase.java.hbs +0 -46
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/persistence/InMemoryUserRepository.java.hbs +0 -41
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/security/SecurityAdapters.java.hbs +0 -53
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/infrastructure/web/controller/AuthController.java.hbs +0 -41
- package/templates/java-spring/pro/hexagonal/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -14
- package/templates/java-spring/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/java-spring/pro/mvc/Dockerfile.hbs +0 -45
- package/templates/java-spring/pro/mvc/README.md.hbs +0 -116
- package/templates/java-spring/pro/mvc/docker-compose.yml.hbs +0 -18
- package/templates/java-spring/pro/mvc/infra/main.tf.hbs +0 -83
- package/templates/java-spring/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/java-spring/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/java-spring/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/java-spring/pro/mvc/pom.xml.hbs +0 -130
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/GlobalExceptionHandler.java.hbs +0 -39
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/SecurityConfig.java.hbs +0 -44
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/config/WebConfig.java.hbs +0 -30
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/AuthController.java.hbs +0 -69
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/HealthController.java.hbs +0 -30
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/controller/PaymentsController.java.hbs +0 -49
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthRequest.java.hbs +0 -3
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/dto/AuthResponse.java.hbs +0 -3
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/model/.gitkeep +0 -0
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/repository/.gitkeep +0 -0
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtAuthenticationFilter.java.hbs +0 -56
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/security/JwtTokenProvider.java.hbs +0 -59
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/.gitkeep +0 -0
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/service/StripeService.java.hbs +0 -67
- package/templates/java-spring/pro/mvc/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +0 -13
- package/templates/java-spring/pro/mvc/src/main/resources/application.yml.hbs +0 -32
- package/templates/java-spring/pro/mvc/src/test/java/{{packagePath}}/{{projectNamePascalCase}}ApplicationTests.java.hbs +0 -13
- package/templates/java-spring/pro/mvc/src/test/resources/application.yml.hbs +0 -10
- package/templates/java-spring/pro/mvc/template.json +0 -14
- package/templates/nestjs/free/mvc/README.md.hbs +0 -28
- package/templates/nestjs/free/mvc/package.json.hbs +0 -29
- package/templates/nestjs/free/mvc/src/app.module.ts.hbs +0 -13
- package/templates/nestjs/free/mvc/src/controllers/health.controller.ts.hbs +0 -9
- package/templates/nestjs/free/mvc/src/controllers/items.controller.ts.hbs +0 -32
- package/templates/nestjs/free/mvc/src/main.ts.hbs +0 -17
- package/templates/nestjs/free/mvc/src/models/create-item.dto.ts.hbs +0 -10
- package/templates/nestjs/free/mvc/src/models/item.model.ts.hbs +0 -6
- package/templates/nestjs/free/mvc/src/modules/items.module.ts.hbs +0 -9
- package/templates/nestjs/free/mvc/src/services/items.service.ts.hbs +0 -32
- package/templates/nestjs/free/mvc/tsconfig.json.hbs +0 -21
- package/templates/nestjs/pro/clean/.env.example.hbs +0 -19
- package/templates/nestjs/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nestjs/pro/clean/Dockerfile.hbs +0 -45
- package/templates/nestjs/pro/clean/infra/main.tf.hbs +0 -83
- package/templates/nestjs/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nestjs/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nestjs/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nestjs/pro/clean/package.json.hbs +0 -37
- package/templates/nestjs/pro/clean/src/auth.module.ts.hbs +0 -17
- package/templates/nestjs/pro/clean/src/domain/entities/user.entity.ts.hbs +0 -12
- package/templates/nestjs/pro/clean/src/domain/repositories/user.repository.ts.hbs +0 -6
- package/templates/nestjs/pro/clean/src/domain/use-cases/register.use-case.ts.hbs +0 -18
- package/templates/nestjs/pro/clean/src/infrastructure/database/in-memory.repository.ts.hbs +0 -17
- package/templates/nestjs/pro/clean/src/infrastructure/http/auth.controller.ts.hbs +0 -16
- package/templates/nestjs/pro/clean/tsconfig.json.hbs +0 -21
- package/templates/nestjs/pro/hexagonal/.env.example.hbs +0 -19
- package/templates/nestjs/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nestjs/pro/hexagonal/Dockerfile.hbs +0 -45
- package/templates/nestjs/pro/hexagonal/infra/main.tf.hbs +0 -83
- package/templates/nestjs/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nestjs/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nestjs/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nestjs/pro/hexagonal/package.json.hbs +0 -37
- package/templates/nestjs/pro/hexagonal/src/adapters/inbound/http.adapter.ts.hbs +0 -12
- package/templates/nestjs/pro/hexagonal/src/adapters/outbound/persistence.adapter.ts.hbs +0 -13
- package/templates/nestjs/pro/hexagonal/src/auth.module.ts.hbs +0 -19
- package/templates/nestjs/pro/hexagonal/src/core/auth.service.ts.hbs +0 -16
- package/templates/nestjs/pro/hexagonal/src/core/domain/user.entity.ts.hbs +0 -8
- package/templates/nestjs/pro/hexagonal/src/core/ports/ports.ts.hbs +0 -9
- package/templates/nestjs/pro/hexagonal/tsconfig.json.hbs +0 -21
- package/templates/nestjs/pro/mvc/.env.example.hbs +0 -19
- package/templates/nestjs/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nestjs/pro/mvc/Dockerfile.hbs +0 -45
- package/templates/nestjs/pro/mvc/README.md.hbs +0 -28
- package/templates/nestjs/pro/mvc/infra/main.tf.hbs +0 -83
- package/templates/nestjs/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nestjs/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nestjs/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nestjs/pro/mvc/package.json.hbs +0 -37
- package/templates/nestjs/pro/mvc/src/app.module.ts.hbs +0 -17
- package/templates/nestjs/pro/mvc/src/auth/auth.controller.ts.hbs +0 -35
- package/templates/nestjs/pro/mvc/src/auth/auth.module.ts.hbs +0 -25
- package/templates/nestjs/pro/mvc/src/auth/auth.service.ts.hbs +0 -55
- package/templates/nestjs/pro/mvc/src/auth/jwt.strategy.ts.hbs +0 -19
- package/templates/nestjs/pro/mvc/src/controllers/health.controller.ts.hbs +0 -9
- package/templates/nestjs/pro/mvc/src/controllers/items.controller.ts.hbs +0 -32
- package/templates/nestjs/pro/mvc/src/main.ts.hbs +0 -17
- package/templates/nestjs/pro/mvc/src/models/create-item.dto.ts.hbs +0 -10
- package/templates/nestjs/pro/mvc/src/models/item.model.ts.hbs +0 -6
- package/templates/nestjs/pro/mvc/src/modules/items.module.ts.hbs +0 -9
- package/templates/nestjs/pro/mvc/src/payments/payments.controller.ts.hbs +0 -26
- package/templates/nestjs/pro/mvc/src/payments/payments.module.ts.hbs +0 -11
- package/templates/nestjs/pro/mvc/src/payments/payments.service.ts.hbs +0 -43
- package/templates/nestjs/pro/mvc/src/services/items.service.ts.hbs +0 -32
- package/templates/nestjs/pro/mvc/tsconfig.json.hbs +0 -21
- package/templates/nextjs/pro/default/.env.example.hbs +0 -20
- package/templates/nextjs/pro/default/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nextjs/pro/default/Dockerfile.hbs +0 -45
- package/templates/nextjs/pro/default/README.md.hbs +0 -96
- package/templates/nextjs/pro/default/docker-compose.yml.hbs +0 -18
- package/templates/nextjs/pro/default/infra/main.tf.hbs +0 -83
- package/templates/nextjs/pro/default/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nextjs/pro/default/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nextjs/pro/default/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nextjs/pro/default/next.config.js.hbs +0 -4
- package/templates/nextjs/pro/default/package.json.hbs +0 -34
- package/templates/nextjs/pro/default/postcss.config.js.hbs +0 -6
- package/templates/nextjs/pro/default/prisma/schema.prisma.hbs +0 -18
- package/templates/nextjs/pro/default/public/.gitkeep +0 -0
- package/templates/nextjs/pro/default/src/app/api/auth/[...nextauth]/route.ts.hbs +0 -61
- package/templates/nextjs/pro/default/src/app/api/checkout/route.ts.hbs +0 -30
- package/templates/nextjs/pro/default/src/app/api/health/route.ts.hbs +0 -9
- package/templates/nextjs/pro/default/src/app/api/webhook/route.ts.hbs +0 -51
- package/templates/nextjs/pro/default/src/app/dashboard/page.tsx.hbs +0 -52
- package/templates/nextjs/pro/default/src/app/globals.css.hbs +0 -3
- package/templates/nextjs/pro/default/src/app/layout.tsx.hbs +0 -22
- package/templates/nextjs/pro/default/src/app/page.tsx.hbs +0 -38
- package/templates/nextjs/pro/default/src/components/.gitkeep +0 -0
- package/templates/nextjs/pro/default/src/components/AuthButton.tsx.hbs +0 -34
- package/templates/nextjs/pro/default/src/components/Providers.tsx.hbs +0 -7
- package/templates/nextjs/pro/default/src/lib/prisma.ts.hbs +0 -13
- package/templates/nextjs/pro/default/src/proxy.ts.hbs +0 -22
- package/templates/nextjs/pro/default/tailwind.config.ts.hbs +0 -15
- package/templates/nextjs/pro/default/template.json +0 -18
- package/templates/nextjs/pro/default/tsconfig.json.hbs +0 -40
- package/templates/nodejs-express/pro/clean/.env.example.hbs +0 -19
- package/templates/nodejs-express/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nodejs-express/pro/clean/Dockerfile.hbs +0 -45
- package/templates/nodejs-express/pro/clean/README.md.hbs +0 -41
- package/templates/nodejs-express/pro/clean/docker-compose.yml.hbs +0 -18
- package/templates/nodejs-express/pro/clean/infra/main.tf.hbs +0 -83
- package/templates/nodejs-express/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nodejs-express/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nodejs-express/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nodejs-express/pro/clean/package.json.hbs +0 -55
- package/templates/nodejs-express/pro/clean/src/application/services/AuthService.ts.hbs +0 -66
- package/templates/nodejs-express/pro/clean/src/domain/entities/User.ts.hbs +0 -38
- package/templates/nodejs-express/pro/clean/src/domain/repositories/IUserRepository.ts.hbs +0 -13
- package/templates/nodejs-express/pro/clean/src/domain/usecases/LoginUserUseCase.ts.hbs +0 -39
- package/templates/nodejs-express/pro/clean/src/domain/usecases/RegisterUserUseCase.ts.hbs +0 -51
- package/templates/nodejs-express/pro/clean/src/index.ts.hbs +0 -40
- package/templates/nodejs-express/pro/clean/src/infrastructure/database/InMemoryUserRepository.ts.hbs +0 -46
- package/templates/nodejs-express/pro/clean/src/infrastructure/http/controllers/AuthController.ts.hbs +0 -45
- package/templates/nodejs-express/pro/clean/src/infrastructure/http/middlewares/AuthMiddleware.ts.hbs +0 -27
- package/templates/nodejs-express/pro/clean/src/infrastructure/providers/PasswordHasher.ts.hbs +0 -14
- package/templates/nodejs-express/pro/clean/src/infrastructure/providers/TokenGenerator.ts.hbs +0 -25
- package/templates/nodejs-express/pro/clean/tsconfig.json.hbs +0 -27
- package/templates/nodejs-express/pro/hexagonal/.env.example.hbs +0 -19
- package/templates/nodejs-express/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nodejs-express/pro/hexagonal/Dockerfile.hbs +0 -45
- package/templates/nodejs-express/pro/hexagonal/README.md.hbs +0 -42
- package/templates/nodejs-express/pro/hexagonal/docker-compose.yml.hbs +0 -18
- package/templates/nodejs-express/pro/hexagonal/infra/main.tf.hbs +0 -83
- package/templates/nodejs-express/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nodejs-express/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nodejs-express/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nodejs-express/pro/hexagonal/package.json.hbs +0 -55
- package/templates/nodejs-express/pro/hexagonal/src/adapters/inbound/http/AuthController.ts.hbs +0 -48
- package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/SecurityAdapters.ts.hbs +0 -31
- package/templates/nodejs-express/pro/hexagonal/src/adapters/outbound/persistence/InMemoryUserAdapter.ts.hbs +0 -38
- package/templates/nodejs-express/pro/hexagonal/src/core/AuthService.ts.hbs +0 -51
- package/templates/nodejs-express/pro/hexagonal/src/core/domain/entities/User.ts.hbs +0 -28
- package/templates/nodejs-express/pro/hexagonal/src/core/ports/inbound/IAuthPort.ts.hbs +0 -11
- package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/ISecurityPorts.ts.hbs +0 -15
- package/templates/nodejs-express/pro/hexagonal/src/core/ports/outbound/IUserRepositoryPort.ts.hbs +0 -13
- package/templates/nodejs-express/pro/hexagonal/src/index.ts.hbs +0 -41
- package/templates/nodejs-express/pro/hexagonal/tsconfig.json.hbs +0 -27
- package/templates/nodejs-express/pro/mvc/.env.example.hbs +0 -19
- package/templates/nodejs-express/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/nodejs-express/pro/mvc/Dockerfile.hbs +0 -45
- package/templates/nodejs-express/pro/mvc/README.md.hbs +0 -85
- package/templates/nodejs-express/pro/mvc/docker-compose.yml.hbs +0 -18
- package/templates/nodejs-express/pro/mvc/infra/main.tf.hbs +0 -83
- package/templates/nodejs-express/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/nodejs-express/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/nodejs-express/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/nodejs-express/pro/mvc/package.json.hbs +0 -55
- package/templates/nodejs-express/pro/mvc/src/app.ts.hbs +0 -34
- package/templates/nodejs-express/pro/mvc/src/config/database.ts.hbs +0 -10
- package/templates/nodejs-express/pro/mvc/src/controllers/auth.controller.ts.hbs +0 -91
- package/templates/nodejs-express/pro/mvc/src/controllers/healthController.ts.hbs +0 -20
- package/templates/nodejs-express/pro/mvc/src/controllers/payments.controller.ts.hbs +0 -72
- package/templates/nodejs-express/pro/mvc/src/index.ts.hbs +0 -12
- package/templates/nodejs-express/pro/mvc/src/middleware/errorHandler.ts.hbs +0 -22
- package/templates/nodejs-express/pro/mvc/src/middlewares/auth.middleware.ts.hbs +0 -31
- package/templates/nodejs-express/pro/mvc/src/models/.gitkeep +0 -0
- package/templates/nodejs-express/pro/mvc/src/routes/index.ts.hbs +0 -14
- package/templates/nodejs-express/pro/mvc/src/services/.gitkeep +0 -0
- package/templates/nodejs-express/pro/mvc/src/services/stripe.service.ts.hbs +0 -102
- package/templates/nodejs-express/pro/mvc/template.json +0 -18
- package/templates/nodejs-express/pro/mvc/tsconfig.json.hbs +0 -27
- package/templates/python-fastapi/free/mvc/README.md.hbs +0 -41
- package/templates/python-fastapi/free/mvc/app/controllers/health.py.hbs +0 -7
- package/templates/python-fastapi/free/mvc/app/controllers/items.py.hbs +0 -27
- package/templates/python-fastapi/free/mvc/app/main.py.hbs +0 -26
- package/templates/python-fastapi/free/mvc/app/models/item.py.hbs +0 -11
- package/templates/python-fastapi/free/mvc/app/schemas/item.py.hbs +0 -17
- package/templates/python-fastapi/free/mvc/app/services/item_service.py.hbs +0 -33
- package/templates/python-fastapi/free/mvc/requirements.txt.hbs +0 -4
- package/templates/python-fastapi/pro/clean/.env.example.hbs +0 -17
- package/templates/python-fastapi/pro/clean/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/python-fastapi/pro/clean/Dockerfile.hbs +0 -20
- package/templates/python-fastapi/pro/clean/app/domain/entities/user.py.hbs +0 -23
- package/templates/python-fastapi/pro/clean/app/domain/repositories/user_repository.py.hbs +0 -22
- package/templates/python-fastapi/pro/clean/app/domain/usecases/register_user.py.hbs +0 -30
- package/templates/python-fastapi/pro/clean/app/infrastructure/database/in_memory_repository.py.hbs +0 -26
- package/templates/python-fastapi/pro/clean/app/infrastructure/http/auth_controller.py.hbs +0 -26
- package/templates/python-fastapi/pro/clean/app/infrastructure/security/adapters.py.hbs +0 -23
- package/templates/python-fastapi/pro/clean/app/main.py.hbs +0 -10
- package/templates/python-fastapi/pro/clean/infra/main.tf.hbs +0 -83
- package/templates/python-fastapi/pro/clean/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/python-fastapi/pro/clean/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/python-fastapi/pro/clean/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/python-fastapi/pro/clean/requirements.txt.hbs +0 -12
- package/templates/python-fastapi/pro/hexagonal/.env.example.hbs +0 -17
- package/templates/python-fastapi/pro/hexagonal/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/python-fastapi/pro/hexagonal/Dockerfile.hbs +0 -20
- package/templates/python-fastapi/pro/hexagonal/app/adapters/inbound/http_adapter.py.hbs +0 -29
- package/templates/python-fastapi/pro/hexagonal/app/core/domain/user.py.hbs +0 -15
- package/templates/python-fastapi/pro/hexagonal/app/core/ports.py.hbs +0 -25
- package/templates/python-fastapi/pro/hexagonal/app/core/service.py.hbs +0 -28
- package/templates/python-fastapi/pro/hexagonal/app/main.py.hbs +0 -22
- package/templates/python-fastapi/pro/hexagonal/infra/main.tf.hbs +0 -83
- package/templates/python-fastapi/pro/hexagonal/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/python-fastapi/pro/hexagonal/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/python-fastapi/pro/hexagonal/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/python-fastapi/pro/hexagonal/requirements.txt.hbs +0 -12
- package/templates/python-fastapi/pro/mvc/.env.example.hbs +0 -17
- package/templates/python-fastapi/pro/mvc/.github/workflows/ci-cd.yml.hbs +0 -88
- package/templates/python-fastapi/pro/mvc/Dockerfile.hbs +0 -20
- package/templates/python-fastapi/pro/mvc/README.md.hbs +0 -41
- package/templates/python-fastapi/pro/mvc/app/controllers/auth.py.hbs +0 -46
- package/templates/python-fastapi/pro/mvc/app/controllers/health.py.hbs +0 -7
- package/templates/python-fastapi/pro/mvc/app/controllers/items.py.hbs +0 -21
- package/templates/python-fastapi/pro/mvc/app/controllers/payments.py.hbs +0 -32
- package/templates/python-fastapi/pro/mvc/app/main.py.hbs +0 -20
- package/templates/python-fastapi/pro/mvc/app/middleware/security.py.hbs +0 -39
- package/templates/python-fastapi/pro/mvc/app/models/item.py.hbs +0 -11
- package/templates/python-fastapi/pro/mvc/app/schemas/item.py.hbs +0 -16
- package/templates/python-fastapi/pro/mvc/app/services/item_service.py.hbs +0 -24
- package/templates/python-fastapi/pro/mvc/infra/main.tf.hbs +0 -83
- package/templates/python-fastapi/pro/mvc/infra/modules/ecs/main.tf.hbs +0 -54
- package/templates/python-fastapi/pro/mvc/infra/modules/rds/main.tf.hbs +0 -88
- package/templates/python-fastapi/pro/mvc/infra/modules/vpc/main.tf.hbs +0 -107
- package/templates/python-fastapi/pro/mvc/requirements.txt.hbs +0 -12
package/README.md
CHANGED
|
@@ -1,321 +1,106 @@
|
|
|
1
1
|
# Kybernus CLI 🚀
|
|
2
2
|
|
|
3
|
-
[](https://github.com/ViniMTrevisan/Kybernus-CLI/actions)
|
|
4
|
-
[](https://www.npmjs.com/package/kybernus)
|
|
5
|
-
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
|
|
7
3
|
**The Ultimate Backend Scaffolding Tool for Modern Developers.**
|
|
8
4
|
|
|
9
|
-
Build production-ready applications in minutes
|
|
5
|
+
Build production-ready applications in minutes. Kybernus generates robust, scalable backend projects with industry best practices built-in.
|
|
10
6
|
|
|
11
7
|
---
|
|
12
8
|
|
|
13
|
-
##
|
|
9
|
+
## Installation
|
|
14
10
|
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g kybernus
|
|
15
13
|
```
|
|
16
|
-
kybernus/
|
|
17
|
-
├── apps/web/ # Next.js Web Application (Dashboard, Admin, APIs)
|
|
18
|
-
├── src/ # CLI Source Code
|
|
19
|
-
├── templates/ # Project Templates (5 stacks × 2 tiers)
|
|
20
|
-
├── tests/ # Automated Test Suite
|
|
21
|
-
└── docs/ # Documentation
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Components
|
|
25
|
-
|
|
26
|
-
| Component | Description |
|
|
27
|
-
|-----------|-------------|
|
|
28
|
-
| **CLI** | Interactive command-line tool for project scaffolding |
|
|
29
|
-
| **Web App** | Dashboard, authentication, admin panel, payment integration |
|
|
30
|
-
| **License System** | Trial/Free/Pro tiers with usage tracking |
|
|
31
|
-
| **Templates** | Production-ready project templates for 5 tech stacks |
|
|
32
14
|
|
|
33
15
|
---
|
|
34
16
|
|
|
35
|
-
##
|
|
17
|
+
## Quick Start
|
|
36
18
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- **Clack** - Beautiful interactive prompts
|
|
41
|
-
- **Handlebars** - Template engine
|
|
42
|
-
- **Google Gemini** - AI-powered documentation (Pro)
|
|
19
|
+
```bash
|
|
20
|
+
# Create your first project
|
|
21
|
+
kybernus init
|
|
43
22
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- **Stripe** - Payment processing
|
|
48
|
-
- **Resend** - Transactional emails
|
|
49
|
-
- **Upstash Redis** - Rate limiting & caching
|
|
50
|
-
- **TailwindCSS** - Styling
|
|
23
|
+
# Or start with a free trial (15 days, full Pro access)
|
|
24
|
+
kybernus register
|
|
25
|
+
```
|
|
51
26
|
|
|
52
27
|
---
|
|
53
28
|
|
|
54
|
-
##
|
|
29
|
+
## Supported Stacks
|
|
55
30
|
|
|
56
|
-
| Stack | Free
|
|
57
|
-
|
|
31
|
+
| Stack | Free | Pro |
|
|
32
|
+
|:------|:----:|:---:|
|
|
58
33
|
| **Node.js + Express** | ✅ MVC | ✅ Clean/Hexagonal |
|
|
59
34
|
| **Next.js** | ✅ MVC | ✅ Clean/Hexagonal |
|
|
60
35
|
| **Java Spring Boot** | ✅ MVC | ✅ Clean/Hexagonal |
|
|
61
|
-
| **NestJS** |
|
|
62
|
-
| **Python FastAPI** |
|
|
63
|
-
|
|
64
|
-
### Features by Tier
|
|
65
|
-
|
|
66
|
-
| Feature | Free | Trial (15 days) | Pro ($97) |
|
|
67
|
-
|:--------|:----:|:---------------:|:---------:|
|
|
68
|
-
| Basic Stacks | ✅ | ✅ | ✅ |
|
|
69
|
-
| Pro Stacks (NestJS, FastAPI) | ❌ | ✅ | ✅ |
|
|
70
|
-
| Clean/Hexagonal Architecture | ❌ | ✅ | ✅ |
|
|
71
|
-
| Docker & CI/CD | ❌ | ✅ | ✅ |
|
|
72
|
-
| Terraform Configs | ❌ | ✅ | ✅ |
|
|
73
|
-
| AI Documentation | ❌ | ✅ | ✅ |
|
|
74
|
-
| Project Limit | Unlimited | 3 Projects | Unlimited |
|
|
36
|
+
| **NestJS** | – | ✅ All Patterns |
|
|
37
|
+
| **Python FastAPI** | – | ✅ All Patterns |
|
|
75
38
|
|
|
76
39
|
---
|
|
77
40
|
|
|
78
|
-
##
|
|
41
|
+
## Commands
|
|
79
42
|
|
|
80
43
|
```bash
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
#
|
|
85
|
-
kybernus
|
|
86
|
-
kybernus
|
|
87
|
-
kybernus login # Authenticate with a license key
|
|
88
|
-
kybernus status # Check license status and usage
|
|
89
|
-
kybernus upgrade # Upgrade to Pro ($97 lifetime)
|
|
90
|
-
kybernus logout # Sign out and remove license
|
|
44
|
+
kybernus init # Generate a new project
|
|
45
|
+
kybernus register # Start a free trial (15 days)
|
|
46
|
+
kybernus login # Login with your license key
|
|
47
|
+
kybernus status # Check license and usage
|
|
48
|
+
kybernus upgrade # Upgrade to Pro ($97 lifetime)
|
|
49
|
+
kybernus logout # Sign out
|
|
91
50
|
```
|
|
92
51
|
|
|
93
|
-
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Example
|
|
94
55
|
|
|
95
56
|
```bash
|
|
96
|
-
# Start a new project
|
|
97
57
|
$ kybernus init
|
|
98
58
|
|
|
99
59
|
┌ 🚀 Kybernus Project Generator
|
|
100
60
|
│
|
|
101
61
|
◆ Project name: my-api
|
|
102
|
-
◆
|
|
103
|
-
│ ● Node.js + Express
|
|
104
|
-
│ ○ NestJS (Pro)
|
|
105
|
-
│ ○ Java Spring Boot
|
|
106
|
-
│ ○ Python FastAPI (Pro)
|
|
107
|
-
│ ○ Next.js
|
|
108
|
-
│
|
|
62
|
+
◆ Stack: Node.js + Express
|
|
109
63
|
◆ Architecture: Clean Architecture
|
|
110
64
|
◆ Include Docker? Yes
|
|
111
|
-
◆ Generate AI docs? Yes
|
|
112
65
|
│
|
|
113
|
-
└
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## 🌐 Web Application
|
|
119
|
-
|
|
120
|
-
The web app (`apps/web/`) provides:
|
|
121
|
-
|
|
122
|
-
### Public Pages
|
|
123
|
-
- **Landing Page** - Product showcase with pricing
|
|
124
|
-
- **Documentation** - CLI reference and guides
|
|
125
|
-
- **Privacy Policy** & **Terms of Service**
|
|
126
|
-
|
|
127
|
-
### Authentication
|
|
128
|
-
- **Register/Login** - Email + password with bcrypt hashing
|
|
129
|
-
- **Password Recovery** - Email-based reset flow
|
|
130
|
-
- **Session Management** - JWT with 7-day persistence
|
|
131
|
-
- **Cookie Consent** - LGPD compliant
|
|
132
|
-
|
|
133
|
-
### User Dashboard
|
|
134
|
-
- License key display & copy
|
|
135
|
-
- Usage tracking (projects used / limit)
|
|
136
|
-
- Profile management (email/password updates)
|
|
137
|
-
- Upgrade to Pro via Stripe
|
|
138
|
-
|
|
139
|
-
### Admin Panel
|
|
140
|
-
- User management with search/filter
|
|
141
|
-
- Analytics dashboard
|
|
142
|
-
- System metrics
|
|
143
|
-
|
|
144
|
-
### API Endpoints
|
|
145
|
-
|
|
146
|
-
| Endpoint | Description |
|
|
147
|
-
|----------|-------------|
|
|
148
|
-
| `POST /api/auth/register` | Create trial account |
|
|
149
|
-
| `POST /api/auth/login` | Authenticate user |
|
|
150
|
-
| `POST /api/licenses/validate` | Validate license key |
|
|
151
|
-
| `POST /api/licenses/consume` | Consume a project credit |
|
|
152
|
-
| `POST /api/checkout` | Create Stripe checkout session |
|
|
153
|
-
| `POST /api/webhooks/stripe` | Handle payment webhooks |
|
|
154
|
-
| `GET /api/user/me` | Get current user data |
|
|
155
|
-
| `GET /api/admin/dashboard` | Admin analytics |
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## 🧪 Testing
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# Run all CLI tests (unit)
|
|
163
|
-
npm test
|
|
164
|
-
|
|
165
|
-
# Run web app tests
|
|
166
|
-
cd apps/web && npm test
|
|
167
|
-
|
|
168
|
-
# Run with watch mode
|
|
169
|
-
npm run test:watch
|
|
66
|
+
└ ✅ Project created successfully!
|
|
170
67
|
```
|
|
171
68
|
|
|
172
|
-
### Test Coverage
|
|
173
|
-
- **CLI Unit Tests**: 14 tests - Config, Generator, License Validator
|
|
174
|
-
- **Web Unit Tests**: 5 tests - Email templates
|
|
175
|
-
- **E2E Tests**: 40+ tests - API integration (run locally)
|
|
176
|
-
|
|
177
69
|
---
|
|
178
70
|
|
|
179
|
-
##
|
|
180
|
-
|
|
181
|
-
### Web App (Vercel)
|
|
182
|
-
1. Import repo to Vercel
|
|
183
|
-
2. Set **Root Directory**: `apps/web`
|
|
184
|
-
3. Add environment variables
|
|
185
|
-
4. Deploy
|
|
186
|
-
|
|
187
|
-
### CLI (NPM)
|
|
188
|
-
```bash
|
|
189
|
-
# Bump version
|
|
190
|
-
npm version patch
|
|
191
|
-
|
|
192
|
-
# Create and push tag
|
|
193
|
-
git tag v1.0.0
|
|
194
|
-
git push --tags
|
|
195
|
-
|
|
196
|
-
# GitHub Actions auto-publishes to NPM
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
See [VERCEL_README.md](apps/web/VERCEL_README.md) for detailed deployment guide.
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## 🔧 Development
|
|
204
|
-
|
|
205
|
-
### Prerequisites
|
|
206
|
-
- Node.js 18+
|
|
207
|
-
- PostgreSQL (or Docker)
|
|
208
|
-
- NPM account (for publishing)
|
|
209
|
-
|
|
210
|
-
### Local Setup
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# Clone repository
|
|
214
|
-
git clone https://github.com/ViniMTrevisan/Kybernus-CLI.git
|
|
215
|
-
cd Kybernus-CLI
|
|
216
|
-
|
|
217
|
-
# Install CLI dependencies
|
|
218
|
-
npm install
|
|
219
|
-
npm run build
|
|
220
|
-
|
|
221
|
-
# Install Web dependencies
|
|
222
|
-
cd apps/web
|
|
223
|
-
npm install
|
|
224
|
-
|
|
225
|
-
# Setup environment
|
|
226
|
-
cp .env.example .env
|
|
227
|
-
# Edit .env with your credentials
|
|
228
|
-
|
|
229
|
-
# Run database migrations
|
|
230
|
-
npx prisma migrate dev
|
|
231
|
-
|
|
232
|
-
# Start development server
|
|
233
|
-
npm run dev
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### Environment Variables
|
|
237
|
-
|
|
238
|
-
```env
|
|
239
|
-
DATABASE_URL="postgresql://..."
|
|
240
|
-
JWT_SECRET="your-secret-key"
|
|
241
|
-
STRIPE_SECRET_KEY="sk_..."
|
|
242
|
-
STRIPE_WEBHOOK_SECRET="whsec_..."
|
|
243
|
-
RESEND_API_KEY="re_..."
|
|
244
|
-
UPSTASH_REDIS_REST_URL="https://..."
|
|
245
|
-
UPSTASH_REDIS_REST_TOKEN="..."
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
## 📁 Template Structure
|
|
251
|
-
|
|
252
|
-
Each template includes:
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
templates/{stack}/{tier}/
|
|
256
|
-
├── src/
|
|
257
|
-
│ ├── controllers/ # Route handlers
|
|
258
|
-
│ ├── services/ # Business logic
|
|
259
|
-
│ ├── repositories/ # Data access (Clean/Hex only)
|
|
260
|
-
│ ├── entities/ # Domain models (Clean/Hex only)
|
|
261
|
-
│ └── ports/ # Interfaces (Hexagonal only)
|
|
262
|
-
├── docker/
|
|
263
|
-
│ ├── Dockerfile
|
|
264
|
-
│ └── docker-compose.yml
|
|
265
|
-
├── .github/
|
|
266
|
-
│ └── workflows/ # CI/CD pipelines
|
|
267
|
-
├── terraform/ # Infrastructure as Code
|
|
268
|
-
└── README.md
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## 🔐 License System
|
|
274
|
-
|
|
275
|
-
### How It Works
|
|
276
|
-
1. **Free Mode**: Basic stacks, MVC only, unlimited projects
|
|
277
|
-
2. **Trial Mode**: Full Pro access for 15 days, 3 project limit
|
|
278
|
-
3. **Pro Mode**: Lifetime access, all features, unlimited projects
|
|
279
|
-
|
|
280
|
-
### License Key Format
|
|
281
|
-
- Trial: `KYB-TRIAL-XXXX-XXXX-XXXX`
|
|
282
|
-
- Pro: `KYB-PRO-XXXX-XXXX-XXXX`
|
|
283
|
-
|
|
284
|
-
### Validation Flow
|
|
285
|
-
```
|
|
286
|
-
CLI → validate(licenseKey) → API → Database → Response
|
|
287
|
-
← { valid, tier, usage, limit } ←
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
---
|
|
71
|
+
## What's Included
|
|
291
72
|
|
|
292
|
-
|
|
73
|
+
### 3 projects FREE! Includes PRO and Architect templates
|
|
293
74
|
|
|
294
|
-
|
|
75
|
+
### Architect ($9)
|
|
76
|
+
- Basic project scaffolding (MVC)
|
|
77
|
+
- Node.js, Next.js, Java Spring Boot
|
|
78
|
+
- README with setup instructions
|
|
295
79
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
80
|
+
### Pro Tier ($49 lifetime)
|
|
81
|
+
- **All stacks** including NestJS and FastAPI
|
|
82
|
+
- **Clean & Hexagonal Architecture** patterns
|
|
83
|
+
- **Docker & docker-compose** configurations
|
|
84
|
+
- **CI/CD pipelines** (GitHub Actions)
|
|
85
|
+
- **Terraform** infrastructure configs
|
|
86
|
+
- **AI-powered documentation** (via Gemini)
|
|
87
|
+
- Unlimited projects
|
|
301
88
|
|
|
302
89
|
---
|
|
303
90
|
|
|
304
|
-
##
|
|
91
|
+
## Links
|
|
305
92
|
|
|
306
|
-
|
|
93
|
+
- 🌐 **Website**: [kybernus.vercel.app](https://kybernus.vercel.app)
|
|
94
|
+
- 📖 **Docs**: [kybernus.vercel.app/docs](https://kybernus.vercel.app/docs)
|
|
307
95
|
|
|
308
96
|
---
|
|
309
97
|
|
|
310
|
-
##
|
|
98
|
+
## License
|
|
311
99
|
|
|
312
|
-
|
|
313
|
-
- **Issues**: [GitHub Issues](https://github.com/ViniMTrevisan/Kybernus-CLI/issues)
|
|
314
|
-
- **Email**: support@kybernus.dev
|
|
100
|
+
Copyright © 2026 Vini Trevisan. All rights reserved. Redistribution or modification involves a violation of applicable laws
|
|
315
101
|
|
|
316
102
|
---
|
|
317
103
|
|
|
318
104
|
<p align="center">
|
|
319
|
-
<strong>Code less, Build more.</strong
|
|
320
|
-
© 2026 Kybernus Systems. All rights reserved.
|
|
105
|
+
<strong>Code less, Build more.</strong>
|
|
321
106
|
</p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAoFrD"}
|
|
@@ -36,7 +36,11 @@ export async function initCommand(options) {
|
|
|
36
36
|
clack.note('🌟 Modo Pro ativo\n\nVocê tem acesso a todos os recursos!', '✨ Pro');
|
|
37
37
|
}
|
|
38
38
|
// Executar wizard interativo (ou usar options se non-interactive)
|
|
39
|
-
const config = await runWizard(licenseTier);
|
|
39
|
+
const config = await runWizard(licenseTier, options);
|
|
40
|
+
// Inject licenseKey into config if available
|
|
41
|
+
if (licenseKey) {
|
|
42
|
+
config.licenseKey = licenseKey;
|
|
43
|
+
}
|
|
40
44
|
// Validate project limit (Metered Trial)
|
|
41
45
|
if (licenseTier === 'pro' && licenseKey) {
|
|
42
46
|
const spinner = clack.spinner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAYjE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IAClD,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEzC,6BAA6B;IAC7B,IAAI,WAAW,GAAgB,MAAM,CAAC;IACtC,IAAI,UAAU,GAAuB,OAAO,CAAC,OAAO,CAAC;IAErD,uDAAuD;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC;IAED,8BAA8B;IAC9B,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE,CAAC;YAExD,mCAAmC;YACnC,IAAI,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,WAAW,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;gBACxE,aAAa,CAAC,YAAY,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACN,wQAAwQ,EACxQ,gBAAgB,CACnB,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,2DAA2D,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,8 @@ export async function upgradeCommand() {
|
|
|
16
16
|
const type = await clack.select({
|
|
17
17
|
message: 'Choose your plan:',
|
|
18
18
|
options: [
|
|
19
|
-
{ value: 'monthly', label: 'Monthly Subscription ($
|
|
20
|
-
{ value: 'lifetime', label: 'Pro Lifetime ($
|
|
19
|
+
{ value: 'monthly', label: 'Monthly Subscription ($9/month) - Continue using standard features' },
|
|
20
|
+
{ value: 'lifetime', label: 'Pro Lifetime ($49 one-time) - Unlock Advanced Architecture & DevOps forever' },
|
|
21
21
|
],
|
|
22
22
|
});
|
|
23
23
|
if (clack.isCancel(type)) {
|
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
import { ProjectConfig, LicenseTier } from '../../models/config.js';
|
|
2
|
-
export
|
|
2
|
+
export interface ConfigOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
stack?: string;
|
|
5
|
+
architecture?: string;
|
|
6
|
+
buildTool?: string;
|
|
7
|
+
packageName?: string;
|
|
8
|
+
ai?: boolean;
|
|
9
|
+
geminiKey?: string;
|
|
10
|
+
nonInteractive?: boolean;
|
|
11
|
+
docker?: boolean;
|
|
12
|
+
cicd?: boolean;
|
|
13
|
+
terraform?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function runWizard(licenseTier: LicenseTier, options?: ConfigOptions): Promise<ProjectConfig>;
|
|
3
16
|
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/wizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAkC,MAAM,wBAAwB,CAAC;AAGpG,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/cli/prompts/wizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAkC,MAAM,wBAAwB,CAAC;AAGpG,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+K7G"}
|
|
@@ -1,10 +1,35 @@
|
|
|
1
1
|
import * as clack from '@clack/prompts';
|
|
2
|
-
export async function runWizard(licenseTier) {
|
|
2
|
+
export async function runWizard(licenseTier, options = {}) {
|
|
3
|
+
// Se for modo não interativo, validar options obrigatórias
|
|
4
|
+
if (options.nonInteractive) {
|
|
5
|
+
if (!options.name || !options.stack) {
|
|
6
|
+
throw new Error('Modo não interativo requer --name e --stack. Arquitetura assume padrão se não informada.');
|
|
7
|
+
}
|
|
8
|
+
// Default DevOps flags for Pro non-interactive
|
|
9
|
+
const devops = {
|
|
10
|
+
docker: options.docker || false,
|
|
11
|
+
cicd: options.cicd || false,
|
|
12
|
+
terraform: options.terraform || false
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
projectName: options.name,
|
|
16
|
+
stack: options.stack,
|
|
17
|
+
architecture: options.architecture || 'mvc',
|
|
18
|
+
buildTool: options.buildTool || 'npm',
|
|
19
|
+
packageName: options.packageName,
|
|
20
|
+
useAI: options.ai || false,
|
|
21
|
+
geminiKey: options.geminiKey,
|
|
22
|
+
devops,
|
|
23
|
+
licenseTier
|
|
24
|
+
};
|
|
25
|
+
}
|
|
3
26
|
clack.intro('🚀 Bem-vindo ao Kybernus');
|
|
27
|
+
// Pre-fill prompt default values based on passed options
|
|
4
28
|
const answers = await clack.group({
|
|
5
29
|
projectName: () => clack.text({
|
|
6
30
|
message: 'Nome do projeto:',
|
|
7
31
|
placeholder: 'meu-projeto',
|
|
32
|
+
initialValue: options.name,
|
|
8
33
|
validate: (value) => {
|
|
9
34
|
if (!value)
|
|
10
35
|
return 'Nome é obrigatório';
|
|
@@ -15,6 +40,7 @@ export async function runWizard(licenseTier) {
|
|
|
15
40
|
}),
|
|
16
41
|
stack: () => clack.select({
|
|
17
42
|
message: 'Escolha a stack:',
|
|
43
|
+
initialValue: options.stack,
|
|
18
44
|
options: [
|
|
19
45
|
{ value: 'nextjs', label: 'Next.js (React + TypeScript)' },
|
|
20
46
|
{ value: 'java-spring', label: 'Java Spring Boot' },
|
|
@@ -32,6 +58,7 @@ export async function runWizard(licenseTier) {
|
|
|
32
58
|
return;
|
|
33
59
|
return clack.select({
|
|
34
60
|
message: 'Build tool:',
|
|
61
|
+
initialValue: options.buildTool,
|
|
35
62
|
options: [
|
|
36
63
|
{ value: 'maven', label: 'Maven (Gradle em breve)' },
|
|
37
64
|
],
|
|
@@ -43,6 +70,7 @@ export async function runWizard(licenseTier) {
|
|
|
43
70
|
return clack.text({
|
|
44
71
|
message: 'Package name (ex: com.usuario.projeto):',
|
|
45
72
|
placeholder: 'com.usuario.projeto',
|
|
73
|
+
initialValue: options.packageName,
|
|
46
74
|
validate: (value) => {
|
|
47
75
|
if (!value)
|
|
48
76
|
return 'Package name é obrigatório para Java';
|
|
@@ -57,23 +85,27 @@ export async function runWizard(licenseTier) {
|
|
|
57
85
|
const backendStacks = ['java-spring', 'nodejs-express', 'python-fastapi', 'nestjs'];
|
|
58
86
|
if (!backendStacks.includes(results.stack))
|
|
59
87
|
return;
|
|
60
|
-
const
|
|
88
|
+
const uiOptions = [{ value: 'mvc', label: 'MVC (Model-View-Controller)' }];
|
|
61
89
|
// Arquiteturas avançadas apenas no Pro
|
|
62
90
|
if (licenseTier === 'pro') {
|
|
63
|
-
|
|
91
|
+
uiOptions.push({ value: 'clean', label: '🌟 Clean Architecture (Pro)' }, { value: 'hexagonal', label: '🌟 Hexagonal Architecture (Pro)' });
|
|
64
92
|
}
|
|
65
93
|
return clack.select({
|
|
66
94
|
message: 'Arquitetura:',
|
|
67
|
-
options,
|
|
95
|
+
initialValue: options.architecture,
|
|
96
|
+
options: uiOptions,
|
|
68
97
|
});
|
|
69
98
|
},
|
|
70
99
|
useAI: () => clack.confirm({
|
|
71
100
|
message: 'Gerar documentação com IA (Google Gemini)?',
|
|
72
|
-
initialValue: false,
|
|
101
|
+
initialValue: options.ai || false,
|
|
73
102
|
}),
|
|
74
103
|
geminiKey: ({ results }) => {
|
|
75
104
|
if (!results.useAI)
|
|
76
105
|
return;
|
|
106
|
+
// Se a key já vier nas options, não pergunta
|
|
107
|
+
if (options.geminiKey)
|
|
108
|
+
return;
|
|
77
109
|
return clack.password({
|
|
78
110
|
message: 'Gemini API Key:',
|
|
79
111
|
validate: (value) => {
|
|
@@ -85,6 +117,10 @@ export async function runWizard(licenseTier) {
|
|
|
85
117
|
devops: async ({ results }) => {
|
|
86
118
|
if (licenseTier !== 'pro')
|
|
87
119
|
return [];
|
|
120
|
+
// Se já tiver alguma flag de devops, assume que estamos em modo override
|
|
121
|
+
if (options.docker || options.cicd || options.terraform) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
88
124
|
const selected = await clack.multiselect({
|
|
89
125
|
message: "DevOps & Infraestrutura (marque o que desejar com Space ou 'A' para selecionar todos):",
|
|
90
126
|
options: [
|
|
@@ -109,11 +145,11 @@ export async function runWizard(licenseTier) {
|
|
|
109
145
|
buildTool: answers.buildTool,
|
|
110
146
|
packageName: answers.packageName,
|
|
111
147
|
useAI: answers.useAI,
|
|
112
|
-
geminiKey: answers.geminiKey,
|
|
148
|
+
geminiKey: (options.geminiKey || answers.geminiKey),
|
|
113
149
|
devops: {
|
|
114
|
-
docker: answers.devops?.includes('docker') || false,
|
|
115
|
-
cicd: answers.devops?.includes('ci-cd') || false,
|
|
116
|
-
terraform: answers.devops?.includes('terraform') || false,
|
|
150
|
+
docker: options.docker || answers.devops?.includes('docker') || false,
|
|
151
|
+
cicd: options.cicd || answers.devops?.includes('ci-cd') || false,
|
|
152
|
+
terraform: options.terraform || answers.devops?.includes('terraform') || false,
|
|
117
153
|
},
|
|
118
154
|
licenseTier,
|
|
119
155
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/cli/prompts/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/cli/prompts/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAkBxC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAwB,EAAE,UAAyB,EAAE;IACnF,2DAA2D;IAC3D,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;YAC3B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;SACtC,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,KAAK,EAAE,OAAO,CAAC,KAAc;YAC7B,YAAY,EAAG,OAAO,CAAC,YAA6B,IAAI,KAAK;YAC7D,SAAS,EAAG,OAAO,CAAC,SAAuB,IAAI,KAAK;YACpD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;YACN,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAExC,yDAAyD;IACzD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAC/B;QACE,WAAW,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,kBAAkB;YAC3B,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,OAAO,CAAC,IAAI;YAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK;oBAAE,OAAO,oBAAoB,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,gDAAgD,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC;QAEJ,KAAK,EAAE,GAAG,EAAE,CACV,KAAK,CAAC,MAAM,CAAC;YACX,OAAO,EAAE,kBAAkB;YAC3B,YAAY,EAAE,OAAO,CAAC,KAAK;YAC3B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,8BAA8B,EAAE;gBAC1D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACnD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACvD,GAAG,CAAC,WAAW,KAAK,KAAK;oBACvB,CAAC,CAAC;wBACA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,yBAAyB,EAAE;wBAC7D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE;qBAC9C;oBACD,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;QAEJ,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACzB,IAAI,OAAO,CAAC,KAAK,KAAK,aAAa;gBAAE,OAAO;YAE5C,OAAO,KAAK,CAAC,MAAM,CAAC;gBAClB,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE,OAAO,CAAC,SAAS;gBAC/B,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE;iBACrD;aACF,CAAC,CAAC;QACL,CAAC;QAED,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,KAAK,aAAa;gBAAE,OAAO;YAE5C,OAAO,KAAK,CAAC,IAAI,CAAC;gBAChB,OAAO,EAAE,yCAAyC;gBAClD,WAAW,EAAE,qBAAqB;gBAClC,YAAY,EAAE,OAAO,CAAC,WAAW;gBACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,sCAAsC,CAAC;oBAC1D,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACzD,OAAO,iDAAiD,CAAC;oBAC3D,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,yDAAyD;YACzD,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAe,CAAC;gBAAE,OAAO;YAE7D,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAE3E,uCAAuC;YACvC,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC1B,SAAS,CAAC,IAAI,CACZ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,EACxD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iCAAiC,EAAE,CACjE,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,CAAC;gBAClB,OAAO,EAAE,cAAc;gBACvB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,EAAE,GAAG,EAAE,CACV,KAAK,CAAC,OAAO,CAAC;YACZ,OAAO,EAAE,4CAA4C;YACrD,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK;SAClC,CAAC;QAEJ,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO;YAC3B,6CAA6C;YAC7C,IAAI,OAAO,CAAC,SAAS;gBAAE,OAAO;YAE9B,OAAO,KAAK,CAAC,QAAQ,CAAC;gBACpB,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK;wBAAE,OAAO,oCAAoC,CAAC;gBAC1D,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC5B,IAAI,WAAW,KAAK,KAAK;gBAAE,OAAO,EAAE,CAAC;YAErC,yEAAyE;YACzE,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;gBACvC,OAAO,EAAE,wFAAwF;gBACjG,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,yBAAyB,EAAE;oBACrD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE;oBACjD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;iBACjD;gBACD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,EACD;QACE,QAAQ,EAAE,GAAG,EAAE;YACb,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF,CACF,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAqB;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAc;QAC7B,YAAY,EAAE,OAAO,CAAC,YAAwC;QAC9D,SAAS,EAAE,OAAO,CAAC,SAAkC;QACrD,WAAW,EAAE,OAAO,CAAC,WAAiC;QACtD,KAAK,EAAE,OAAO,CAAC,KAAgB;QAC/B,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAuB;QACzE,MAAM,EAAE;YACN,MAAM,EAAE,OAAO,CAAC,MAAM,IAAK,OAAO,CAAC,MAA+B,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK;YAC/F,IAAI,EAAE,OAAO,CAAC,IAAI,IAAK,OAAO,CAAC,MAA+B,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK;YAC1F,SAAS,EAAE,OAAO,CAAC,SAAS,IAAK,OAAO,CAAC,MAA+B,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK;SACzG;QACD,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,14 @@ export declare class ProjectGenerator {
|
|
|
9
9
|
* Gera um projeto completo baseado na configuração
|
|
10
10
|
*/
|
|
11
11
|
generate(config: ProjectConfig, outputDir: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Get Pro template path - downloads from API if not cached
|
|
14
|
+
*/
|
|
15
|
+
private getProTemplatePath;
|
|
16
|
+
/**
|
|
17
|
+
* Get local template path for Free tier (bundled with npm package)
|
|
18
|
+
*/
|
|
19
|
+
private getLocalTemplatePath;
|
|
12
20
|
/**
|
|
13
21
|
* Gera documentação usando IA (README.md e API.md)
|
|
14
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AASvD;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAiB;;IAM/B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvE;;OAEG;YACW,kBAAkB;IA6BhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;YACW,uBAAuB;IA2CrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,4BAA4B;IAsCpC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;YACW,uBAAuB;IAgCrC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;YACW,mBAAmB;CAwCpC"}
|
|
@@ -6,6 +6,7 @@ import { promisify } from 'util';
|
|
|
6
6
|
import * as clack from '@clack/prompts';
|
|
7
7
|
import { TemplateEngine } from '../templates/engine.js';
|
|
8
8
|
import { buildTemplateContext } from './context-builder.js';
|
|
9
|
+
import { templateDownloader } from '../templates/downloader.js';
|
|
9
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
10
11
|
const __dirname = path.dirname(__filename);
|
|
11
12
|
const execPromise = promisify(exec);
|
|
@@ -30,8 +31,17 @@ export class ProjectGenerator {
|
|
|
30
31
|
spinner.stop('❌ Diretório já existe');
|
|
31
32
|
throw new Error(`Diretório "${config.projectName}" já existe!`);
|
|
32
33
|
}
|
|
33
|
-
// 2. Determina o caminho do template
|
|
34
|
-
|
|
34
|
+
// 2. Determina o caminho do template (diferente para Pro vs Free)
|
|
35
|
+
let templatePath;
|
|
36
|
+
if (config.licenseTier === 'pro') {
|
|
37
|
+
// Pro templates: download from API or use cache
|
|
38
|
+
spinner.message('📦 Verificando templates Pro...');
|
|
39
|
+
templatePath = await this.getProTemplatePath(config, spinner);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Free templates: use local bundled templates
|
|
43
|
+
templatePath = this.getLocalTemplatePath(config);
|
|
44
|
+
}
|
|
35
45
|
// Verifica se template existe
|
|
36
46
|
if (!(await fs.pathExists(templatePath))) {
|
|
37
47
|
spinner.stop('❌ Template não encontrado');
|
|
@@ -58,6 +68,35 @@ export class ProjectGenerator {
|
|
|
58
68
|
throw error;
|
|
59
69
|
}
|
|
60
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Get Pro template path - downloads from API if not cached
|
|
73
|
+
*/
|
|
74
|
+
async getProTemplatePath(config, spinner) {
|
|
75
|
+
const architecture = config.architecture || 'clean';
|
|
76
|
+
// Check cache first
|
|
77
|
+
const cachedPath = await templateDownloader.getCachedTemplate(config.stack, architecture);
|
|
78
|
+
if (cachedPath) {
|
|
79
|
+
return cachedPath;
|
|
80
|
+
}
|
|
81
|
+
// Download from API
|
|
82
|
+
spinner.message('⬇️ Baixando templates Pro...');
|
|
83
|
+
const result = await templateDownloader.downloadProTemplate(config.licenseKey, config.stack, architecture);
|
|
84
|
+
if (!result.success || !result.files) {
|
|
85
|
+
throw new Error(result.error || 'Failed to download Pro template');
|
|
86
|
+
}
|
|
87
|
+
// Cache the downloaded template
|
|
88
|
+
await templateDownloader.cacheTemplate(config.stack, architecture, result.files);
|
|
89
|
+
// Return cache path
|
|
90
|
+
return await templateDownloader.getCachedTemplate(config.stack, architecture) || '';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get local template path for Free tier (bundled with npm package)
|
|
94
|
+
*/
|
|
95
|
+
getLocalTemplatePath(config) {
|
|
96
|
+
const templatesRoot = path.join(__dirname, '../../../templates');
|
|
97
|
+
const architecture = config.architecture || 'mvc';
|
|
98
|
+
return path.join(templatesRoot, config.stack, 'free', architecture);
|
|
99
|
+
}
|
|
61
100
|
/**
|
|
62
101
|
* Gera documentação usando IA (README.md e API.md)
|
|
63
102
|
*/
|