kybernus 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/README.md +15 -6
  2. package/add-features/auth/java-spring/AuthController.java +54 -0
  3. package/add-features/auth/java-spring/AuthService.java +85 -0
  4. package/add-features/auth/java-spring/INSTRUCTIONS.md +119 -0
  5. package/add-features/auth/java-spring/dto/LoginRequest.java +22 -0
  6. package/add-features/auth/java-spring/dto/RegisterRequest.java +22 -0
  7. package/add-features/auth/java-spring/security/JwtRequestFilter.java +45 -0
  8. package/add-features/auth/java-spring/security/JwtUtil.java +59 -0
  9. package/add-features/auth/java-spring/security/SecurityConfig.java +39 -0
  10. package/add-features/auth/nestjs/INSTRUCTIONS.md +112 -0
  11. package/add-features/auth/nestjs/auth.controller.ts +27 -0
  12. package/add-features/auth/nestjs/auth.module.ts +20 -0
  13. package/add-features/auth/nestjs/auth.service.ts +81 -0
  14. package/add-features/auth/nestjs/dto/login.dto.ts +4 -0
  15. package/add-features/auth/nestjs/dto/register.dto.ts +4 -0
  16. package/add-features/auth/nestjs/jwt-auth.guard.ts +17 -0
  17. package/add-features/auth/nestjs/jwt.strategy.ts +24 -0
  18. package/add-features/auth/nextjs/INSTRUCTIONS.md +97 -0
  19. package/add-features/auth/nextjs/jwt.ts +21 -0
  20. package/add-features/auth/nextjs/middleware.ts +37 -0
  21. package/add-features/auth/nextjs/routes/login.ts +43 -0
  22. package/add-features/auth/nextjs/routes/register.ts +50 -0
  23. package/add-features/auth/nextjs/session.ts +28 -0
  24. package/add-features/auth/nodejs-express/INSTRUCTIONS.md +109 -0
  25. package/add-features/auth/nodejs-express/auth.controller.ts +59 -0
  26. package/add-features/auth/nodejs-express/auth.middleware.ts +38 -0
  27. package/add-features/auth/nodejs-express/auth.routes.ts +15 -0
  28. package/add-features/auth/nodejs-express/auth.service.ts +73 -0
  29. package/add-features/auth/nodejs-express/jwt.config.ts +17 -0
  30. package/add-features/auth/python-fastapi/INSTRUCTIONS.md +100 -0
  31. package/add-features/auth/python-fastapi/router.py +26 -0
  32. package/add-features/auth/python-fastapi/schemas.py +25 -0
  33. package/add-features/auth/python-fastapi/security.py +37 -0
  34. package/add-features/auth/python-fastapi/service.py +61 -0
  35. package/add-features/deploy/dockerfiles/Dockerfile.java +22 -0
  36. package/add-features/deploy/dockerfiles/Dockerfile.nextjs +32 -0
  37. package/add-features/deploy/dockerfiles/Dockerfile.nodejs +25 -0
  38. package/add-features/deploy/dockerfiles/Dockerfile.python +17 -0
  39. package/add-features/deploy/fly/INSTRUCTIONS.md +39 -0
  40. package/add-features/deploy/fly/java-spring.toml +21 -0
  41. package/add-features/deploy/fly/nextjs.toml +16 -0
  42. package/add-features/deploy/fly/nodejs.toml +21 -0
  43. package/add-features/deploy/fly/python-fastapi.toml +21 -0
  44. package/add-features/deploy/railway/INSTRUCTIONS.md +38 -0
  45. package/add-features/deploy/railway/java-spring.toml +16 -0
  46. package/add-features/deploy/railway/nextjs.toml +14 -0
  47. package/add-features/deploy/railway/nodejs.toml +14 -0
  48. package/add-features/deploy/railway/python-fastapi.toml +13 -0
  49. package/add-features/deploy/render/INSTRUCTIONS.md +35 -0
  50. package/add-features/deploy/render/java-spring.yaml +14 -0
  51. package/add-features/deploy/render/nextjs.yaml +17 -0
  52. package/add-features/deploy/render/nodejs.yaml +15 -0
  53. package/add-features/deploy/render/python-fastapi.yaml +13 -0
  54. package/add-features/deploy/vercel/INSTRUCTIONS.md +40 -0
  55. package/add-features/deploy/vercel/nextjs.json +16 -0
  56. package/add-features/deploy/vercel/nodejs-express.json +21 -0
  57. package/add-features/deploy/vercel/python-fastapi.json +21 -0
  58. package/add-features/husky/INSTRUCTIONS.md +52 -0
  59. package/add-features/husky/commit-msg +4 -0
  60. package/add-features/husky/commitlint.config.js +3 -0
  61. package/add-features/husky/pre-commit +4 -0
  62. package/add-features/redis/.env.snippet +1 -0
  63. package/add-features/redis/INSTRUCTIONS.md +64 -0
  64. package/add-features/redis/docker-compose.snippet.yml +18 -0
  65. package/add-features/redis/java-spring.java +27 -0
  66. package/add-features/redis/nextjs.ts +23 -0
  67. package/add-features/redis/nodejs.ts +14 -0
  68. package/add-features/redis/python.py +22 -0
  69. package/add-features/swagger/INSTRUCTIONS.md +53 -0
  70. package/add-features/swagger/java-spring.java +34 -0
  71. package/add-features/swagger/nestjs.ts +16 -0
  72. package/add-features/swagger/nextjs-route.ts +11 -0
  73. package/add-features/swagger/nextjs-swagger.ts +17 -0
  74. package/add-features/swagger/nodejs-express.ts +30 -0
  75. package/add-features/swagger/python-fastapi.py +21 -0
  76. package/add-features/websocket/INSTRUCTIONS.md +63 -0
  77. package/add-features/websocket/java-spring.java +60 -0
  78. package/add-features/websocket/nestjs.ts +38 -0
  79. package/add-features/websocket/nodejs-express.ts +38 -0
  80. package/add-features/websocket/python-fastapi.py +41 -0
  81. package/dist/cli/commands/add.d.ts +11 -0
  82. package/dist/cli/commands/add.d.ts.map +1 -0
  83. package/dist/cli/commands/add.js +102 -0
  84. package/dist/cli/commands/add.js.map +1 -0
  85. package/dist/cli/commands/auth.d.ts +11 -0
  86. package/dist/cli/commands/auth.d.ts.map +1 -0
  87. package/dist/cli/commands/auth.js +71 -0
  88. package/dist/cli/commands/auth.js.map +1 -0
  89. package/dist/cli/commands/deploy.d.ts +10 -0
  90. package/dist/cli/commands/deploy.d.ts.map +1 -0
  91. package/dist/cli/commands/deploy.js +110 -0
  92. package/dist/cli/commands/deploy.js.map +1 -0
  93. package/dist/cli/commands/doctor.d.ts +3 -0
  94. package/dist/cli/commands/doctor.d.ts.map +1 -0
  95. package/dist/cli/commands/doctor.js +110 -0
  96. package/dist/cli/commands/doctor.js.map +1 -0
  97. package/dist/cli/commands/init.d.ts +1 -0
  98. package/dist/cli/commands/init.d.ts.map +1 -1
  99. package/dist/cli/commands/init.js +1 -0
  100. package/dist/cli/commands/init.js.map +1 -1
  101. package/dist/cli/prompts/wizard.d.ts +1 -0
  102. package/dist/cli/prompts/wizard.d.ts.map +1 -1
  103. package/dist/cli/prompts/wizard.js +44 -18
  104. package/dist/cli/prompts/wizard.js.map +1 -1
  105. package/dist/cli/utils/cli-helpers.d.ts +43 -0
  106. package/dist/cli/utils/cli-helpers.d.ts.map +1 -0
  107. package/dist/cli/utils/cli-helpers.js +107 -0
  108. package/dist/cli/utils/cli-helpers.js.map +1 -0
  109. package/dist/core/ai/prompts/documentation-prompts.d.ts.map +1 -1
  110. package/dist/core/ai/prompts/documentation-prompts.js +6 -0
  111. package/dist/core/ai/prompts/documentation-prompts.js.map +1 -1
  112. package/dist/core/deploy/deploy-generator.d.ts +18 -0
  113. package/dist/core/deploy/deploy-generator.d.ts.map +1 -0
  114. package/dist/core/deploy/deploy-generator.js +155 -0
  115. package/dist/core/deploy/deploy-generator.js.map +1 -0
  116. package/dist/core/features/feature-generator.d.ts +26 -0
  117. package/dist/core/features/feature-generator.d.ts.map +1 -0
  118. package/dist/core/features/feature-generator.js +376 -0
  119. package/dist/core/features/feature-generator.js.map +1 -0
  120. package/dist/core/generator/project.d.ts.map +1 -1
  121. package/dist/core/generator/project.js +48 -3
  122. package/dist/core/generator/project.js.map +1 -1
  123. package/dist/core/templates/engine.d.ts.map +1 -1
  124. package/dist/core/templates/engine.js +4 -0
  125. package/dist/core/templates/engine.js.map +1 -1
  126. package/dist/index.js +11 -2
  127. package/dist/index.js.map +1 -1
  128. package/dist/models/config.d.ts +2 -1
  129. package/dist/models/config.d.ts.map +1 -1
  130. package/package.json +15 -3
  131. package/templates/n8n/ai-assistant/.env.example.hbs +14 -0
  132. package/templates/n8n/ai-assistant/.gitignore.hbs +6 -0
  133. package/templates/n8n/ai-assistant/Dockerfile.hbs +17 -0
  134. package/templates/n8n/ai-assistant/README.md.hbs +11 -0
  135. package/templates/n8n/ai-assistant/SETUP.md.hbs +60 -0
  136. package/templates/n8n/ai-assistant/docker-compose.yml.hbs +60 -0
  137. package/templates/n8n/ai-assistant/workflows/ai-assistant.json.hbs +32 -0
  138. package/templates/n8n/ai-assistant/workflows/auto-backup.json.hbs +43 -0
  139. package/templates/n8n/ai-assistant/workflows/global-error-handler.json.hbs +28 -0
  140. package/templates/n8n/crm-tracker/.env.example.hbs +14 -0
  141. package/templates/n8n/crm-tracker/.gitignore.hbs +6 -0
  142. package/templates/n8n/crm-tracker/Dockerfile.hbs +17 -0
  143. package/templates/n8n/crm-tracker/README.md.hbs +11 -0
  144. package/templates/n8n/crm-tracker/SETUP.md.hbs +59 -0
  145. package/templates/n8n/crm-tracker/docker-compose.yml.hbs +60 -0
  146. package/templates/n8n/crm-tracker/workflows/auto-backup.json.hbs +43 -0
  147. package/templates/n8n/crm-tracker/workflows/crm-enrichment.json.hbs +46 -0
  148. package/templates/n8n/crm-tracker/workflows/global-error-handler.json.hbs +28 -0
  149. package/templates/n8n/default/.env.example.hbs +14 -0
  150. package/templates/n8n/default/.gitignore.hbs +6 -0
  151. package/templates/n8n/default/Dockerfile.hbs +17 -0
  152. package/templates/n8n/default/README.md.hbs +51 -0
  153. package/templates/n8n/default/SETUP.md.hbs +52 -0
  154. package/templates/n8n/default/docker-compose.yml.hbs +60 -0
  155. package/templates/n8n/default/workflows/auto-backup.json.hbs +38 -0
  156. package/templates/n8n/default/workflows/global-error-handler.json.hbs +28 -0
  157. package/templates/n8n/system-monitor/.env.example.hbs +14 -0
  158. package/templates/n8n/system-monitor/.gitignore.hbs +6 -0
  159. package/templates/n8n/system-monitor/Dockerfile.hbs +17 -0
  160. package/templates/n8n/system-monitor/README.md.hbs +11 -0
  161. package/templates/n8n/system-monitor/SETUP.md.hbs +59 -0
  162. package/templates/n8n/system-monitor/docker-compose.yml.hbs +60 -0
  163. package/templates/n8n/system-monitor/workflows/auto-backup.json.hbs +43 -0
  164. package/templates/n8n/system-monitor/workflows/global-error-handler.json.hbs +28 -0
  165. package/templates/n8n/system-monitor/workflows/health-check.json.hbs +66 -0
  166. package/templates/nodejs-express/clean/package.json.hbs +4 -4
  167. package/templates/nodejs-express/hexagonal/package.json.hbs +4 -4
  168. package/templates/nodejs-express/mvc/package.json.hbs +4 -4
  169. /package/templates/nestjs/hexagonal/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
  170. /package/templates/nodejs-express/clean/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
  171. /package/templates/nodejs-express/hexagonal/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
