@dewtech/dare-cli 2.17.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.
- package/README.md +98 -3
- package/dist/__tests__/confidence.test.d.ts +2 -0
- package/dist/__tests__/confidence.test.d.ts.map +1 -0
- package/dist/__tests__/confidence.test.js +73 -0
- package/dist/__tests__/confidence.test.js.map +1 -0
- package/dist/__tests__/datamodel.test.d.ts +2 -0
- package/dist/__tests__/datamodel.test.d.ts.map +1 -0
- package/dist/__tests__/datamodel.test.js +131 -0
- package/dist/__tests__/datamodel.test.js.map +1 -0
- package/dist/__tests__/dna-detector.test.d.ts +2 -0
- package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
- package/dist/__tests__/dna-detector.test.js +97 -0
- package/dist/__tests__/dna-detector.test.js.map +1 -0
- package/dist/__tests__/dna-facts.test.d.ts +2 -0
- package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
- package/dist/__tests__/dna-facts.test.js +44 -0
- package/dist/__tests__/dna-facts.test.js.map +1 -0
- package/dist/__tests__/graph-renderer.test.d.ts +2 -0
- package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
- package/dist/__tests__/graph-renderer.test.js +85 -0
- package/dist/__tests__/graph-renderer.test.js.map +1 -0
- package/dist/__tests__/migration.test.d.ts +2 -0
- package/dist/__tests__/migration.test.d.ts.map +1 -0
- package/dist/__tests__/migration.test.js +77 -0
- package/dist/__tests__/migration.test.js.map +1 -0
- package/dist/__tests__/module-detector.test.d.ts +2 -0
- package/dist/__tests__/module-detector.test.d.ts.map +1 -0
- package/dist/__tests__/module-detector.test.js +83 -0
- package/dist/__tests__/module-detector.test.js.map +1 -0
- package/dist/__tests__/refine.test.js +49 -49
- package/dist/__tests__/reverse-facts.test.d.ts +2 -0
- package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-facts.test.js +78 -0
- package/dist/__tests__/reverse-facts.test.js.map +1 -0
- package/dist/__tests__/review.test.js +38 -38
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +32 -3
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/blueprint.js +122 -122
- package/dist/commands/dag.d.ts.map +1 -1
- package/dist/commands/dag.js +43 -79
- package/dist/commands/dag.js.map +1 -1
- package/dist/commands/dna.d.ts +3 -0
- package/dist/commands/dna.d.ts.map +1 -0
- package/dist/commands/dna.js +69 -0
- package/dist/commands/dna.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +101 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/new.d.ts +16 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +103 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/reverse.d.ts +3 -0
- package/dist/commands/reverse.d.ts.map +1 -0
- package/dist/commands/reverse.js +201 -0
- package/dist/commands/reverse.js.map +1 -0
- package/dist/commands/welcome.d.ts +14 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +29 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/skills/commands/add.d.ts +23 -0
- package/dist/skills/commands/add.d.ts.map +1 -0
- package/dist/skills/commands/add.js +206 -0
- package/dist/skills/commands/add.js.map +1 -0
- package/dist/skills/commands/info.d.ts +14 -0
- package/dist/skills/commands/info.d.ts.map +1 -0
- package/dist/skills/commands/info.js +99 -0
- package/dist/skills/commands/info.js.map +1 -0
- package/dist/skills/commands/list.d.ts +19 -0
- package/dist/skills/commands/list.d.ts.map +1 -0
- package/dist/skills/commands/list.js +163 -0
- package/dist/skills/commands/list.js.map +1 -0
- package/dist/skills/commands/publish.d.ts +56 -0
- package/dist/skills/commands/publish.d.ts.map +1 -0
- package/dist/skills/commands/publish.js +272 -0
- package/dist/skills/commands/publish.js.map +1 -0
- package/dist/skills/commands/remove.d.ts +19 -0
- package/dist/skills/commands/remove.d.ts.map +1 -0
- package/dist/skills/commands/remove.js +96 -0
- package/dist/skills/commands/remove.js.map +1 -0
- package/dist/skills/commands/update.d.ts +31 -0
- package/dist/skills/commands/update.d.ts.map +1 -0
- package/dist/skills/commands/update.js +132 -0
- package/dist/skills/commands/update.js.map +1 -0
- package/dist/skills/index.d.ts +22 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +33 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/manifest.d.ts +54 -0
- package/dist/skills/manifest.d.ts.map +1 -0
- package/dist/skills/manifest.js +162 -0
- package/dist/skills/manifest.js.map +1 -0
- package/dist/skills/registry-local.d.ts +67 -0
- package/dist/skills/registry-local.d.ts.map +1 -0
- package/dist/skills/registry-local.js +130 -0
- package/dist/skills/registry-local.js.map +1 -0
- package/dist/skills/registry-mock.json +109 -0
- package/dist/skills/registry-remote.d.ts +110 -0
- package/dist/skills/registry-remote.d.ts.map +1 -0
- package/dist/skills/registry-remote.js +246 -0
- package/dist/skills/registry-remote.js.map +1 -0
- package/dist/skills/registry.d.ts +49 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +94 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/tests/manifest.spec.d.ts +8 -0
- package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
- package/dist/skills/tests/manifest.spec.js +176 -0
- package/dist/skills/tests/manifest.spec.js.map +1 -0
- package/dist/skills/tests/publish.spec.d.ts +12 -0
- package/dist/skills/tests/publish.spec.d.ts.map +1 -0
- package/dist/skills/tests/publish.spec.js +276 -0
- package/dist/skills/tests/publish.spec.js.map +1 -0
- package/dist/skills/tests/registry-local.spec.d.ts +8 -0
- package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry-local.spec.js +231 -0
- package/dist/skills/tests/registry-local.spec.js.map +1 -0
- package/dist/skills/tests/registry.spec.d.ts +7 -0
- package/dist/skills/tests/registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry.spec.js +58 -0
- package/dist/skills/tests/registry.spec.js.map +1 -0
- package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
- package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/remote-registry.spec.js +357 -0
- package/dist/skills/tests/remote-registry.spec.js.map +1 -0
- package/dist/skills/tests/update.spec.d.ts +9 -0
- package/dist/skills/tests/update.spec.d.ts.map +1 -0
- package/dist/skills/tests/update.spec.js +166 -0
- package/dist/skills/tests/update.spec.js.map +1 -0
- package/dist/utils/banner.d.ts +28 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +77 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/banner.spec.d.ts +5 -0
- package/dist/utils/banner.spec.d.ts.map +1 -0
- package/dist/utils/banner.spec.js +253 -0
- package/dist/utils/banner.spec.js.map +1 -0
- package/dist/utils/confidence.d.ts +41 -0
- package/dist/utils/confidence.d.ts.map +1 -0
- package/dist/utils/confidence.js +101 -0
- package/dist/utils/confidence.js.map +1 -0
- package/dist/utils/datamodel.d.ts +41 -0
- package/dist/utils/datamodel.d.ts.map +1 -0
- package/dist/utils/datamodel.js +535 -0
- package/dist/utils/datamodel.js.map +1 -0
- package/dist/utils/dna-detector.d.ts +61 -0
- package/dist/utils/dna-detector.d.ts.map +1 -0
- package/dist/utils/dna-detector.js +354 -0
- package/dist/utils/dna-detector.js.map +1 -0
- package/dist/utils/dna-facts.d.ts +13 -0
- package/dist/utils/dna-facts.d.ts.map +1 -0
- package/dist/utils/dna-facts.js +109 -0
- package/dist/utils/dna-facts.js.map +1 -0
- package/dist/utils/excalidraw-renderer.d.ts +11 -71
- package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
- package/dist/utils/excalidraw-renderer.js +29 -162
- package/dist/utils/excalidraw-renderer.js.map +1 -1
- package/dist/utils/graph-renderer.d.ts +115 -0
- package/dist/utils/graph-renderer.d.ts.map +1 -0
- package/dist/utils/graph-renderer.js +216 -0
- package/dist/utils/graph-renderer.js.map +1 -0
- package/dist/utils/migration.d.ts +64 -0
- package/dist/utils/migration.d.ts.map +1 -0
- package/dist/utils/migration.js +183 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/module-detector.d.ts +46 -0
- package/dist/utils/module-detector.d.ts.map +1 -0
- package/dist/utils/module-detector.js +348 -0
- package/dist/utils/module-detector.js.map +1 -0
- package/dist/utils/project-generator.js +252 -252
- package/dist/utils/reverse-facts.d.ts +50 -0
- package/dist/utils/reverse-facts.d.ts.map +1 -0
- package/dist/utils/reverse-facts.js +291 -0
- package/dist/utils/reverse-facts.js.map +1 -0
- package/dist/utils/stack-bootstrap.js +371 -371
- package/package.json +8 -3
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +48 -48
- package/templates/backend/node-nestjs/.env.example +9 -9
- package/templates/backend/node-nestjs/nest-cli.json +8 -8
- package/templates/backend/node-nestjs/package.json +50 -50
- package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
- package/templates/backend/node-nestjs/src/app.module.ts +15 -15
- package/templates/backend/node-nestjs/src/app.service.ts +8 -8
- package/templates/backend/node-nestjs/src/main.ts +24 -24
- package/templates/backend/node-nestjs/tsconfig.json +21 -21
- package/templates/backend/php-laravel/.env.example +22 -22
- package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
- package/templates/backend/php-laravel/composer.json +40 -40
- package/templates/backend/python-fastapi/.env.example +4 -4
- package/templates/backend/python-fastapi/app/api/router.py +8 -8
- package/templates/backend/python-fastapi/app/core/config.py +20 -20
- package/templates/backend/python-fastapi/main.py +35 -35
- package/templates/backend/python-fastapi/requirements.txt +13 -13
- package/templates/backend/rust-axum/.env.example +3 -3
- package/templates/backend/rust-axum/Cargo.toml +23 -23
- package/templates/backend/rust-axum/src/errors.rs +30 -30
- package/templates/backend/rust-axum/src/main.rs +32 -32
- package/templates/backend/rust-axum/src/routes.rs +6 -6
- package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
- package/templates/frontend/leptos-csr/Cargo.toml +16 -16
- package/templates/frontend/leptos-csr/Trunk.toml +10 -10
- package/templates/frontend/leptos-csr/index.html +11 -11
- package/templates/frontend/leptos-csr/src/lib.rs +20 -20
- package/templates/frontend/leptos-csr/style/main.scss +19 -19
- package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
- package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
- package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
- package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
- package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
- package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
- package/templates/frontend/react/index.html +12 -12
- package/templates/frontend/react/package.json +35 -35
- package/templates/frontend/react/src/App.tsx +25 -25
- package/templates/frontend/react/src/main.tsx +9 -9
- package/templates/frontend/vue/package.json +32 -32
- package/templates/frontend/vue/src/App.vue +7 -7
- package/templates/frontend/vue/src/main.ts +10 -10
- package/templates/frontend/vue/src/router/index.ts +14 -14
- package/templates/frontend/vue/src/views/HomeView.vue +6 -6
- package/templates/hooks/pre-commit-dare-validate +24 -24
- package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
- package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
- package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
- package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
- package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
- package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
- package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
- package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
- package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
- package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
- package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
- package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
- package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
- package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
- package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
- package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
- package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
- package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
- package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
- package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
- package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
- package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
- package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
- package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
- package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
- package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
- package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
- package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
- package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
- package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
- package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
- package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
- package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
- package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
- package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
- package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
- package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
- package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
- package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
- package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
- package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
- package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
- package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
- package/templates/ide/claude/.claude/settings.example.json +35 -35
- package/templates/ide/claude/CLAUDE.md +146 -146
- package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/claude/templates/DESIGN-template.md +129 -129
- package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -86
- package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -184
- package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -107
- package/templates/ide/cursor/.cursor/commands/review-task.md +91 -91
- package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
- package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
- package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
- package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
- package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
- package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
- package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
- package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
- package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
- package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
- package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
- package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
- package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
- package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
- package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
- package/templates/shared/docker-compose.yml +41 -41
- package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
- package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
- package/dist/__tests__/dag-runner/adapters.test.js +0 -134
- package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
- package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
- package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
- package/dist/dag-runner/adapters/antigravity.js +0 -54
- package/dist/dag-runner/adapters/antigravity.js.map +0 -1
- package/dist/dag-runner/adapters/claude.d.ts +0 -6
- package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
- package/dist/dag-runner/adapters/claude.js +0 -48
- package/dist/dag-runner/adapters/claude.js.map +0 -1
- package/dist/dag-runner/adapters/cursor.d.ts +0 -6
- package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
- package/dist/dag-runner/adapters/cursor.js +0 -58
- package/dist/dag-runner/adapters/cursor.js.map +0 -1
- package/dist/dag-runner/adapters/index.d.ts +0 -46
- package/dist/dag-runner/adapters/index.d.ts.map +0 -1
- package/dist/dag-runner/adapters/index.js +0 -55
- package/dist/dag-runner/adapters/index.js.map +0 -1
- package/dist/dag-runner/utils/timeout.d.ts +0 -27
- package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
- package/dist/dag-runner/utils/timeout.js +0 -55
- package/dist/dag-runner/utils/timeout.js.map +0 -1
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"releases": {
|
|
4
|
-
"2.16.0": {
|
|
5
|
-
"releasedAt": "2026-05-10",
|
|
6
|
-
"summary": "Excalidraw DAG visualization",
|
|
7
|
-
"changelog": "Adiciona renderer Excalidraw para visualizar o DAG (tasks + dependências) em diagrama interativo.",
|
|
8
|
-
"changes": []
|
|
9
|
-
},
|
|
10
|
-
"2.17.0": {
|
|
11
|
-
"releasedAt": "2026-05-16",
|
|
12
|
-
"summary": "dare update + dare review + dare refine + Anti-Stub Contract",
|
|
13
|
-
"changelog": "Release grande, três frentes complementares que resolvem três problemas reais:\n\n## 1. `dare update` — sincronizar projeto com CLI\n\nDev atualiza o CLI globalmente (npm install -g @dewtech/dare-cli@latest) e roda `dare update` em cada projeto pra puxar templates / skills / commands novos — sem mexer em DESIGN, BLUEPRINT, TASKS, dare-dag.yaml. UPDATE-MANIFEST.json declarativo lista changes + migrations por release. Backup automático em `.dare/backup-<version>/`. Detecção de customizações por hash SHA-256 (keep / replace / force). Filtro por IDE configurado.\n\nFlags: `--dry-run`, `--yes`, `--force`, `--target <version>`.\n\n## 2. `dare review` + `dare refine` — Anti-stub gates\n\nProblema: tasks marcadas como DONE com código mockado, stubs, esqueletos de função, TODOs pendentes.\n\n`dare review <task-id>`:\n- Camada estática (regex): TODO/FIXME/XXX/HACK, throw new Error('not implemented'), unimplemented!(), todo!(), NotImplementedError, funções vazias, retorno-fantasma (return null como única statement), mocks fora de testes (jest.fn, vi.mock, sinon.stub, MagicMock), placeholders\n- Camada semântica (opt-in via `--from-agent <verdict.json>`): IDE agent valida critério-a-critério se implementação satisfaz spec\n- Skills `dare-review` (Claude Code), `review-task` (Cursor), `dare-review` (Antigravity) produzem o verdito semântico\n- Gate opt-in no Ralph Loop: `review.onComplete: true` no dare.config.json bloqueia `dare execute --complete` quando review falha\n\n`dare refine <task-id>`:\n- Heurística determinística de complexidade: # arquivos, # funções/endpoints, # testes, # deps, keywords pesadas (refactor/migrate/integrate)\n- Buckets LOW (0-5) / MED (6-12) / HIGH (13-20) / CRITICAL (21+); thresholds configuráveis em `refine.thresholds`\n- `--split` propõe quebra em sub-tasks agrupadas por diretório\n- Skills `dare-refine` (todas IDEs) produzem split semântico (por camada, por endpoint, por feature, refactor-then-feature, migration-then-code)\n\n## 3. Anti-Stub Contract nos prompts de geração\n\nBlueprint e Tasks agora forçam especificação executável: para cada endpoint, função pública, evento ou job — assinatura completa, request/response shape por status code, validações enumeradas, edge cases, side effects, exemplos concretos. TASK-SPEC-template ganha seção 'PADRÕES PROIBIDOS' explícita e Definition of Done anti-mock obrigatório.\n\n## 4. Mudanças de schema em `dare.config.json`\n\n- Campo `version` agora rastreia a release do DARE (antes era placeholder zombie `0.1.0`).\n- Novo objeto `review`: `{ onComplete: false, strict: false }` (opt-in pra projetos legados, on para novos).\n- Novo objeto `refine`: `{ thresholds: { low: 5, med: 12, high: 20 } }`.\n\nMigrações `unify-version-field` e `add-review-refine-defaults` cuidam de projetos pré-2.17 automaticamente.",
|
|
14
|
-
"changes": [
|
|
15
|
-
{
|
|
16
|
-
"type": "modified",
|
|
17
|
-
"path": "dare.config.json#version",
|
|
18
|
-
"description": "Campo `version` agora rastreia a release do DARE (antes era placeholder `0.1.0` zombie)",
|
|
19
|
-
"appliesTo": ["*"]
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"type": "added",
|
|
23
|
-
"path": "dare.config.json#review",
|
|
24
|
-
"description": "Adiciona objeto `review` ({ onComplete, strict }) em dare.config.json — gate opt-in pré-DONE no Ralph Loop",
|
|
25
|
-
"appliesTo": ["*"]
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"type": "added",
|
|
29
|
-
"path": "dare.config.json#refine",
|
|
30
|
-
"description": "Adiciona objeto `refine.thresholds` em dare.config.json para customizar buckets de complexidade",
|
|
31
|
-
"appliesTo": ["*"]
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
"migrations": [
|
|
35
|
-
{
|
|
36
|
-
"id": "unify-version-field",
|
|
37
|
-
"description": "Migra `dareVersion` → `version` e substitui o placeholder legacy `0.1.0` por `2.16.0` quando necessário",
|
|
38
|
-
"optional": false
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "add-review-refine-defaults",
|
|
42
|
-
"description": "Adiciona `review: { onComplete: false, strict: false }` e `refine: { thresholds: ... }` em projetos pré-2.17 (opt-in — não ativa o gate automaticamente)",
|
|
43
|
-
"optional": false
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"releases": {
|
|
4
|
+
"2.16.0": {
|
|
5
|
+
"releasedAt": "2026-05-10",
|
|
6
|
+
"summary": "Excalidraw DAG visualization",
|
|
7
|
+
"changelog": "Adiciona renderer Excalidraw para visualizar o DAG (tasks + dependências) em diagrama interativo.",
|
|
8
|
+
"changes": []
|
|
9
|
+
},
|
|
10
|
+
"2.17.0": {
|
|
11
|
+
"releasedAt": "2026-05-16",
|
|
12
|
+
"summary": "dare update + dare review + dare refine + Anti-Stub Contract",
|
|
13
|
+
"changelog": "Release grande, três frentes complementares que resolvem três problemas reais:\n\n## 1. `dare update` — sincronizar projeto com CLI\n\nDev atualiza o CLI globalmente (npm install -g @dewtech/dare-cli@latest) e roda `dare update` em cada projeto pra puxar templates / skills / commands novos — sem mexer em DESIGN, BLUEPRINT, TASKS, dare-dag.yaml. UPDATE-MANIFEST.json declarativo lista changes + migrations por release. Backup automático em `.dare/backup-<version>/`. Detecção de customizações por hash SHA-256 (keep / replace / force). Filtro por IDE configurado.\n\nFlags: `--dry-run`, `--yes`, `--force`, `--target <version>`.\n\n## 2. `dare review` + `dare refine` — Anti-stub gates\n\nProblema: tasks marcadas como DONE com código mockado, stubs, esqueletos de função, TODOs pendentes.\n\n`dare review <task-id>`:\n- Camada estática (regex): TODO/FIXME/XXX/HACK, throw new Error('not implemented'), unimplemented!(), todo!(), NotImplementedError, funções vazias, retorno-fantasma (return null como única statement), mocks fora de testes (jest.fn, vi.mock, sinon.stub, MagicMock), placeholders\n- Camada semântica (opt-in via `--from-agent <verdict.json>`): IDE agent valida critério-a-critério se implementação satisfaz spec\n- Skills `dare-review` (Claude Code), `review-task` (Cursor), `dare-review` (Antigravity) produzem o verdito semântico\n- Gate opt-in no Ralph Loop: `review.onComplete: true` no dare.config.json bloqueia `dare execute --complete` quando review falha\n\n`dare refine <task-id>`:\n- Heurística determinística de complexidade: # arquivos, # funções/endpoints, # testes, # deps, keywords pesadas (refactor/migrate/integrate)\n- Buckets LOW (0-5) / MED (6-12) / HIGH (13-20) / CRITICAL (21+); thresholds configuráveis em `refine.thresholds`\n- `--split` propõe quebra em sub-tasks agrupadas por diretório\n- Skills `dare-refine` (todas IDEs) produzem split semântico (por camada, por endpoint, por feature, refactor-then-feature, migration-then-code)\n\n## 3. Anti-Stub Contract nos prompts de geração\n\nBlueprint e Tasks agora forçam especificação executável: para cada endpoint, função pública, evento ou job — assinatura completa, request/response shape por status code, validações enumeradas, edge cases, side effects, exemplos concretos. TASK-SPEC-template ganha seção 'PADRÕES PROIBIDOS' explícita e Definition of Done anti-mock obrigatório.\n\n## 4. Mudanças de schema em `dare.config.json`\n\n- Campo `version` agora rastreia a release do DARE (antes era placeholder zombie `0.1.0`).\n- Novo objeto `review`: `{ onComplete: false, strict: false }` (opt-in pra projetos legados, on para novos).\n- Novo objeto `refine`: `{ thresholds: { low: 5, med: 12, high: 20 } }`.\n\nMigrações `unify-version-field` e `add-review-refine-defaults` cuidam de projetos pré-2.17 automaticamente.",
|
|
14
|
+
"changes": [
|
|
15
|
+
{
|
|
16
|
+
"type": "modified",
|
|
17
|
+
"path": "dare.config.json#version",
|
|
18
|
+
"description": "Campo `version` agora rastreia a release do DARE (antes era placeholder `0.1.0` zombie)",
|
|
19
|
+
"appliesTo": ["*"]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "added",
|
|
23
|
+
"path": "dare.config.json#review",
|
|
24
|
+
"description": "Adiciona objeto `review` ({ onComplete, strict }) em dare.config.json — gate opt-in pré-DONE no Ralph Loop",
|
|
25
|
+
"appliesTo": ["*"]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"type": "added",
|
|
29
|
+
"path": "dare.config.json#refine",
|
|
30
|
+
"description": "Adiciona objeto `refine.thresholds` em dare.config.json para customizar buckets de complexidade",
|
|
31
|
+
"appliesTo": ["*"]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"migrations": [
|
|
35
|
+
{
|
|
36
|
+
"id": "unify-version-field",
|
|
37
|
+
"description": "Migra `dareVersion` → `version` e substitui o placeholder legacy `0.1.0` por `2.16.0` quando necessário",
|
|
38
|
+
"optional": false
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "add-review-refine-defaults",
|
|
42
|
+
"description": "Adiciona `review: { onComplete: false, strict: false }` e `refine: { thresholds: ... }` em projetos pré-2.17 (opt-in — não ativa o gate automaticamente)",
|
|
43
|
+
"optional": false
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
PORT=3000
|
|
2
|
-
NODE_ENV=development
|
|
3
|
-
|
|
4
|
-
# Database
|
|
5
|
-
DB_HOST=localhost
|
|
6
|
-
DB_PORT=5432
|
|
7
|
-
DB_USER=postgres
|
|
8
|
-
DB_PASS=postgres
|
|
9
|
-
DB_NAME={{PROJECT_NAME}}
|
|
1
|
+
PORT=3000
|
|
2
|
+
NODE_ENV=development
|
|
3
|
+
|
|
4
|
+
# Database
|
|
5
|
+
DB_HOST=localhost
|
|
6
|
+
DB_PORT=5432
|
|
7
|
+
DB_USER=postgres
|
|
8
|
+
DB_PASS=postgres
|
|
9
|
+
DB_NAME={{PROJECT_NAME}}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/nest-cli",
|
|
3
|
-
"collection": "@nestjs/schematics",
|
|
4
|
-
"sourceRoot": "src",
|
|
5
|
-
"compilerOptions": {
|
|
6
|
-
"deleteOutDir": true
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/nest-cli",
|
|
3
|
+
"collection": "@nestjs/schematics",
|
|
4
|
+
"sourceRoot": "src",
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"deleteOutDir": true
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{PROJECT_NAME}}",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"build": "nest build",
|
|
7
|
-
"start": "nest start",
|
|
8
|
-
"start:dev": "nest start --watch",
|
|
9
|
-
"start:prod": "node dist/main",
|
|
10
|
-
"test": "jest",
|
|
11
|
-
"test:watch": "jest --watch",
|
|
12
|
-
"test:cov": "jest --coverage",
|
|
13
|
-
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@nestjs/common": "^11.0.0",
|
|
17
|
-
"@nestjs/core": "^11.0.0",
|
|
18
|
-
"@nestjs/platform-express": "^11.0.0",
|
|
19
|
-
"@nestjs/config": "^3.0.0",
|
|
20
|
-
"@nestjs/typeorm": "^10.0.0",
|
|
21
|
-
"typeorm": "^0.3.0",
|
|
22
|
-
"pg": "^8.11.0",
|
|
23
|
-
"class-validator": "^0.14.0",
|
|
24
|
-
"class-transformer": "^0.5.0",
|
|
25
|
-
"reflect-metadata": "^0.1.13",
|
|
26
|
-
"rxjs": "^7.8.0"
|
|
27
|
-
},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"@nestjs/cli": "^11.0.0",
|
|
30
|
-
"@nestjs/schematics": "^11.0.0",
|
|
31
|
-
"@nestjs/testing": "^11.0.0",
|
|
32
|
-
"@types/jest": "^29.0.0",
|
|
33
|
-
"@types/node": "^20.0.0",
|
|
34
|
-
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
35
|
-
"@typescript-eslint/parser": "^6.0.0",
|
|
36
|
-
"eslint": "^8.0.0",
|
|
37
|
-
"jest": "^29.0.0",
|
|
38
|
-
"ts-jest": "^29.0.0",
|
|
39
|
-
"typescript": "^5.0.0"
|
|
40
|
-
},
|
|
41
|
-
"jest": {
|
|
42
|
-
"moduleFileExtensions": ["js", "json", "ts"],
|
|
43
|
-
"rootDir": "src",
|
|
44
|
-
"testRegex": ".*\\.spec\\.ts$",
|
|
45
|
-
"transform": { "^.+\\.(t|j)s$": "ts-jest" },
|
|
46
|
-
"collectCoverageFrom": ["**/*.(t|j)s"],
|
|
47
|
-
"coverageDirectory": "../coverage",
|
|
48
|
-
"testEnvironment": "node"
|
|
49
|
-
}
|
|
50
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "{{PROJECT_NAME}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "nest build",
|
|
7
|
+
"start": "nest start",
|
|
8
|
+
"start:dev": "nest start --watch",
|
|
9
|
+
"start:prod": "node dist/main",
|
|
10
|
+
"test": "jest",
|
|
11
|
+
"test:watch": "jest --watch",
|
|
12
|
+
"test:cov": "jest --coverage",
|
|
13
|
+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@nestjs/common": "^11.0.0",
|
|
17
|
+
"@nestjs/core": "^11.0.0",
|
|
18
|
+
"@nestjs/platform-express": "^11.0.0",
|
|
19
|
+
"@nestjs/config": "^3.0.0",
|
|
20
|
+
"@nestjs/typeorm": "^10.0.0",
|
|
21
|
+
"typeorm": "^0.3.0",
|
|
22
|
+
"pg": "^8.11.0",
|
|
23
|
+
"class-validator": "^0.14.0",
|
|
24
|
+
"class-transformer": "^0.5.0",
|
|
25
|
+
"reflect-metadata": "^0.1.13",
|
|
26
|
+
"rxjs": "^7.8.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@nestjs/cli": "^11.0.0",
|
|
30
|
+
"@nestjs/schematics": "^11.0.0",
|
|
31
|
+
"@nestjs/testing": "^11.0.0",
|
|
32
|
+
"@types/jest": "^29.0.0",
|
|
33
|
+
"@types/node": "^20.0.0",
|
|
34
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
35
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
36
|
+
"eslint": "^8.0.0",
|
|
37
|
+
"jest": "^29.0.0",
|
|
38
|
+
"ts-jest": "^29.0.0",
|
|
39
|
+
"typescript": "^5.0.0"
|
|
40
|
+
},
|
|
41
|
+
"jest": {
|
|
42
|
+
"moduleFileExtensions": ["js", "json", "ts"],
|
|
43
|
+
"rootDir": "src",
|
|
44
|
+
"testRegex": ".*\\.spec\\.ts$",
|
|
45
|
+
"transform": { "^.+\\.(t|j)s$": "ts-jest" },
|
|
46
|
+
"collectCoverageFrom": ["**/*.(t|j)s"],
|
|
47
|
+
"coverageDirectory": "../coverage",
|
|
48
|
+
"testEnvironment": "node"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Controller, Get } from '@nestjs/common';
|
|
2
|
-
import { AppService } from './app.service';
|
|
3
|
-
|
|
4
|
-
@Controller()
|
|
5
|
-
export class AppController {
|
|
6
|
-
constructor(private readonly appService: AppService) {}
|
|
7
|
-
|
|
8
|
-
@Get('health')
|
|
9
|
-
health(): { status: string } {
|
|
10
|
-
return this.appService.health();
|
|
11
|
-
}
|
|
12
|
-
}
|
|
1
|
+
import { Controller, Get } from '@nestjs/common';
|
|
2
|
+
import { AppService } from './app.service';
|
|
3
|
+
|
|
4
|
+
@Controller()
|
|
5
|
+
export class AppController {
|
|
6
|
+
constructor(private readonly appService: AppService) {}
|
|
7
|
+
|
|
8
|
+
@Get('health')
|
|
9
|
+
health(): { status: string } {
|
|
10
|
+
return this.appService.health();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Module } from '@nestjs/common';
|
|
2
|
-
import { ConfigModule } from '@nestjs/config';
|
|
3
|
-
import { AppController } from './app.controller';
|
|
4
|
-
import { AppService } from './app.service';
|
|
5
|
-
|
|
6
|
-
@Module({
|
|
7
|
-
imports: [
|
|
8
|
-
ConfigModule.forRoot({
|
|
9
|
-
isGlobal: true,
|
|
10
|
-
}),
|
|
11
|
-
],
|
|
12
|
-
controllers: [AppController],
|
|
13
|
-
providers: [AppService],
|
|
14
|
-
})
|
|
15
|
-
export class AppModule {}
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import { ConfigModule } from '@nestjs/config';
|
|
3
|
+
import { AppController } from './app.controller';
|
|
4
|
+
import { AppService } from './app.service';
|
|
5
|
+
|
|
6
|
+
@Module({
|
|
7
|
+
imports: [
|
|
8
|
+
ConfigModule.forRoot({
|
|
9
|
+
isGlobal: true,
|
|
10
|
+
}),
|
|
11
|
+
],
|
|
12
|
+
controllers: [AppController],
|
|
13
|
+
providers: [AppService],
|
|
14
|
+
})
|
|
15
|
+
export class AppModule {}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
2
|
-
|
|
3
|
-
@Injectable()
|
|
4
|
-
export class AppService {
|
|
5
|
-
health(): { status: string } {
|
|
6
|
-
return { status: 'ok' };
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
|
|
3
|
+
@Injectable()
|
|
4
|
+
export class AppService {
|
|
5
|
+
health(): { status: string } {
|
|
6
|
+
return { status: 'ok' };
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { NestFactory } from '@nestjs/core';
|
|
2
|
-
import { ValidationPipe } from '@nestjs/common';
|
|
3
|
-
import { AppModule } from './app.module';
|
|
4
|
-
|
|
5
|
-
async function bootstrap() {
|
|
6
|
-
const app = await NestFactory.create(AppModule);
|
|
7
|
-
|
|
8
|
-
app.useGlobalPipes(
|
|
9
|
-
new ValidationPipe({
|
|
10
|
-
whitelist: true,
|
|
11
|
-
forbidNonWhitelisted: true,
|
|
12
|
-
transform: true,
|
|
13
|
-
}),
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
app.enableCors();
|
|
17
|
-
app.setGlobalPrefix('api');
|
|
18
|
-
|
|
19
|
-
const port = process.env.PORT ?? 3000;
|
|
20
|
-
await app.listen(port);
|
|
21
|
-
console.log(`Application running on port ${port}`);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
bootstrap();
|
|
1
|
+
import { NestFactory } from '@nestjs/core';
|
|
2
|
+
import { ValidationPipe } from '@nestjs/common';
|
|
3
|
+
import { AppModule } from './app.module';
|
|
4
|
+
|
|
5
|
+
async function bootstrap() {
|
|
6
|
+
const app = await NestFactory.create(AppModule);
|
|
7
|
+
|
|
8
|
+
app.useGlobalPipes(
|
|
9
|
+
new ValidationPipe({
|
|
10
|
+
whitelist: true,
|
|
11
|
+
forbidNonWhitelisted: true,
|
|
12
|
+
transform: true,
|
|
13
|
+
}),
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
app.enableCors();
|
|
17
|
+
app.setGlobalPrefix('api');
|
|
18
|
+
|
|
19
|
+
const port = process.env.PORT ?? 3000;
|
|
20
|
+
await app.listen(port);
|
|
21
|
+
console.log(`Application running on port ${port}`);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
bootstrap();
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "commonjs",
|
|
4
|
-
"declaration": true,
|
|
5
|
-
"removeComments": true,
|
|
6
|
-
"emitDecoratorMetadata": true,
|
|
7
|
-
"experimentalDecorators": true,
|
|
8
|
-
"allowSyntheticDefaultImports": true,
|
|
9
|
-
"target": "ES2021",
|
|
10
|
-
"sourceMap": true,
|
|
11
|
-
"outDir": "./dist",
|
|
12
|
-
"baseUrl": "./",
|
|
13
|
-
"incremental": true,
|
|
14
|
-
"skipLibCheck": true,
|
|
15
|
-
"strictNullChecks": false,
|
|
16
|
-
"noImplicitAny": false,
|
|
17
|
-
"strictBindCallApply": false,
|
|
18
|
-
"forceConsistentCasingInFileNames": false,
|
|
19
|
-
"noFallthroughCasesInSwitch": false
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"removeComments": true,
|
|
6
|
+
"emitDecoratorMetadata": true,
|
|
7
|
+
"experimentalDecorators": true,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
"target": "ES2021",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"outDir": "./dist",
|
|
12
|
+
"baseUrl": "./",
|
|
13
|
+
"incremental": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"strictNullChecks": false,
|
|
16
|
+
"noImplicitAny": false,
|
|
17
|
+
"strictBindCallApply": false,
|
|
18
|
+
"forceConsistentCasingInFileNames": false,
|
|
19
|
+
"noFallthroughCasesInSwitch": false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
APP_NAME={{PROJECT_NAME}}
|
|
2
|
-
APP_ENV=local
|
|
3
|
-
APP_KEY=
|
|
4
|
-
APP_DEBUG=true
|
|
5
|
-
APP_URL=http://localhost
|
|
6
|
-
|
|
7
|
-
DB_CONNECTION=pgsql
|
|
8
|
-
DB_HOST=127.0.0.1
|
|
9
|
-
DB_PORT=5432
|
|
10
|
-
DB_DATABASE={{PROJECT_NAME}}
|
|
11
|
-
DB_USERNAME=postgres
|
|
12
|
-
DB_PASSWORD=postgres
|
|
13
|
-
|
|
14
|
-
CACHE_STORE=redis
|
|
15
|
-
QUEUE_CONNECTION=redis
|
|
16
|
-
SESSION_DRIVER=redis
|
|
17
|
-
|
|
18
|
-
REDIS_HOST=127.0.0.1
|
|
19
|
-
REDIS_PASSWORD=null
|
|
20
|
-
REDIS_PORT=6379
|
|
21
|
-
|
|
22
|
-
JWT_SECRET=
|
|
1
|
+
APP_NAME={{PROJECT_NAME}}
|
|
2
|
+
APP_ENV=local
|
|
3
|
+
APP_KEY=
|
|
4
|
+
APP_DEBUG=true
|
|
5
|
+
APP_URL=http://localhost
|
|
6
|
+
|
|
7
|
+
DB_CONNECTION=pgsql
|
|
8
|
+
DB_HOST=127.0.0.1
|
|
9
|
+
DB_PORT=5432
|
|
10
|
+
DB_DATABASE={{PROJECT_NAME}}
|
|
11
|
+
DB_USERNAME=postgres
|
|
12
|
+
DB_PASSWORD=postgres
|
|
13
|
+
|
|
14
|
+
CACHE_STORE=redis
|
|
15
|
+
QUEUE_CONNECTION=redis
|
|
16
|
+
SESSION_DRIVER=redis
|
|
17
|
+
|
|
18
|
+
REDIS_HOST=127.0.0.1
|
|
19
|
+
REDIS_PASSWORD=null
|
|
20
|
+
REDIS_PORT=6379
|
|
21
|
+
|
|
22
|
+
JWT_SECRET=
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<?php
|
|
2
|
-
|
|
3
|
-
declare(strict_types=1);
|
|
4
|
-
|
|
5
|
-
namespace App\Http\Controllers;
|
|
6
|
-
|
|
7
|
-
use Illuminate\Http\JsonResponse;
|
|
8
|
-
|
|
9
|
-
class HealthController extends Controller
|
|
10
|
-
{
|
|
11
|
-
public function __invoke(): JsonResponse
|
|
12
|
-
{
|
|
13
|
-
return response()->json(['status' => 'ok']);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
declare(strict_types=1);
|
|
4
|
+
|
|
5
|
+
namespace App\Http\Controllers;
|
|
6
|
+
|
|
7
|
+
use Illuminate\Http\JsonResponse;
|
|
8
|
+
|
|
9
|
+
class HealthController extends Controller
|
|
10
|
+
{
|
|
11
|
+
public function __invoke(): JsonResponse
|
|
12
|
+
{
|
|
13
|
+
return response()->json(['status' => 'ok']);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{PROJECT_NAME}}/api",
|
|
3
|
-
"description": "{{PROJECT_NAME}} API",
|
|
4
|
-
"type": "project",
|
|
5
|
-
"require": {
|
|
6
|
-
"php": "^8.2",
|
|
7
|
-
"laravel/framework": "^11.0",
|
|
8
|
-
"laravel/sanctum": "^4.0",
|
|
9
|
-
"tymon/jwt-auth": "^2.1"
|
|
10
|
-
},
|
|
11
|
-
"require-dev": {
|
|
12
|
-
"fakerphp/faker": "^1.23",
|
|
13
|
-
"laravel/pint": "^1.0",
|
|
14
|
-
"mockery/mockery": "^1.6",
|
|
15
|
-
"nunomaduro/collision": "^8.0",
|
|
16
|
-
"phpunit/phpunit": "^11.0",
|
|
17
|
-
"nunomaduro/larastan": "^2.0"
|
|
18
|
-
},
|
|
19
|
-
"autoload": {
|
|
20
|
-
"psr-4": {
|
|
21
|
-
"App\\": "app/",
|
|
22
|
-
"Database\\": "database/"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"autoload-dev": {
|
|
26
|
-
"psr-4": {
|
|
27
|
-
"Tests\\": "tests/"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"post-install-cmd": ["@php artisan key:generate --ansi"],
|
|
32
|
-
"test": "php artisan test",
|
|
33
|
-
"lint": "./vendor/bin/pint",
|
|
34
|
-
"analyse": "./vendor/bin/phpstan analyse"
|
|
35
|
-
},
|
|
36
|
-
"config": {
|
|
37
|
-
"optimize-autoloader": true,
|
|
38
|
-
"preferred-install": "dist"
|
|
39
|
-
}
|
|
40
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "{{PROJECT_NAME}}/api",
|
|
3
|
+
"description": "{{PROJECT_NAME}} API",
|
|
4
|
+
"type": "project",
|
|
5
|
+
"require": {
|
|
6
|
+
"php": "^8.2",
|
|
7
|
+
"laravel/framework": "^11.0",
|
|
8
|
+
"laravel/sanctum": "^4.0",
|
|
9
|
+
"tymon/jwt-auth": "^2.1"
|
|
10
|
+
},
|
|
11
|
+
"require-dev": {
|
|
12
|
+
"fakerphp/faker": "^1.23",
|
|
13
|
+
"laravel/pint": "^1.0",
|
|
14
|
+
"mockery/mockery": "^1.6",
|
|
15
|
+
"nunomaduro/collision": "^8.0",
|
|
16
|
+
"phpunit/phpunit": "^11.0",
|
|
17
|
+
"nunomaduro/larastan": "^2.0"
|
|
18
|
+
},
|
|
19
|
+
"autoload": {
|
|
20
|
+
"psr-4": {
|
|
21
|
+
"App\\": "app/",
|
|
22
|
+
"Database\\": "database/"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"autoload-dev": {
|
|
26
|
+
"psr-4": {
|
|
27
|
+
"Tests\\": "tests/"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"post-install-cmd": ["@php artisan key:generate --ansi"],
|
|
32
|
+
"test": "php artisan test",
|
|
33
|
+
"lint": "./vendor/bin/pint",
|
|
34
|
+
"analyse": "./vendor/bin/phpstan analyse"
|
|
35
|
+
},
|
|
36
|
+
"config": {
|
|
37
|
+
"optimize-autoloader": true,
|
|
38
|
+
"preferred-install": "dist"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
PROJECT_NAME={{PROJECT_NAME}}
|
|
2
|
-
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/{{PROJECT_NAME}}
|
|
3
|
-
SECRET_KEY=change-me-in-production
|
|
4
|
-
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
|
1
|
+
PROJECT_NAME={{PROJECT_NAME}}
|
|
2
|
+
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/{{PROJECT_NAME}}
|
|
3
|
+
SECRET_KEY=change-me-in-production
|
|
4
|
+
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
from fastapi import APIRouter
|
|
2
|
-
|
|
3
|
-
api_router = APIRouter()
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
@api_router.get("/ping")
|
|
7
|
-
async def ping() -> dict:
|
|
8
|
-
return {"message": "pong"}
|
|
1
|
+
from fastapi import APIRouter
|
|
2
|
+
|
|
3
|
+
api_router = APIRouter()
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@api_router.get("/ping")
|
|
7
|
+
async def ping() -> dict:
|
|
8
|
+
return {"message": "pong"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
from pydantic_settings import BaseSettings
|
|
2
|
-
from typing import List
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class Settings(BaseSettings):
|
|
6
|
-
PROJECT_NAME: str = "{{PROJECT_NAME}}"
|
|
7
|
-
VERSION: str = "0.1.0"
|
|
8
|
-
ALLOWED_ORIGINS: List[str] = ["http://localhost:3000", "http://localhost:3001"]
|
|
9
|
-
|
|
10
|
-
DATABASE_URL: str = "postgresql+asyncpg://postgres:postgres@localhost:5432/{{PROJECT_NAME}}"
|
|
11
|
-
|
|
12
|
-
SECRET_KEY: str = "change-me-in-production"
|
|
13
|
-
ALGORITHM: str = "HS256"
|
|
14
|
-
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
|
|
15
|
-
|
|
16
|
-
class Config:
|
|
17
|
-
env_file = ".env"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
settings = Settings()
|
|
1
|
+
from pydantic_settings import BaseSettings
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Settings(BaseSettings):
|
|
6
|
+
PROJECT_NAME: str = "{{PROJECT_NAME}}"
|
|
7
|
+
VERSION: str = "0.1.0"
|
|
8
|
+
ALLOWED_ORIGINS: List[str] = ["http://localhost:3000", "http://localhost:3001"]
|
|
9
|
+
|
|
10
|
+
DATABASE_URL: str = "postgresql+asyncpg://postgres:postgres@localhost:5432/{{PROJECT_NAME}}"
|
|
11
|
+
|
|
12
|
+
SECRET_KEY: str = "change-me-in-production"
|
|
13
|
+
ALGORITHM: str = "HS256"
|
|
14
|
+
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
env_file = ".env"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
settings = Settings()
|