@@ -4,6 +4,7 @@ import fs from 'fs-extra';
4
4
  import { exec } from 'child_process';
5
5
  import { promisify } from 'util';
6
6
  import * as clack from '@clack/prompts';
7
+ import degit from 'degit';
7
8
  import { TemplateEngine } from '../templates/engine.js';
8
9
  import { buildTemplateContext } from './context-builder.js';
9
10
  const __filename = fileURLToPath(import.meta.url);
@@ -30,8 +31,33 @@ export class ProjectGenerator {
30
31
  spinner.stop('❌ Directory already exists');
31
32
  throw new Error(`Directory "${config.projectName}" already exists!`);
32
33
  }
33
- // 2. Determine template path (Always use local templates)
34
- const templatePath = await this.getLocalTemplatePath(config);
34
+ // 2. Determine template path (Local or Custom Repo)
35
+ let templatePath;
36
+ let tempDir = null;
37
+ if (config.customTemplate) {
38
+ spinner.message(`📥 Downloading custom template: ${config.customTemplate}...`);
39
+ const tmpName = `.kybernus-tmp-${Date.now()}`;
40
+ tempDir = path.join(outputDir, tmpName);
41
+ try {
42
+ const emitter = degit(config.customTemplate, {
43
+ cache: false,
44
+ force: true,
45
+ verbose: true
46
+ });
47
+ await emitter.clone(tempDir);
48
+ templatePath = tempDir;
49
+ spinner.message('🏗️ Gerando projeto a partir do template customizado...');
50
+ }
51
+ catch (err) {
52
+ if (tempDir)
53
+ await fs.remove(tempDir);
54
+ spinner.stop('❌ Erro ao baixar template');
55
+ throw new Error(`Failed to download template "${config.customTemplate}": ${err.message}`);
56
+ }
57
+ }
58
+ else {
59
+ templatePath = await this.getLocalTemplatePath(config);
60
+ }
35
61
  // Check if template exists
36
62
  if (!templatePath || !(await fs.pathExists(templatePath))) {
37
63
  spinner.stop('❌ Template not found');
@@ -42,6 +68,20 @@ export class ProjectGenerator {
42
68
  const context = buildTemplateContext(config);
43
69
  // 4. Render all templates
44
70
  await this.engine.renderTree(templatePath, projectPath, context);
71
+ // Cleanup temp directory immediately after generation
72
+ if (tempDir) {
73
+ await fs.remove(tempDir);
74
+ }
75
+ // 4.5 Save Project Context (.kybernusrc.json) for future commands like "add"
76
+ const rcContent = {
77
+ projectName: config.projectName,
78
+ stack: config.stack,
79
+ architecture: config.architecture || 'mvc',
80
+ buildTool: config.buildTool || 'npm',
81
+ customTemplate: config.customTemplate || null,
82
+ createdAt: new Date().toISOString()
83
+ };
84
+ await fs.writeFile(path.join(projectPath, '.kybernusrc.json'), JSON.stringify(rcContent, null, 2), 'utf-8');
45
85
  // 5. Generate AI documentation (if enabled)
46
86
  if (config.useAI && config.geminiKey) {
47
87
  spinner.message('🤖 Generating AI documentation...');
@@ -65,7 +105,7 @@ export class ProjectGenerator {
65
105
  async getLocalTemplatePath(config) {
66
106
  const templatesRoot = path.join(__dirname, '../../../templates');
67
107
  // Architecture defaults
68
- const architecture = config.architecture || (config.stack === 'nextjs' ? 'mvc' : 'mvc');
108
+ const architecture = config.architecture || (config.stack === 'nextjs' ? 'mvc' : (config.stack === 'n8n' ? 'default' : 'mvc'));
69
109
  // Check path directly under stack/architecture
70
110
  const templatePath = path.join(templatesRoot, config.stack, architecture);
71
111
  return templatePath;
@@ -145,6 +185,11 @@ export class ProjectGenerator {
145
185
  install: 'Install dependencies:\n npm install',
146
186
  run: 'Start the server:\n npm run start:dev',
147
187
  };
188
+ case 'n8n':
189
+ return {
190
+ install: 'Configure your .env file with appropriate credentials',
191
+ run: 'Start the automation engine:\n docker-compose up -d --build',
192
+ };
148
193
  default:
149
194
  return {
150
195
  install: 'See README.md',
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAoB;;IAOtC;;OAEG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjF;;OAEG;IACG,UAAU,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAmChB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAoB;;IAOtC;;OAEG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjF;;OAEG;IACG,UAAU,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAwChB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
@@ -39,6 +39,10 @@ export class TemplateEngine {
39
39
  }
40
40
  // Renderiza o template
41
41
  const content = await this.renderFile(file, context);
42
+ // Skip files that rendered to nothing (e.g. wrapped in {{#if false}})
43
+ if (!content || !content.trim()) {
44
+ continue;
45
+ }
42
46
  // Escreve o arquivo
43
47
  await fs.ensureDir(path.dirname(outputPath));
44
48
  await fs.writeFile(outputPath, content, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C;;GAEG;AACH,MAAM,OAAO,cAAc;IACf,UAAU,CAAoB;IAEtC;QACI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,OAAwB;QAC3D,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACZ,WAAmB,EACnB,SAAiB,EACjB,OAAwB;QAExB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEtD,gFAAgF;YAChF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;YAErE,uBAAuB;YACvB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEnD,+CAA+C;YAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC5C,SAAS;YACb,CAAC;YAED,uBAAuB;YACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAErD,oBAAoB;YACpB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjD,2CAA2C;YAC3C,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,GAAW;QACzC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAAgB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACJ"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,10 @@
2
2
  import { Command } from 'commander';
3
3
  import { initCommand } from './cli/commands/init.js';
4
4
  import { analyticsCommand } from './cli/commands/analytics.js';
5
+ import { doctorCommand } from './cli/commands/doctor.js';
6
+ import { addCommand } from './cli/commands/add.js';
7
+ import { authCommand } from './cli/commands/auth.js';
8
+ import { deployCommand } from './cli/commands/deploy.js';
5
9
  import { createRequire } from 'module';
6
10
  const requirePkg = createRequire(import.meta.url);
7
11
  const pkg = requirePkg('../package.json');
@@ -14,12 +18,17 @@ program
14
18
  .command('init')
15
19
  .description('Initialize a new project')
16
20
  .option('-n, --name <name>', 'Project name')
17
- .option('-s, --stack <stack>', 'Technology stack (nextjs, java-spring, nodejs-express, python-fastapi, nestjs)')
18
- .option('-a, --architecture <arch>', 'Architecture (mvc, clean, hexagonal)')
21
+ .option('-s, --stack <stack>', 'Technology stack (nextjs, java-spring, nodejs-express, python-fastapi, nestjs, n8n)')
22
+ .option('-a, --architecture <arch>', 'Architecture or Template/Use-case (mvc, clean, hexagonal, default, ai-assistant, crm-tracker, system-monitor)')
23
+ .option('-t, --template <repo>', 'Use a custom template from a Git repository (e.g., github:user/repo)')
19
24
  .option('-b, --build-tool <tool>', 'Build tool (maven, gradle, npm, pnpm, yarn)')
20
25
  .option('--no-ai', 'Skip AI documentation generation')
21
26
  .option('--non-interactive', 'Run in non-interactive mode (requires all options)')
22
27
  .action(initCommand);
23
28
  program.addCommand(analyticsCommand);
29
+ program.addCommand(doctorCommand);
30
+ program.addCommand(addCommand);
31
+ program.addCommand(authCommand);
32
+ program.addCommand(deployCommand);
24
33
  program.parse();
25
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1B,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,gFAAgF,CAAC;KAC/G,MAAM,CAAC,2BAA2B,EAAE,sCAAsC,CAAC;KAC3E,MAAM,CAAC,yBAAyB,EAAE,6CAA6C,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1B,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,qFAAqF,CAAC;KACpH,MAAM,CAAC,2BAA2B,EAAE,+GAA+G,CAAC;KACpJ,MAAM,CAAC,uBAAuB,EAAE,sEAAsE,CAAC;KACvG,MAAM,CAAC,yBAAyB,EAAE,6CAA6C,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,9 +1,10 @@
1
- export type Stack = 'nextjs' | 'java-spring' | 'nodejs-express' | 'python-fastapi' | 'nestjs';
1
+ export type Stack = 'nextjs' | 'java-spring' | 'nodejs-express' | 'python-fastapi' | 'nestjs' | 'n8n';
2
2
  export type Architecture = 'mvc' | 'clean' | 'hexagonal' | 'default';
3
3
  export type BuildTool = 'maven' | 'gradle' | 'npm' | 'pnpm' | 'yarn';
4
4
  export interface ProjectConfig {
5
5
  projectName: string;
6
6
  stack: Stack;
7
+ customTemplate?: string;
7
8
  architecture?: Architecture;
8
9
  buildTool?: BuildTool;
9
10
  packageName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/models/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACX,QAAQ,GACR,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,CAAC;AAEf,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;KACtB,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/models/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACX,QAAQ,GACR,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,KAAK,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;KACtB,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kybernus",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "description": "The Ultimate Scaffolding CLI for Modern Developers",
6
6
  "main": "dist/index.js",
@@ -44,6 +44,7 @@
44
44
  "files": [
45
45
  "dist",
46
46
  "templates",
47
+ "add-features",
47
48
  "README.md",
48
49
  "LICENSE"
49
50
  ],
@@ -52,6 +53,7 @@
52
53
  "@google/genai": "^1.40.0",
53
54
  "commander": "^14.0.2",
54
55
  "conf": "^15.0.2",
56
+ "degit": "^2.8.4",
55
57
  "fs-extra": "^11.3.3",
56
58
  "handlebars": "^4.7.8",
57
59
  "posthog-node": "^5.21.2"
@@ -66,6 +68,7 @@
66
68
  "posthog-node"
67
69
  ],
68
70
  "devDependencies": {
71
+ "@types/degit": "^2.8.6",
69
72
  "@types/fs-extra": "^11.0.4",
70
73
  "@types/node": "^25.0.9",
71
74
  "rimraf": "^6.1.2",
@@ -75,5 +78,14 @@
75
78
  },
76
79
  "overrides": {
77
80
  "rimraf": "^6.1.2"
78
- }
79
- }
81
+ },
82
+ "bundleDependencies": [
83
+ "@clack/prompts",
84
+ "@google/genai",
85
+ "commander",
86
+ "conf",
87
+ "fs-extra",
88
+ "handlebars",
89
+ "posthog-node"
90
+ ]
91
+ }
@@ -0,0 +1,14 @@
1
+ # Application setup
2
+ N8N_HOST=localhost
3
+ N8N_PROTOCOL=http
4
+ WEBHOOK_URL=http://localhost:5678/
5
+ GENERIC_TIMEZONE=America/Sao_Paulo
6
+
7
+ # n8n Basic Auth
8
+ N8N_BASIC_AUTH_USER=admin
9
+ N8N_BASIC_AUTH_PASSWORD=CHANGE_THIS_SUPER_SECURE_PASSWORD
10
+
11
+ # Database setup
12
+ POSTGRES_USER=n8n
13
+ POSTGRES_PASSWORD=CHANGE_THIS_DB_PASSWORD
14
+ POSTGRES_DB=n8n
@@ -0,0 +1,6 @@
1
+ node_modules
2
+ .env
3
+ dist
4
+ .DS_Store
5
+ *.log
6
+ local_files/
@@ -0,0 +1,17 @@
1
+ FROM n8nio/n8n:latest
2
+
3
+ USER root
4
+
5
+ # Install Python 3, pip, and clean up
6
+ RUN apk add --no-cache python3 py3-pip && \
7
+ python3 -m venv /opt/venv && \
8
+ /opt/venv/bin/pip install --upgrade pip setuptools wheel && \
9
+ /opt/venv/bin/pip install requests pandas numpy python-dateutil
10
+
11
+ # Make sure the virtualenv is in PATH
12
+ ENV PATH="/opt/venv/bin:$PATH"
13
+
14
+ # Example: Install global node modules if needed
15
+ # RUN npm install -g axios
16
+
17
+ USER node
@@ -0,0 +1,11 @@
1
+ # {{projectName}} - AI Assistant (n8n)
2
+
3
+ This is a ready-to-use n8n template for an AI Customer Support Assistant using OpenAI.
4
+
5
+ ## Getting Started
6
+ 1. `cp .env.example .env` and adjust your database and basic auth passwords.
7
+ 2. Start the setup: `docker-compose up -d --build`
8
+ 3. Access n8n at `http://localhost:5678` using your basic auth credentials.
9
+ 4. Import `workflows/ai-assistant.json` and the global error handler into n8n.
10
+ 5. In n8n, create an OpenAI Credential and paste your API Key.
11
+ 6. Copy the Webhook URL from the trigger node and point your frontend or chat API to it.
@@ -0,0 +1,60 @@
1
+ # {{projectName}} — AI Assistant Setup Guide
2
+
3
+ > Tempo estimado: **10 minutos**
4
+
5
+ ## Passo 1: Configure o ambiente
6
+
7
+ ```bash
8
+ cp .env.example .env
9
+ ```
10
+
11
+ Edite o `.env` com suas senhas e credenciais (veja a tabela no `README.md`).
12
+
13
+ ## Passo 2: Suba os containers
14
+
15
+ ```bash
16
+ docker-compose up -d --build
17
+ ```
18
+
19
+ ## Passo 3: Acesse o n8n
20
+
21
+ Abra **http://localhost:5678** e faça login com as credenciais do `.env`.
22
+
23
+ ## Passo 4: Importe os workflows
24
+
25
+ 1. Vá em **Workflows → Import from File**
26
+ 2. Importe nesta ordem:
27
+ - `workflows/global-error-handler.json`
28
+ - `workflows/auto-backup.json`
29
+ - `workflows/ai-assistant.json`
30
+
31
+ ## Passo 5: Configure a credencial da OpenAI
32
+
33
+ 1. Vá em **Settings → Credentials → Add Credential**
34
+ 2. Selecione **OpenAI**
35
+ 3. Cole sua **API Key** (obtenha em https://platform.openai.com/api-keys)
36
+ 4. Salve como `OpenAI account`
37
+
38
+ ## Passo 6: Configure o workflow AI Assistant
39
+
40
+ 1. Abra o workflow `AI Assistant (Webhook -> OpenAI)`
41
+ 2. Clique no nó **OpenAI**
42
+ 3. Em **Credential**, selecione a que você acabou de criar
43
+ 4. Em **Prompt**, clique no ícone de expressão (`=`) e selecione o campo da mensagem vindo do Webhook (ex: `{{ $json.body.message }}`)
44
+ 5. Ajuste o **Model** para o modelo desejado (ex: `gpt-4o`)
45
+
46
+ ## Passo 7: Copie a URL do Webhook
47
+
48
+ 1. Clique no nó **Webhook**
49
+ 2. Copie a **Production URL** exibida
50
+ 3. Configure seu frontend ou sistema de mensagens para fazer `POST` nessa URL com o body: `{ "message": "texto aqui" }`
51
+
52
+ ## Passo 8: Ative o workflow e teste
53
+
54
+ 1. Clique em **Activate** (toggle superior direito)
55
+ 2. Faça um `POST` de teste via curl ou Postman:
56
+ ```bash
57
+ curl -X POST https://SEU_WEBHOOK_URL \
58
+ -H "Content-Type: application/json" \
59
+ -d '{"message": "Olá, como posso ser ajudado?"}'
60
+ ```
@@ -0,0 +1,60 @@
1
+ version: '3.8'
2
+
3
+ volumes:
4
+ db_data:
5
+ n8n_data:
6
+
7
+ services:
8
+ postgres:
9
+ image: postgres:16-alpine
10
+ restart: always
11
+ environment:
12
+ - POSTGRES_USER
13
+ - POSTGRES_PASSWORD
14
+ - POSTGRES_DB
15
+ volumes:
16
+ - db_data:/var/lib/postgresql/data
17
+ healthcheck:
18
+ test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
19
+ interval: 5s
20
+ timeout: 5s
21
+ retries: 10
22
+
23
+ n8n:
24
+ build:
25
+ context: .
26
+ dockerfile: Dockerfile
27
+ restart: always
28
+ environment:
29
+ - DB_TYPE=postgresdb
30
+ - DB_POSTGRESDB_HOST=postgres
31
+ - DB_POSTGRESDB_PORT=5432
32
+ - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
33
+ - DB_POSTGRESDB_USER=${POSTGRES_USER}
34
+ - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
35
+ - N8N_BASIC_AUTH_ACTIVE=true
36
+ - N8N_BASIC_AUTH_USER
37
+ - N8N_BASIC_AUTH_PASSWORD
38
+ - N8N_HOST=${N8N_HOST:-localhost}
39
+ - N8N_PORT=5678
40
+ - N8N_PROTOCOL=${N8N_PROTOCOL:-http}
41
+ - NODE_ENV=production
42
+ - WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
43
+ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-America/Sao_Paulo}
44
+ # Best Practices configurations
45
+ - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
46
+ - EXECUTIONS_DATA_SAVE_ON_ERROR=all
47
+ - EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
48
+ - EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
49
+ - EXECUTIONS_DATA_PRUNE=true
50
+ - EXECUTIONS_DATA_MAX_AGE=168 # 7 days
51
+ - EXECUTIONS_DATA_PRUNE_TIMEOUT=3600
52
+ ports:
53
+ - "5678:5678"
54
+ volumes:
55
+ - n8n_data:/home/node/.n8n
56
+ - ./local_files:/files
57
+ - ./workflows:/workflows
58
+ depends_on:
59
+ postgres:
60
+ condition: service_healthy
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "AI Assistant (Webhook -> OpenAI)",
3
+ "nodes": [
4
+ {
5
+ "parameters": {
6
+ "httpMethod": "POST",
7
+ "path": "ai-chat",
8
+ "responseMode": "lastNode"
9
+ },
10
+ "name": "Webhook",
11
+ "type": "n8n-nodes-base.webhook",
12
+ "typeVersion": 1,
13
+ "position": [250, 300]
14
+ },
15
+ {
16
+ "parameters": {
17
+ "model": "gpt-4o",
18
+ "prompt": "CONFIGURE: Wire this to the Webhook output field containing the user message"
19
+ },
20
+ "name": "OpenAI",
21
+ "type": "n8n-nodes-base.openAi",
22
+ "typeVersion": 1,
23
+ "position": [450, 300]
24
+ }
25
+ ],
26
+ "connections": {
27
+ "Webhook": {
28
+ "main": [[{ "node": "OpenAI", "type": "main", "index": 0 }]]
29
+ }
30
+ },
31
+ "settings": {}
32
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "Auto Backup Workflows",
3
+ "nodes": [
4
+ {
5
+ "parameters": {
6
+ "rule": {
7
+ "interval": [
8
+ {
9
+ "field": "hours",
10
+ "hoursInterval": 24
11
+ }
12
+ ]
13
+ }
14
+ },
15
+ "name": "Schedule",
16
+ "type": "n8n-nodes-base.scheduleTrigger",
17
+ "typeVersion": 1,
18
+ "position": [250, 300]
19
+ },
20
+ {
21
+ "parameters": {
22
+ "resource": "workflow",
23
+ "operation": "getAll"
24
+ },
25
+ "name": "n8n API - Get Workflows",
26
+ "type": "n8n-nodes-base.n8nApi",
27
+ "typeVersion": 1,
28
+ "position": [450, 300],
29
+ "credentials": {
30
+ "n8nApi": {
31
+ "id": "1",
32
+ "name": "n8n default API"
33
+ }
34
+ }
35
+ }
36
+ ],
37
+ "connections": {
38
+ "Schedule": {
39
+ "main": [[{ "node": "n8n API - Get Workflows", "type": "main", "index": 0 }]]
40
+ }
41
+ },
42
+ "settings": {}
43
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "Global Error Handler",
3
+ "nodes": [
4
+ {
5
+ "parameters": {},
6
+ "name": "Error Trigger",
7
+ "type": "n8n-nodes-base.errorTrigger",
8
+ "typeVersion": 1,
9
+ "position": [250, 300]
10
+ },
11
+ {
12
+ "parameters": {
13
+ "chatId": "YOUR_TELEGRAM_CHAT_ID",
14
+ "text": "CONFIGURE: Use n8n expression to read $json.execution.workflowName, $json.execution.error.message"
15
+ },
16
+ "name": "Telegram Alert",
17
+ "type": "n8n-nodes-base.telegram",
18
+ "typeVersion": 1,
19
+ "position": [450, 300]
20
+ }
21
+ ],
22
+ "connections": {
23
+ "Error Trigger": {
24
+ "main": [[{ "node": "Telegram Alert", "type": "main", "index": 0 }]]
25
+ }
26
+ },
27
+ "settings": {}
28
+ }
@@ -0,0 +1,14 @@
1
+ # Application setup
2
+ N8N_HOST=localhost
3
+ N8N_PROTOCOL=http
4
+ WEBHOOK_URL=http://localhost:5678/
5
+ GENERIC_TIMEZONE=America/Sao_Paulo
6
+
7
+ # n8n Basic Auth
8
+ N8N_BASIC_AUTH_USER=admin
9
+ N8N_BASIC_AUTH_PASSWORD=CHANGE_THIS_SUPER_SECURE_PASSWORD
10
+
11
+ # Database setup
12
+ POSTGRES_USER=n8n
13
+ POSTGRES_PASSWORD=CHANGE_THIS_DB_PASSWORD
14
+ POSTGRES_DB=n8n
@@ -0,0 +1,6 @@
1
+ node_modules
2
+ .env
3
+ dist
4
+ .DS_Store
5
+ *.log
6
+ local_files/
@@ -0,0 +1,17 @@
1
+ FROM n8nio/n8n:latest
2
+
3
+ USER root
4
+
5
+ # Install Python 3, pip, and clean up
6
+ RUN apk add --no-cache python3 py3-pip && \
7
+ python3 -m venv /opt/venv && \
8
+ /opt/venv/bin/pip install --upgrade pip setuptools wheel && \
9
+ /opt/venv/bin/pip install requests pandas numpy python-dateutil
10
+
11
+ # Make sure the virtualenv is in PATH
12
+ ENV PATH="/opt/venv/bin:$PATH"
13
+
14
+ # Example: Install global node modules if needed
15
+ # RUN npm install -g axios
16
+
17
+ USER node
@@ -0,0 +1,11 @@
1
+ # {{projectName}} - CRM Enrichment (n8n)
2
+
3
+ This is a ready-to-use n8n template for B2B Lead Enrichment using Google Sheets and your CRM (e.g. HubSpot).
4
+
5
+ ## Getting Started
6
+ 1. `cp .env.example .env` and adjust your database and basic auth passwords.
7
+ 2. Start the setup: `docker-compose up -d --build`
8
+ 3. Access n8n at `http://localhost:5678`.
9
+ 4. Import `workflows/crm-enrichment.json` and the global error handler into n8n.
10
+ 5. Set up your Google Sheets credentials and CRM credentials inside the respective n8n nodes.
11
+ 6. Configure the schedule trigger for how often it should fetch new leads.