gsd-trae 1.0.0 → 1.0.2
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/CHANGELOG.md +40 -0
- package/README.md +7 -76
- package/assets/screenshot.png +0 -0
- package/package.json +12 -3
- package/.claude/settings.local.json +0 -8
- package/.gitmodules +0 -6
- package/.trae/project_rules.md +0 -56
- package/.trae/rules/project_rules.md +0 -56
- package/.vscode/code-counter/code-counter.db +0 -0
- package/.vscode/settings.json +0 -5
- package/refs/gsd/.github/CODEOWNERS +0 -2
- package/refs/gsd/.github/FUNDING.yml +0 -1
- package/refs/gsd/.github/ISSUE_TEMPLATE/bug_report.yml +0 -59
- package/refs/gsd/.github/ISSUE_TEMPLATE/feature_request.yml +0 -37
- package/refs/gsd/.github/pull_request_template.md +0 -24
- package/refs/gsd/.github/workflows/auto-label-issues.yml +0 -21
- package/refs/gsd/CHANGELOG.md +0 -1520
- package/refs/gsd/LICENSE +0 -21
- package/refs/gsd/README.md +0 -704
- package/refs/gsd/SECURITY.md +0 -33
- package/refs/gsd/agents/gsd-codebase-mapper.md +0 -764
- package/refs/gsd/agents/gsd-debugger.md +0 -1246
- package/refs/gsd/agents/gsd-executor.md +0 -469
- package/refs/gsd/agents/gsd-integration-checker.md +0 -443
- package/refs/gsd/agents/gsd-phase-researcher.md +0 -546
- package/refs/gsd/agents/gsd-plan-checker.md +0 -690
- package/refs/gsd/agents/gsd-planner.md +0 -1275
- package/refs/gsd/agents/gsd-project-researcher.md +0 -621
- package/refs/gsd/agents/gsd-research-synthesizer.md +0 -239
- package/refs/gsd/agents/gsd-roadmapper.md +0 -642
- package/refs/gsd/agents/gsd-verifier.md +0 -573
- package/refs/gsd/assets/gsd-logo-2000-transparent.png +0 -0
- package/refs/gsd/assets/gsd-logo-2000-transparent.svg +0 -17
- package/refs/gsd/assets/gsd-logo-2000.png +0 -0
- package/refs/gsd/assets/gsd-logo-2000.svg +0 -21
- package/refs/gsd/assets/terminal.svg +0 -68
- package/refs/gsd/bin/install.js +0 -2090
- package/refs/gsd/commands/gsd/add-phase.md +0 -43
- package/refs/gsd/commands/gsd/add-tests.md +0 -41
- package/refs/gsd/commands/gsd/add-todo.md +0 -47
- package/refs/gsd/commands/gsd/audit-milestone.md +0 -36
- package/refs/gsd/commands/gsd/check-todos.md +0 -45
- package/refs/gsd/commands/gsd/cleanup.md +0 -18
- package/refs/gsd/commands/gsd/complete-milestone.md +0 -136
- package/refs/gsd/commands/gsd/debug.md +0 -167
- package/refs/gsd/commands/gsd/discuss-phase.md +0 -83
- package/refs/gsd/commands/gsd/execute-phase.md +0 -41
- package/refs/gsd/commands/gsd/health.md +0 -22
- package/refs/gsd/commands/gsd/help.md +0 -22
- package/refs/gsd/commands/gsd/insert-phase.md +0 -32
- package/refs/gsd/commands/gsd/join-discord.md +0 -18
- package/refs/gsd/commands/gsd/list-phase-assumptions.md +0 -46
- package/refs/gsd/commands/gsd/map-codebase.md +0 -71
- package/refs/gsd/commands/gsd/new-milestone.md +0 -44
- package/refs/gsd/commands/gsd/new-project.md +0 -42
- package/refs/gsd/commands/gsd/new-project.md.bak +0 -1041
- package/refs/gsd/commands/gsd/pause-work.md +0 -38
- package/refs/gsd/commands/gsd/plan-milestone-gaps.md +0 -34
- package/refs/gsd/commands/gsd/plan-phase.md +0 -45
- package/refs/gsd/commands/gsd/progress.md +0 -24
- package/refs/gsd/commands/gsd/quick.md +0 -41
- package/refs/gsd/commands/gsd/reapply-patches.md +0 -110
- package/refs/gsd/commands/gsd/remove-phase.md +0 -31
- package/refs/gsd/commands/gsd/research-phase.md +0 -189
- package/refs/gsd/commands/gsd/resume-work.md +0 -40
- package/refs/gsd/commands/gsd/set-profile.md +0 -34
- package/refs/gsd/commands/gsd/settings.md +0 -36
- package/refs/gsd/commands/gsd/update.md +0 -37
- package/refs/gsd/commands/gsd/verify-work.md +0 -38
- package/refs/gsd/docs/USER-GUIDE.md +0 -471
- package/refs/gsd/docs/context-monitor.md +0 -96
- package/refs/gsd/get-shit-done/bin/gsd-tools.cjs +0 -585
- package/refs/gsd/get-shit-done/bin/lib/commands.cjs +0 -553
- package/refs/gsd/get-shit-done/bin/lib/config.cjs +0 -162
- package/refs/gsd/get-shit-done/bin/lib/core.cjs +0 -411
- package/refs/gsd/get-shit-done/bin/lib/frontmatter.cjs +0 -299
- package/refs/gsd/get-shit-done/bin/lib/init.cjs +0 -710
- package/refs/gsd/get-shit-done/bin/lib/milestone.cjs +0 -215
- package/refs/gsd/get-shit-done/bin/lib/phase.cjs +0 -870
- package/refs/gsd/get-shit-done/bin/lib/roadmap.cjs +0 -298
- package/refs/gsd/get-shit-done/bin/lib/state.cjs +0 -521
- package/refs/gsd/get-shit-done/bin/lib/template.cjs +0 -222
- package/refs/gsd/get-shit-done/bin/lib/verify.cjs +0 -772
- package/refs/gsd/get-shit-done/references/checkpoints.md +0 -776
- package/refs/gsd/get-shit-done/references/continuation-format.md +0 -249
- package/refs/gsd/get-shit-done/references/decimal-phase-calculation.md +0 -65
- package/refs/gsd/get-shit-done/references/git-integration.md +0 -248
- package/refs/gsd/get-shit-done/references/git-planning-commit.md +0 -38
- package/refs/gsd/get-shit-done/references/model-profile-resolution.md +0 -34
- package/refs/gsd/get-shit-done/references/model-profiles.md +0 -92
- package/refs/gsd/get-shit-done/references/phase-argument-parsing.md +0 -61
- package/refs/gsd/get-shit-done/references/planning-config.md +0 -196
- package/refs/gsd/get-shit-done/references/questioning.md +0 -145
- package/refs/gsd/get-shit-done/references/tdd.md +0 -263
- package/refs/gsd/get-shit-done/references/ui-brand.md +0 -160
- package/refs/gsd/get-shit-done/references/verification-patterns.md +0 -612
- package/refs/gsd/get-shit-done/templates/DEBUG.md +0 -164
- package/refs/gsd/get-shit-done/templates/UAT.md +0 -247
- package/refs/gsd/get-shit-done/templates/VALIDATION.md +0 -76
- package/refs/gsd/get-shit-done/templates/codebase/architecture.md +0 -255
- package/refs/gsd/get-shit-done/templates/codebase/concerns.md +0 -310
- package/refs/gsd/get-shit-done/templates/codebase/conventions.md +0 -307
- package/refs/gsd/get-shit-done/templates/codebase/integrations.md +0 -280
- package/refs/gsd/get-shit-done/templates/codebase/stack.md +0 -186
- package/refs/gsd/get-shit-done/templates/codebase/structure.md +0 -285
- package/refs/gsd/get-shit-done/templates/codebase/testing.md +0 -480
- package/refs/gsd/get-shit-done/templates/config.json +0 -37
- package/refs/gsd/get-shit-done/templates/context.md +0 -283
- package/refs/gsd/get-shit-done/templates/continue-here.md +0 -78
- package/refs/gsd/get-shit-done/templates/debug-subagent-prompt.md +0 -91
- package/refs/gsd/get-shit-done/templates/discovery.md +0 -146
- package/refs/gsd/get-shit-done/templates/milestone-archive.md +0 -123
- package/refs/gsd/get-shit-done/templates/milestone.md +0 -115
- package/refs/gsd/get-shit-done/templates/phase-prompt.md +0 -569
- package/refs/gsd/get-shit-done/templates/planner-subagent-prompt.md +0 -117
- package/refs/gsd/get-shit-done/templates/project.md +0 -184
- package/refs/gsd/get-shit-done/templates/requirements.md +0 -231
- package/refs/gsd/get-shit-done/templates/research-project/ARCHITECTURE.md +0 -204
- package/refs/gsd/get-shit-done/templates/research-project/FEATURES.md +0 -147
- package/refs/gsd/get-shit-done/templates/research-project/PITFALLS.md +0 -200
- package/refs/gsd/get-shit-done/templates/research-project/STACK.md +0 -120
- package/refs/gsd/get-shit-done/templates/research-project/SUMMARY.md +0 -170
- package/refs/gsd/get-shit-done/templates/research.md +0 -552
- package/refs/gsd/get-shit-done/templates/retrospective.md +0 -54
- package/refs/gsd/get-shit-done/templates/roadmap.md +0 -202
- package/refs/gsd/get-shit-done/templates/state.md +0 -176
- package/refs/gsd/get-shit-done/templates/summary-complex.md +0 -59
- package/refs/gsd/get-shit-done/templates/summary-minimal.md +0 -41
- package/refs/gsd/get-shit-done/templates/summary-standard.md +0 -48
- package/refs/gsd/get-shit-done/templates/summary.md +0 -248
- package/refs/gsd/get-shit-done/templates/user-setup.md +0 -311
- package/refs/gsd/get-shit-done/templates/verification-report.md +0 -322
- package/refs/gsd/get-shit-done/workflows/add-phase.md +0 -111
- package/refs/gsd/get-shit-done/workflows/add-tests.md +0 -350
- package/refs/gsd/get-shit-done/workflows/add-todo.md +0 -157
- package/refs/gsd/get-shit-done/workflows/audit-milestone.md +0 -297
- package/refs/gsd/get-shit-done/workflows/check-todos.md +0 -176
- package/refs/gsd/get-shit-done/workflows/cleanup.md +0 -152
- package/refs/gsd/get-shit-done/workflows/complete-milestone.md +0 -763
- package/refs/gsd/get-shit-done/workflows/diagnose-issues.md +0 -219
- package/refs/gsd/get-shit-done/workflows/discovery-phase.md +0 -289
- package/refs/gsd/get-shit-done/workflows/discuss-phase.md +0 -542
- package/refs/gsd/get-shit-done/workflows/execute-phase.md +0 -449
- package/refs/gsd/get-shit-done/workflows/execute-plan.md +0 -448
- package/refs/gsd/get-shit-done/workflows/health.md +0 -156
- package/refs/gsd/get-shit-done/workflows/help.md +0 -489
- package/refs/gsd/get-shit-done/workflows/insert-phase.md +0 -129
- package/refs/gsd/get-shit-done/workflows/list-phase-assumptions.md +0 -178
- package/refs/gsd/get-shit-done/workflows/map-codebase.md +0 -315
- package/refs/gsd/get-shit-done/workflows/new-milestone.md +0 -382
- package/refs/gsd/get-shit-done/workflows/new-project.md +0 -1116
- package/refs/gsd/get-shit-done/workflows/pause-work.md +0 -122
- package/refs/gsd/get-shit-done/workflows/plan-milestone-gaps.md +0 -274
- package/refs/gsd/get-shit-done/workflows/plan-phase.md +0 -569
- package/refs/gsd/get-shit-done/workflows/progress.md +0 -381
- package/refs/gsd/get-shit-done/workflows/quick.md +0 -453
- package/refs/gsd/get-shit-done/workflows/remove-phase.md +0 -154
- package/refs/gsd/get-shit-done/workflows/research-phase.md +0 -73
- package/refs/gsd/get-shit-done/workflows/resume-project.md +0 -306
- package/refs/gsd/get-shit-done/workflows/set-profile.md +0 -80
- package/refs/gsd/get-shit-done/workflows/settings.md +0 -213
- package/refs/gsd/get-shit-done/workflows/transition.md +0 -544
- package/refs/gsd/get-shit-done/workflows/update.md +0 -219
- package/refs/gsd/get-shit-done/workflows/verify-phase.md +0 -242
- package/refs/gsd/get-shit-done/workflows/verify-work.md +0 -569
- package/refs/gsd/hooks/gsd-check-update.js +0 -62
- package/refs/gsd/hooks/gsd-context-monitor.js +0 -122
- package/refs/gsd/hooks/gsd-statusline.js +0 -108
- package/refs/gsd/package.json +0 -50
- package/refs/gsd/scripts/build-hooks.js +0 -43
- package/refs/gsd/tests/commands.test.cjs +0 -661
- package/refs/gsd/tests/helpers.cjs +0 -40
- package/refs/gsd/tests/init.test.cjs +0 -205
- package/refs/gsd/tests/milestone.test.cjs +0 -98
- package/refs/gsd/tests/phase.test.cjs +0 -1241
- package/refs/gsd/tests/roadmap.test.cjs +0 -265
- package/refs/gsd/tests/state.test.cjs +0 -302
- package/refs/gsd/tests/verify.test.cjs +0 -80
- package/refs/vbenchmark/.agent/agents/codebase-explorer.md +0 -224
- package/refs/vbenchmark/.agent/agents/debugger.md +0 -180
- package/refs/vbenchmark/.agent/agents/documenter.md +0 -166
- package/refs/vbenchmark/.agent/agents/implementer.md +0 -70
- package/refs/vbenchmark/.agent/agents/orchestrator.md +0 -212
- package/refs/vbenchmark/.agent/agents/researcher.md +0 -80
- package/refs/vbenchmark/.agent/agents/reviewer.md +0 -184
- package/refs/vbenchmark/.agent/agents/tester.md +0 -170
- package/refs/vbenchmark/.agent/commands/commit.md +0 -29
- package/refs/vbenchmark/.agent/commands/debug.md +0 -59
- package/refs/vbenchmark/.agent/commands/document.md +0 -52
- package/refs/vbenchmark/.agent/commands/gather-context.md +0 -58
- package/refs/vbenchmark/.agent/commands/init.md +0 -56
- package/refs/vbenchmark/.agent/commands/preset-help.md +0 -50
- package/refs/vbenchmark/.agent/commands/refactor.md +0 -71
- package/refs/vbenchmark/.agent/commands/research.md +0 -37
- package/refs/vbenchmark/.agent/commands/review.md +0 -38
- package/refs/vbenchmark/.agent/commands/test.md +0 -61
- package/refs/vbenchmark/.agent/rules/01-code-quality.md +0 -33
- package/refs/vbenchmark/.agent/rules/02-typescript-go.md +0 -46
- package/refs/vbenchmark/.agent/rules/03-security-git.md +0 -34
- package/refs/vbenchmark/.agent/rules/04-architecture.md +0 -40
- package/refs/vbenchmark/.agent/sync.js +0 -536
- package/refs/vbenchmark/.agent/workflows/commit.md +0 -29
- package/refs/vbenchmark/.agent/workflows/debug.md +0 -59
- package/refs/vbenchmark/.agent/workflows/document.md +0 -52
- package/refs/vbenchmark/.agent/workflows/gather-context.md +0 -58
- package/refs/vbenchmark/.agent/workflows/init.md +0 -56
- package/refs/vbenchmark/.agent/workflows/preset-help.md +0 -50
- package/refs/vbenchmark/.agent/workflows/refactor.md +0 -71
- package/refs/vbenchmark/.agent/workflows/research.md +0 -37
- package/refs/vbenchmark/.agent/workflows/review.md +0 -38
- package/refs/vbenchmark/.agent/workflows/test.md +0 -61
- package/refs/vbenchmark/.claude/commands/agentic-dev/apply.md +0 -222
- package/refs/vbenchmark/.claude/commands/agentic-dev/done.md +0 -166
- package/refs/vbenchmark/.claude/commands/agentic-dev/proposal.md +0 -220
- package/refs/vbenchmark/.claude/commands/openspec/apply.md +0 -23
- package/refs/vbenchmark/.claude/commands/openspec/archive.md +0 -27
- package/refs/vbenchmark/.claude/commands/openspec/proposal.md +0 -28
- package/refs/vbenchmark/.clinerules/01-rules.md +0 -73
- package/refs/vbenchmark/.clinerules/02-agents.md +0 -34
- package/refs/vbenchmark/.cursor/commands/commit.md +0 -29
- package/refs/vbenchmark/.cursor/commands/debug.md +0 -59
- package/refs/vbenchmark/.cursor/commands/document.md +0 -52
- package/refs/vbenchmark/.cursor/commands/gather-context.md +0 -58
- package/refs/vbenchmark/.cursor/commands/init.md +0 -56
- package/refs/vbenchmark/.cursor/commands/preset-help.md +0 -50
- package/refs/vbenchmark/.cursor/commands/refactor.md +0 -71
- package/refs/vbenchmark/.cursor/commands/research.md +0 -37
- package/refs/vbenchmark/.cursor/commands/review.md +0 -38
- package/refs/vbenchmark/.cursor/commands/test.md +0 -61
- package/refs/vbenchmark/.cursor/rules/agents.mdc +0 -1357
- package/refs/vbenchmark/.factory/droids/codebase-explorer.md +0 -224
- package/refs/vbenchmark/.factory/droids/debugger.md +0 -180
- package/refs/vbenchmark/.factory/droids/documenter.md +0 -166
- package/refs/vbenchmark/.factory/droids/implementer.md +0 -70
- package/refs/vbenchmark/.factory/droids/orchestrator.md +0 -212
- package/refs/vbenchmark/.factory/droids/researcher.md +0 -80
- package/refs/vbenchmark/.factory/droids/reviewer.md +0 -184
- package/refs/vbenchmark/.factory/droids/tester.md +0 -170
- package/refs/vbenchmark/.gemini/workflows/commit.md +0 -29
- package/refs/vbenchmark/.gemini/workflows/debug.md +0 -59
- package/refs/vbenchmark/.gemini/workflows/document.md +0 -52
- package/refs/vbenchmark/.gemini/workflows/gather-context.md +0 -58
- package/refs/vbenchmark/.gemini/workflows/init.md +0 -56
- package/refs/vbenchmark/.gemini/workflows/preset-help.md +0 -50
- package/refs/vbenchmark/.gemini/workflows/refactor.md +0 -71
- package/refs/vbenchmark/.gemini/workflows/research.md +0 -37
- package/refs/vbenchmark/.gemini/workflows/review.md +0 -38
- package/refs/vbenchmark/.gemini/workflows/test.md +0 -61
- package/refs/vbenchmark/.github/CODEOWNERS +0 -20
- package/refs/vbenchmark/.github/FUNDING.yml +0 -4
- package/refs/vbenchmark/.github/ISSUE_TEMPLATE/bug-report.yml +0 -76
- package/refs/vbenchmark/.github/ISSUE_TEMPLATE/new-task.yml +0 -106
- package/refs/vbenchmark/.github/PULL_REQUEST_TEMPLATE.md +0 -38
- package/refs/vbenchmark/.github/copilot-instructions.md +0 -73
- package/refs/vbenchmark/.github/workflows/ci.yaml +0 -33
- package/refs/vbenchmark/.github/workflows/vercel-auto-pr.yml +0 -478
- package/refs/vbenchmark/.github/workflows/vercel-deploy.yaml +0 -487
- package/refs/vbenchmark/.github/workflows/vercel-pr-command.yaml +0 -337
- package/refs/vbenchmark/.github/workflows/vercel-project-init.yaml +0 -208
- package/refs/vbenchmark/.opencode/agent/codebase-explorer.md +0 -224
- package/refs/vbenchmark/.opencode/agent/debugger.md +0 -180
- package/refs/vbenchmark/.opencode/agent/documenter.md +0 -166
- package/refs/vbenchmark/.opencode/agent/implementer.md +0 -70
- package/refs/vbenchmark/.opencode/agent/orchestrator.md +0 -212
- package/refs/vbenchmark/.opencode/agent/researcher.md +0 -80
- package/refs/vbenchmark/.opencode/agent/reviewer.md +0 -184
- package/refs/vbenchmark/.opencode/agent/tester.md +0 -170
- package/refs/vbenchmark/.opencode/command/commit.md +0 -29
- package/refs/vbenchmark/.opencode/command/debug.md +0 -59
- package/refs/vbenchmark/.opencode/command/document.md +0 -52
- package/refs/vbenchmark/.opencode/command/gather-context.md +0 -58
- package/refs/vbenchmark/.opencode/command/init.md +0 -56
- package/refs/vbenchmark/.opencode/command/preset-help.md +0 -50
- package/refs/vbenchmark/.opencode/command/refactor.md +0 -71
- package/refs/vbenchmark/.opencode/command/research.md +0 -37
- package/refs/vbenchmark/.opencode/command/review.md +0 -38
- package/refs/vbenchmark/.opencode/command/test.md +0 -61
- package/refs/vbenchmark/.trae/project_rules.md +0 -73
- package/refs/vbenchmark/.windsurf/rules/rules.md +0 -85
- package/refs/vbenchmark/AGENTS.md +0 -73
- package/refs/vbenchmark/CONTRIBUTING.md +0 -332
- package/refs/vbenchmark/Caddyfile +0 -3
- package/refs/vbenchmark/LICENSE +0 -47
- package/refs/vbenchmark/README.md +0 -354
- package/refs/vbenchmark/docker-compose.prod.yaml +0 -35
- package/refs/vbenchmark/docker-compose.yaml +0 -53
- package/refs/vbenchmark/docs/TASK_EXPANSION_PLAN.md +0 -211
- package/refs/vbenchmark/docs/THESIS.md +0 -441
- package/refs/vbenchmark/docs/categories/code-evolution.md +0 -138
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/design.md +0 -111
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/proposal.md +0 -15
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/specs/evaluation/spec.md +0 -105
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/specs/leaderboard/spec.md +0 -68
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/specs/task-definition/spec.md +0 -45
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/specs/task-runner/spec.md +0 -49
- package/refs/vbenchmark/openspec/changes/init-vibecodingbench/tasks.md +0 -413
- package/refs/vbenchmark/package.json +0 -51
- package/refs/vbenchmark/packages/cli/eslint.config.js +0 -16
- package/refs/vbenchmark/packages/cli/package.json +0 -35
- package/refs/vbenchmark/packages/cli/src/agents/index.ts +0 -655
- package/refs/vbenchmark/packages/cli/src/commands/eval.ts +0 -197
- package/refs/vbenchmark/packages/cli/src/commands/list.ts +0 -63
- package/refs/vbenchmark/packages/cli/src/commands/run.ts +0 -147
- package/refs/vbenchmark/packages/cli/src/evaluator.ts +0 -125
- package/refs/vbenchmark/packages/cli/src/index.ts +0 -21
- package/refs/vbenchmark/packages/cli/src/lib/task-variation.ts +0 -153
- package/refs/vbenchmark/packages/cli/src/loader.ts +0 -258
- package/refs/vbenchmark/packages/cli/src/reporter.ts +0 -222
- package/refs/vbenchmark/packages/cli/src/runtime/docker.ts +0 -385
- package/refs/vbenchmark/packages/cli/tsconfig.json +0 -8
- package/refs/vbenchmark/packages/dashboard/Dockerfile +0 -42
- package/refs/vbenchmark/packages/dashboard/index.html +0 -21
- package/refs/vbenchmark/packages/dashboard/package.json +0 -29
- package/refs/vbenchmark/packages/dashboard/postcss.config.js +0 -6
- package/refs/vbenchmark/packages/dashboard/public/favicon.svg +0 -24
- package/refs/vbenchmark/packages/dashboard/public/logo.png +0 -0
- package/refs/vbenchmark/packages/dashboard/public/logo.svg +0 -39
- package/refs/vbenchmark/packages/dashboard/src/App.tsx +0 -1468
- package/refs/vbenchmark/packages/dashboard/src/data/category-performance.json +0 -1
- package/refs/vbenchmark/packages/dashboard/src/data/leaderboard.json +0 -1
- package/refs/vbenchmark/packages/dashboard/src/data/task-results.json +0 -1
- package/refs/vbenchmark/packages/dashboard/src/data/tasks.json +0 -1
- package/refs/vbenchmark/packages/dashboard/src/index.css +0 -3
- package/refs/vbenchmark/packages/dashboard/src/main.tsx +0 -13
- package/refs/vbenchmark/packages/dashboard/src/vite-env.d.ts +0 -9
- package/refs/vbenchmark/packages/dashboard/tailwind.config.js +0 -11
- package/refs/vbenchmark/packages/dashboard/tsconfig.json +0 -21
- package/refs/vbenchmark/packages/dashboard/tsconfig.node.json +0 -11
- package/refs/vbenchmark/packages/dashboard/vercel.json +0 -6
- package/refs/vbenchmark/packages/dashboard/vite.config.ts +0 -28
- package/refs/vbenchmark/packages/evaluator/eslint.config.js +0 -16
- package/refs/vbenchmark/packages/evaluator/package.json +0 -24
- package/refs/vbenchmark/packages/evaluator/src/index.ts +0 -15
- package/refs/vbenchmark/packages/evaluator/src/runners/functional.ts +0 -88
- package/refs/vbenchmark/packages/evaluator/src/runners/quality.ts +0 -140
- package/refs/vbenchmark/packages/evaluator/src/runners/security.ts +0 -94
- package/refs/vbenchmark/packages/evaluator/src/runners/visual.ts +0 -108
- package/refs/vbenchmark/packages/evaluator/src/types.d.ts +0 -19
- package/refs/vbenchmark/packages/evaluator/tsconfig.json +0 -8
- package/refs/vbenchmark/packages/leaderboard/Dockerfile +0 -38
- package/refs/vbenchmark/packages/leaderboard/drizzle.config.ts +0 -10
- package/refs/vbenchmark/packages/leaderboard/eslint.config.js +0 -16
- package/refs/vbenchmark/packages/leaderboard/fly.toml +0 -29
- package/refs/vbenchmark/packages/leaderboard/package.json +0 -36
- package/refs/vbenchmark/packages/leaderboard/src/app.ts +0 -29
- package/refs/vbenchmark/packages/leaderboard/src/components/BrowserPreview.tsx +0 -190
- package/refs/vbenchmark/packages/leaderboard/src/components/ComparisonView.tsx +0 -205
- package/refs/vbenchmark/packages/leaderboard/src/components/LeaderboardTable.tsx +0 -150
- package/refs/vbenchmark/packages/leaderboard/src/components/LiveRunCard.tsx +0 -133
- package/refs/vbenchmark/packages/leaderboard/src/components/SubmissionForm.tsx +0 -406
- package/refs/vbenchmark/packages/leaderboard/src/components/SubmitForm.tsx +0 -293
- package/refs/vbenchmark/packages/leaderboard/src/components/TerminalStream.tsx +0 -111
- package/refs/vbenchmark/packages/leaderboard/src/config/pricing.ts +0 -206
- package/refs/vbenchmark/packages/leaderboard/src/db/index.ts +0 -31
- package/refs/vbenchmark/packages/leaderboard/src/db/schema.ts +0 -125
- package/refs/vbenchmark/packages/leaderboard/src/index.ts +0 -13
- package/refs/vbenchmark/packages/leaderboard/src/lib/websocket.ts +0 -124
- package/refs/vbenchmark/packages/leaderboard/src/routes/leaderboard.ts +0 -698
- package/refs/vbenchmark/packages/leaderboard/src/routes/live.ts +0 -175
- package/refs/vbenchmark/packages/leaderboard/src/routes/submissions.ts +0 -183
- package/refs/vbenchmark/packages/leaderboard/src/routes/tasks.ts +0 -215
- package/refs/vbenchmark/packages/leaderboard/tests/api.test.ts +0 -228
- package/refs/vbenchmark/packages/leaderboard/tsconfig.json +0 -9
- package/refs/vbenchmark/scripts/deploy.sh +0 -70
- package/refs/vbenchmark/tasks/ai-integration/advanced/context-management/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/context-management/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/evaluation-framework/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/evaluation-framework/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/guardrails-safety/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/guardrails-safety/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/memory-system/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/memory-system/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/model-routing/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/model-routing/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/multi-agent-system/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/multi-agent-system/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/prompt-optimization/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/prompt-optimization/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/reasoning-chain/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/reasoning-chain/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/streaming-pipeline/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/streaming-pipeline/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/advanced/tool-use-orchestration/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/ai-integration/advanced/tool-use-orchestration/task.yaml +0 -16
- package/refs/vbenchmark/tasks/ai-integration/agents/code-review-agent/PROMPT.md +0 -64
- package/refs/vbenchmark/tasks/ai-integration/agents/code-review-agent/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/agents/research-agent/PROMPT.md +0 -61
- package/refs/vbenchmark/tasks/ai-integration/agents/research-agent/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/agents/web-scraper-agent/PROMPT.md +0 -57
- package/refs/vbenchmark/tasks/ai-integration/agents/web-scraper-agent/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/embeddings/duplicate-detection/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/ai-integration/embeddings/duplicate-detection/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/embeddings/recommendation-engine/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/ai-integration/embeddings/recommendation-engine/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/embeddings/semantic-search/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/ai-integration/embeddings/semantic-search/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/fine-tuning/classification-model/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/ai-integration/fine-tuning/classification-model/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/function-calling/api-orchestrator/PROMPT.md +0 -60
- package/refs/vbenchmark/tasks/ai-integration/function-calling/api-orchestrator/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/function-calling/calendar-assistant/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/ai-integration/function-calling/calendar-assistant/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/function-calling/database-query/PROMPT.md +0 -62
- package/refs/vbenchmark/tasks/ai-integration/function-calling/database-query/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/multimodal/chart-interpreter/PROMPT.md +0 -60
- package/refs/vbenchmark/tasks/ai-integration/multimodal/chart-interpreter/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/multimodal/image-captioning/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/ai-integration/multimodal/image-captioning/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/code-assistant/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/code-assistant/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/doc-search/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/doc-search/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/pdf-qa/PROMPT.md +0 -76
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/pdf-qa/docker-compose.yaml +0 -30
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/pdf-qa/task.yaml +0 -30
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/pdf-qa/tests/functional/qa.test.py +0 -146
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/support-bot/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/ai-integration/rag-chatbot/support-bot/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/structured-output/contract-analyzer/PROMPT.md +0 -67
- package/refs/vbenchmark/tasks/ai-integration/structured-output/contract-analyzer/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/structured-output/invoice-parser/PROMPT.md +0 -61
- package/refs/vbenchmark/tasks/ai-integration/structured-output/invoice-parser/task.yaml +0 -27
- package/refs/vbenchmark/tasks/ai-integration/structured-output/receipt-scanner/PROMPT.md +0 -65
- package/refs/vbenchmark/tasks/ai-integration/structured-output/receipt-scanner/task.yaml +0 -24
- package/refs/vbenchmark/tasks/ai-integration/structured-output/resume-parser/PROMPT.md +0 -70
- package/refs/vbenchmark/tasks/ai-integration/structured-output/resume-parser/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-analytics/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-analytics/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-gateway/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-gateway/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-mocking/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/api-mocking/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/contract-testing/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/contract-testing/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/graphql-federation/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/graphql-federation/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/grpc-gateway/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/grpc-gateway/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/rate-limiter/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/rate-limiter/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/request-validator/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/request-validator/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/sdk-generator/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/sdk-generator/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/advanced/webhook-processor/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/api-integrations/advanced/webhook-processor/task.yaml +0 -16
- package/refs/vbenchmark/tasks/api-integrations/analytics/mixpanel-events/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/analytics/mixpanel-events/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/analytics/segment-tracking/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/analytics/segment-tracking/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/oauth2-github/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/oauth2-github/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/okta-integration/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/okta-integration/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/saml-sso/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/auth-provider/saml-sso/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/communication/discord-webhook/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/api-integrations/communication/discord-webhook/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/communication/slack-bot/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/communication/slack-bot/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/communication/twilio-sms/PROMPT.md +0 -42
- package/refs/vbenchmark/tasks/api-integrations/communication/twilio-sms/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/email/transactional/PROMPT.md +0 -82
- package/refs/vbenchmark/tasks/api-integrations/email/transactional/task.yaml +0 -27
- package/refs/vbenchmark/tasks/api-integrations/maps/google-maps-geocoding/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/maps/google-maps-geocoding/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/maps/mapbox-directions/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/maps/mapbox-directions/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/payment/crypto-payments/PROMPT.md +0 -43
- package/refs/vbenchmark/tasks/api-integrations/payment/crypto-payments/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/payment/paypal-integration/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/payment/paypal-integration/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/social/twitter-api/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/social/twitter-api/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/storage/cloudinary-upload/PROMPT.md +0 -43
- package/refs/vbenchmark/tasks/api-integrations/storage/cloudinary-upload/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/storage/gcs-streaming/PROMPT.md +0 -43
- package/refs/vbenchmark/tasks/api-integrations/storage/gcs-streaming/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/storage/s3-presigned-urls/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/storage/s3-presigned-urls/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/stripe/checkout-session/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/stripe/checkout-session/task.yaml +0 -24
- package/refs/vbenchmark/tasks/api-integrations/stripe/payment-webhook/PROMPT.md +0 -60
- package/refs/vbenchmark/tasks/api-integrations/stripe/payment-webhook/docker-compose.yaml +0 -38
- package/refs/vbenchmark/tasks/api-integrations/stripe/payment-webhook/task.yaml +0 -31
- package/refs/vbenchmark/tasks/api-integrations/stripe/payment-webhook/tests/webhook.test.ts +0 -193
- package/refs/vbenchmark/tasks/api-integrations/stripe/subscription-portal/PROMPT.md +0 -41
- package/refs/vbenchmark/tasks/api-integrations/stripe/subscription-portal/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/advanced/api-deprecation/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/api-deprecation/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/ast-refactoring/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/ast-refactoring/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/concurrency-fix/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/concurrency-fix/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/database-schema-migration/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/database-schema-migration/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/dead-code-elimination/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/dead-code-elimination/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/dependency-upgrade/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/dependency-upgrade/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/memory-optimization/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/memory-optimization/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/monorepo-extraction/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/monorepo-extraction/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/performance-profiling/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/performance-profiling/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/advanced/type-migration/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/code-evolution/advanced/type-migration/task.yaml +0 -16
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/callback-to-async/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/callback-to-async/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/express-to-fastify/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/express-to-fastify/base-code/src/app.ts +0 -22
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/express-to-fastify/task.yaml +0 -37
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/express-to-fastify/tests/api.test.ts +0 -70
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/flask-to-fastapi/PROMPT.md +0 -46
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/flask-to-fastapi/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/java-to-kotlin/PROMPT.md +0 -45
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/java-to-kotlin/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/jquery-to-react/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/jquery-to-react/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/rest-to-grpc/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/legacy-migration/rest-to-grpc/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/performance/async-refactor/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/performance/async-refactor/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/performance/memory-leak-fix/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/performance/memory-leak-fix/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/performance/query-optimization/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/code-evolution/performance/query-optimization/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/refactoring/class-to-hooks/PROMPT.md +0 -96
- package/refs/vbenchmark/tasks/code-evolution/refactoring/class-to-hooks/task.yaml +0 -27
- package/refs/vbenchmark/tasks/code-evolution/refactoring/dependency-injection/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/refactoring/dependency-injection/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/refactoring/error-handling/PROMPT.md +0 -48
- package/refs/vbenchmark/tasks/code-evolution/refactoring/error-handling/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/refactoring/monolith-to-modules/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/code-evolution/refactoring/monolith-to-modules/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/refactoring/orm-migration/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/refactoring/orm-migration/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/security/secrets-rotation/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/code-evolution/security/secrets-rotation/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/security/sql-injection-fix/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/code-evolution/security/sql-injection-fix/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/security/xss-prevention/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/security/xss-prevention/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/testing/add-unit-tests/PROMPT.md +0 -48
- package/refs/vbenchmark/tasks/code-evolution/testing/add-unit-tests/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/testing/e2e-playwright/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/code-evolution/testing/e2e-playwright/task.yaml +0 -24
- package/refs/vbenchmark/tasks/code-evolution/testing/pytest-fixtures/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/code-evolution/testing/pytest-fixtures/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/accessibility/keyboard-shortcuts/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/accessibility/keyboard-shortcuts/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/accessibility/screen-reader-nav/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/accessibility/screen-reader-nav/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/advanced/canvas-editor/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/canvas-editor/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/micro-frontend/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/micro-frontend/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/offline-first/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/offline-first/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/realtime-collab/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/realtime-collab/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/service-worker/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/service-worker/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/state-machine/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/state-machine/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/virtual-list/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/virtual-list/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/wasm-integration/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/wasm-integration/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/web-worker/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/web-worker/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/advanced/webgl-visualization/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/frontend/advanced/webgl-visualization/task.yaml +0 -16
- package/refs/vbenchmark/tasks/frontend/animation/page-transitions/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/animation/page-transitions/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/components/data-grid/PROMPT.md +0 -59
- package/refs/vbenchmark/tasks/frontend/components/data-grid/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/components/date-range-picker/PROMPT.md +0 -57
- package/refs/vbenchmark/tasks/frontend/components/date-range-picker/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/components/file-uploader/PROMPT.md +0 -55
- package/refs/vbenchmark/tasks/frontend/components/file-uploader/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/components/form-builder/PROMPT.md +0 -96
- package/refs/vbenchmark/tasks/frontend/components/form-builder/task.yaml +0 -28
- package/refs/vbenchmark/tasks/frontend/components/rich-text-editor/PROMPT.md +0 -45
- package/refs/vbenchmark/tasks/frontend/components/rich-text-editor/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/figma-to-code/dashboard-layout/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/frontend/figma-to-code/dashboard-layout/task.yaml +0 -25
- package/refs/vbenchmark/tasks/frontend/figma-to-code/landing-page/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/frontend/figma-to-code/landing-page/task.yaml +0 -25
- package/refs/vbenchmark/tasks/frontend/figma-to-code/mobile-app-screen/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/frontend/figma-to-code/mobile-app-screen/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/figma-to-code/pricing-card/PROMPT.md +0 -93
- package/refs/vbenchmark/tasks/frontend/figma-to-code/pricing-card/docker-compose.yaml +0 -23
- package/refs/vbenchmark/tasks/frontend/figma-to-code/pricing-card/task.yaml +0 -30
- package/refs/vbenchmark/tasks/frontend/figma-to-code/pricing-card/tests/visual/diff.test.ts +0 -107
- package/refs/vbenchmark/tasks/frontend/figma-to-code/pricing-card/tests/visual/interaction.test.ts +0 -88
- package/refs/vbenchmark/tasks/frontend/performance/image-lazy-load/PROMPT.md +0 -43
- package/refs/vbenchmark/tasks/frontend/performance/image-lazy-load/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/performance/infinite-scroll/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/performance/infinite-scroll/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/state-management/collaborative-editor/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/state-management/collaborative-editor/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/state-management/shopping-cart/PROMPT.md +0 -53
- package/refs/vbenchmark/tasks/frontend/state-management/shopping-cart/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/visualization/chart-dashboard/PROMPT.md +0 -83
- package/refs/vbenchmark/tasks/frontend/visualization/chart-dashboard/task.yaml +0 -28
- package/refs/vbenchmark/tasks/frontend/visualization/gantt-chart/PROMPT.md +0 -57
- package/refs/vbenchmark/tasks/frontend/visualization/gantt-chart/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/visualization/map-dashboard/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/frontend/visualization/map-dashboard/task.yaml +0 -24
- package/refs/vbenchmark/tasks/frontend/visualization/realtime-charts/PROMPT.md +0 -43
- package/refs/vbenchmark/tasks/frontend/visualization/realtime-charts/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/advanced/blue-green-deploy/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/blue-green-deploy/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/canary-release/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/canary-release/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/change-data-capture/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/change-data-capture/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/config-management/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/config-management/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/data-pipeline/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/data-pipeline/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/distributed-tracing/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/distributed-tracing/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/log-aggregation/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/log-aggregation/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/schema-registry/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/schema-registry/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/secret-rotation/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/secret-rotation/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/advanced/stream-processing/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/glue-code/advanced/stream-processing/task.yaml +0 -16
- package/refs/vbenchmark/tasks/glue-code/api-sync/rest-to-graphql/PROMPT.md +0 -66
- package/refs/vbenchmark/tasks/glue-code/api-sync/rest-to-graphql/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/caching/redis-cache/PROMPT.md +0 -82
- package/refs/vbenchmark/tasks/glue-code/caching/redis-cache/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/data-transform/avro-schema-evolution/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/glue-code/data-transform/avro-schema-evolution/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/data-transform/csv-normalizer/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/glue-code/data-transform/csv-normalizer/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/data-transform/excel-to-json/PROMPT.md +0 -67
- package/refs/vbenchmark/tasks/glue-code/data-transform/excel-to-json/task.yaml +0 -28
- package/refs/vbenchmark/tasks/glue-code/data-transform/excel-to-json/tests/transform.test.py +0 -137
- package/refs/vbenchmark/tasks/glue-code/data-transform/json-to-xml/PROMPT.md +0 -45
- package/refs/vbenchmark/tasks/glue-code/data-transform/json-to-xml/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/data-transform/protobuf-converter/PROMPT.md +0 -44
- package/refs/vbenchmark/tasks/glue-code/data-transform/protobuf-converter/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/etl/cdc-pipeline/PROMPT.md +0 -52
- package/refs/vbenchmark/tasks/glue-code/etl/cdc-pipeline/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/etl/database-sync/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/glue-code/etl/database-sync/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/etl/s3-to-warehouse/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/etl/s3-to-warehouse/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/file-processing/image-resizer/PROMPT.md +0 -52
- package/refs/vbenchmark/tasks/glue-code/file-processing/image-resizer/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/file-processing/pdf-merger/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/file-processing/pdf-merger/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/file-processing/video-transcoder/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/file-processing/video-transcoder/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/migration/data-backfill/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/migration/data-backfill/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/migration/database-versioning/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/migration/database-versioning/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/queue/kafka-producer/PROMPT.md +0 -49
- package/refs/vbenchmark/tasks/glue-code/queue/kafka-producer/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/queue/rabbitmq-consumer/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/glue-code/queue/rabbitmq-consumer/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/queue/sqs-batch-processor/PROMPT.md +0 -47
- package/refs/vbenchmark/tasks/glue-code/queue/sqs-batch-processor/task.yaml +0 -24
- package/refs/vbenchmark/tasks/glue-code/scheduler/cron-job-manager/PROMPT.md +0 -52
- package/refs/vbenchmark/tasks/glue-code/scheduler/cron-job-manager/task.yaml +0 -27
- package/refs/vbenchmark/tasks/glue-code/scheduler/delayed-tasks/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/glue-code/scheduler/delayed-tasks/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/advanced/api-versioning/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/saas-core/advanced/api-versioning/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/circuit-breaker/PROMPT.md +0 -13
- package/refs/vbenchmark/tasks/saas-core/advanced/circuit-breaker/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/compliance-gdpr/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/saas-core/advanced/compliance-gdpr/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/cqrs-pattern/PROMPT.md +0 -13
- package/refs/vbenchmark/tasks/saas-core/advanced/cqrs-pattern/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/data-encryption/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/saas-core/advanced/data-encryption/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/distributed-locking/PROMPT.md +0 -46
- package/refs/vbenchmark/tasks/saas-core/advanced/distributed-locking/task.yaml +0 -24
- package/refs/vbenchmark/tasks/saas-core/advanced/event-sourcing/PROMPT.md +0 -23
- package/refs/vbenchmark/tasks/saas-core/advanced/event-sourcing/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/feature-flags-ab/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/saas-core/advanced/feature-flags-ab/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/saga-orchestration/PROMPT.md +0 -13
- package/refs/vbenchmark/tasks/saas-core/advanced/saga-orchestration/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/advanced/webhook-delivery/PROMPT.md +0 -15
- package/refs/vbenchmark/tasks/saas-core/advanced/webhook-delivery/task.yaml +0 -16
- package/refs/vbenchmark/tasks/saas-core/audit/activity-logging/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/saas-core/audit/activity-logging/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/jwt-refresh-tokens/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/saas-core/auth/jwt-refresh-tokens/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/magic-link-email/PROMPT.md +0 -53
- package/refs/vbenchmark/tasks/saas-core/auth/magic-link-email/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/mfa-totp/PROMPT.md +0 -79
- package/refs/vbenchmark/tasks/saas-core/auth/mfa-totp/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/rbac-permissions/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/saas-core/auth/rbac-permissions/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/session-management/PROMPT.md +0 -52
- package/refs/vbenchmark/tasks/saas-core/auth/session-management/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/auth/supabase-oauth/PROMPT.md +0 -45
- package/refs/vbenchmark/tasks/saas-core/auth/supabase-oauth/docker-compose.yaml +0 -47
- package/refs/vbenchmark/tasks/saas-core/auth/supabase-oauth/task.yaml +0 -32
- package/refs/vbenchmark/tasks/saas-core/auth/supabase-oauth/tests/auth.test.ts +0 -59
- package/refs/vbenchmark/tasks/saas-core/billing/invoice-generation/PROMPT.md +0 -53
- package/refs/vbenchmark/tasks/saas-core/billing/invoice-generation/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/billing/stripe-subscriptions/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/saas-core/billing/stripe-subscriptions/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/billing/usage-metering/PROMPT.md +0 -52
- package/refs/vbenchmark/tasks/saas-core/billing/usage-metering/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/crud/dashboard-table/PROMPT.md +0 -48
- package/refs/vbenchmark/tasks/saas-core/crud/dashboard-table/task.yaml +0 -28
- package/refs/vbenchmark/tasks/saas-core/multi-tenant/org-isolation/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/saas-core/multi-tenant/org-isolation/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/multi-tenant/subdomain-routing/PROMPT.md +0 -50
- package/refs/vbenchmark/tasks/saas-core/multi-tenant/subdomain-routing/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/notifications/email-queue/PROMPT.md +0 -53
- package/refs/vbenchmark/tasks/saas-core/notifications/email-queue/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/notifications/in-app-alerts/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/saas-core/notifications/in-app-alerts/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/notifications/push-notifications/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/saas-core/notifications/push-notifications/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/realtime/websocket-chat/PROMPT.md +0 -80
- package/refs/vbenchmark/tasks/saas-core/realtime/websocket-chat/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/search/full-text-search/PROMPT.md +0 -51
- package/refs/vbenchmark/tasks/saas-core/search/full-text-search/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/security/rate-limiter/PROMPT.md +0 -99
- package/refs/vbenchmark/tasks/saas-core/security/rate-limiter/task.yaml +0 -27
- package/refs/vbenchmark/tasks/saas-core/settings/user-preferences/PROMPT.md +0 -78
- package/refs/vbenchmark/tasks/saas-core/settings/user-preferences/task.yaml +0 -27
- package/refs/vbenchmark/templates/fastapi-postgres/docker-compose.yaml +0 -36
- package/refs/vbenchmark/templates/fastapi-postgres/pyproject.toml +0 -34
- package/refs/vbenchmark/templates/fastapi-postgres/src/__init__.py +0 -0
- package/refs/vbenchmark/templates/fastapi-postgres/src/config.py +0 -12
- package/refs/vbenchmark/templates/fastapi-postgres/src/database.py +0 -15
- package/refs/vbenchmark/templates/fastapi-postgres/src/main.py +0 -51
- package/refs/vbenchmark/templates/fastapi-postgres/src/models.py +0 -12
- package/refs/vbenchmark/templates/fastapi-postgres/src/schemas.py +0 -20
- package/refs/vbenchmark/templates/go-fiber/docker-compose.yaml +0 -34
- package/refs/vbenchmark/templates/go-fiber/go.mod +0 -33
- package/refs/vbenchmark/templates/go-fiber/go.sum +0 -68
- package/refs/vbenchmark/templates/go-fiber/main.go +0 -98
- package/refs/vbenchmark/templates/nextjs-supabase/.env.example +0 -3
- package/refs/vbenchmark/templates/nextjs-supabase/docker-compose.yaml +0 -68
- package/refs/vbenchmark/templates/nextjs-supabase/src/app/globals.css +0 -13
- package/refs/vbenchmark/templates/nextjs-supabase/src/app/layout.tsx +0 -19
- package/refs/vbenchmark/templates/nextjs-supabase/src/app/page.tsx +0 -38
- package/refs/vbenchmark/templates/nextjs-supabase/src/lib/supabase/client.ts +0 -8
- package/refs/vbenchmark/templates/nextjs-supabase/src/lib/supabase/server.ts +0 -32
- package/refs/vbenchmark/templates/rust-axum/Cargo.lock +0 -2371
- package/refs/vbenchmark/templates/rust-axum/Cargo.toml +0 -16
- package/refs/vbenchmark/templates/rust-axum/docker-compose.yaml +0 -34
- package/refs/vbenchmark/templates/rust-axum/migrations/20240101000000_init.sql +0 -20
- package/refs/vbenchmark/templates/rust-axum/src/main.rs +0 -121
- package/refs/vbenchmark/tsconfig.base.json +0 -18
- package/refs/vbenchmark/turbo.json +0 -23
- package/refs/vbenchmark/vercel.json +0 -10
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# TOTP Multi-Factor Authentication
|
|
2
|
-
|
|
3
|
-
Implement time-based one-time password (TOTP) multi-factor authentication for an existing Next.js + Supabase application.
|
|
4
|
-
|
|
5
|
-
## Requirements
|
|
6
|
-
|
|
7
|
-
### Setup Flow
|
|
8
|
-
1. User navigates to security settings
|
|
9
|
-
2. Click "Enable 2FA" button
|
|
10
|
-
3. Generate TOTP secret and display QR code
|
|
11
|
-
4. User scans with authenticator app (Google Authenticator, Authy)
|
|
12
|
-
5. User enters 6-digit code to verify
|
|
13
|
-
6. Store encrypted secret in database
|
|
14
|
-
7. Show recovery codes (one-time use)
|
|
15
|
-
|
|
16
|
-
### Login Flow
|
|
17
|
-
1. User enters email/password
|
|
18
|
-
2. If MFA enabled, redirect to MFA verification page
|
|
19
|
-
3. User enters 6-digit TOTP code
|
|
20
|
-
4. Validate code against stored secret
|
|
21
|
-
5. Allow login on success
|
|
22
|
-
|
|
23
|
-
### Recovery
|
|
24
|
-
1. User can use recovery code if device lost
|
|
25
|
-
2. Each recovery code is single-use
|
|
26
|
-
3. Admin can reset MFA for users
|
|
27
|
-
|
|
28
|
-
## Technical Specifications
|
|
29
|
-
|
|
30
|
-
### Database Schema
|
|
31
|
-
```sql
|
|
32
|
-
-- Add to users table or create separate table
|
|
33
|
-
ALTER TABLE users ADD COLUMN mfa_secret TEXT;
|
|
34
|
-
ALTER TABLE users ADD COLUMN mfa_enabled BOOLEAN DEFAULT false;
|
|
35
|
-
ALTER TABLE users ADD COLUMN mfa_recovery_codes TEXT[];
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### API Endpoints
|
|
39
|
-
```typescript
|
|
40
|
-
POST /api/auth/mfa/setup // Generate secret + QR code
|
|
41
|
-
POST /api/auth/mfa/verify // Verify code and enable MFA
|
|
42
|
-
POST /api/auth/mfa/validate // Validate during login
|
|
43
|
-
POST /api/auth/mfa/disable // Disable MFA
|
|
44
|
-
POST /api/auth/mfa/recovery // Use recovery code
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Libraries
|
|
48
|
-
- Use `otplib` for TOTP generation/validation
|
|
49
|
-
- Use `qrcode` for QR code generation
|
|
50
|
-
- 30-second time window with 1-step tolerance
|
|
51
|
-
|
|
52
|
-
## UI Components
|
|
53
|
-
|
|
54
|
-
1. **MFA Setup Modal**
|
|
55
|
-
- QR code display
|
|
56
|
-
- Manual secret entry option
|
|
57
|
-
- Verification input
|
|
58
|
-
- Recovery codes display
|
|
59
|
-
|
|
60
|
-
2. **MFA Verification Page**
|
|
61
|
-
- 6-digit code input with auto-submit
|
|
62
|
-
- "Use recovery code" link
|
|
63
|
-
- "Remember this device" checkbox (optional)
|
|
64
|
-
|
|
65
|
-
## Security Requirements
|
|
66
|
-
|
|
67
|
-
- Encrypt MFA secret at rest
|
|
68
|
-
- Rate limit verification attempts (5 per minute)
|
|
69
|
-
- Log all MFA events
|
|
70
|
-
- Invalidate sessions on MFA disable
|
|
71
|
-
|
|
72
|
-
## Acceptance Criteria
|
|
73
|
-
|
|
74
|
-
- [ ] QR code generates correctly
|
|
75
|
-
- [ ] TOTP codes validate within time window
|
|
76
|
-
- [ ] Recovery codes work once only
|
|
77
|
-
- [ ] MFA blocks login when enabled
|
|
78
|
-
- [ ] Rate limiting prevents brute force
|
|
79
|
-
- [ ] Mobile responsive UI
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: TOTP Multi-Factor Authentication
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: auth
|
|
4
|
-
description: Implement time-based one-time password (TOTP) MFA with QR code setup
|
|
5
|
-
difficulty: hard
|
|
6
|
-
stack: nextjs-supabase
|
|
7
|
-
timeout: 900
|
|
8
|
-
tokenLimit: 200000
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
functional: tests/mfa.test.ts
|
|
12
|
-
|
|
13
|
-
docker:
|
|
14
|
-
compose: docker-compose.yaml
|
|
15
|
-
|
|
16
|
-
tags:
|
|
17
|
-
- authentication
|
|
18
|
-
- mfa
|
|
19
|
-
- totp
|
|
20
|
-
- security
|
|
21
|
-
- qr-code
|
|
22
|
-
|
|
23
|
-
evaluation:
|
|
24
|
-
functional: 0.5
|
|
25
|
-
quality: 0.25
|
|
26
|
-
cost: 0.1
|
|
27
|
-
speed: 0.15
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Task: Role-Based Access Control System
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Implement a comprehensive RBAC system with hierarchical roles and fine-grained permissions using Java Spring Boot.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Role Hierarchy**
|
|
9
|
-
- Support role inheritance (Admin > Manager > User)
|
|
10
|
-
- Roles can have multiple permissions
|
|
11
|
-
- Users can have multiple roles
|
|
12
|
-
- Scope roles to organizations/teams
|
|
13
|
-
|
|
14
|
-
2. **Permissions**
|
|
15
|
-
- Resource-based permissions (e.g., `posts:read`, `posts:write`)
|
|
16
|
-
- Support wildcards (`posts:*` = all post permissions)
|
|
17
|
-
- Dynamic permission checks at runtime
|
|
18
|
-
|
|
19
|
-
3. **API Endpoints**
|
|
20
|
-
- `GET /roles` - List all roles
|
|
21
|
-
- `POST /roles` - Create role with permissions
|
|
22
|
-
- `PUT /roles/{id}` - Update role
|
|
23
|
-
- `POST /users/{id}/roles` - Assign role to user
|
|
24
|
-
- `GET /users/{id}/permissions` - Get effective permissions
|
|
25
|
-
|
|
26
|
-
4. **Middleware**
|
|
27
|
-
- `@RequirePermission("posts:write")` annotation
|
|
28
|
-
- Check permissions before controller execution
|
|
29
|
-
- Return 403 if permission denied
|
|
30
|
-
|
|
31
|
-
## Technical Stack
|
|
32
|
-
- Java 17+
|
|
33
|
-
- Spring Boot 3.x
|
|
34
|
-
- Spring Security
|
|
35
|
-
- PostgreSQL
|
|
36
|
-
- JPA/Hibernate
|
|
37
|
-
|
|
38
|
-
## Files to Create
|
|
39
|
-
- `src/main/java/com/app/security/RbacConfig.java`
|
|
40
|
-
- `src/main/java/com/app/models/Role.java`
|
|
41
|
-
- `src/main/java/com/app/models/Permission.java`
|
|
42
|
-
- `src/main/java/com/app/services/RbacService.java`
|
|
43
|
-
- `src/main/java/com/app/annotations/RequirePermission.java`
|
|
44
|
-
- `src/main/java/com/app/aspects/PermissionAspect.java`
|
|
45
|
-
|
|
46
|
-
## Success Criteria
|
|
47
|
-
- [ ] Role hierarchy works correctly
|
|
48
|
-
- [ ] Permission wildcards expand properly
|
|
49
|
-
- [ ] Users inherit permissions from all roles
|
|
50
|
-
- [ ] @RequirePermission blocks unauthorized access
|
|
51
|
-
- [ ] Organization scoping isolates permissions
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: Role-Based Access Control System
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: auth
|
|
4
|
-
description: Implement RBAC with hierarchical roles and fine-grained permissions in Java Spring
|
|
5
|
-
difficulty: hard
|
|
6
|
-
stack: java
|
|
7
|
-
timeout: 900
|
|
8
|
-
tokenLimit: 200000
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
functional: tests/RbacTest.java
|
|
12
|
-
|
|
13
|
-
docker:
|
|
14
|
-
compose: docker-compose.yaml
|
|
15
|
-
|
|
16
|
-
tags:
|
|
17
|
-
- java
|
|
18
|
-
- spring-boot
|
|
19
|
-
- rbac
|
|
20
|
-
- authorization
|
|
21
|
-
- security
|
|
22
|
-
|
|
23
|
-
evaluation:
|
|
24
|
-
functional: 0.5
|
|
25
|
-
quality: 0.25
|
|
26
|
-
cost: 0.1
|
|
27
|
-
speed: 0.15
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Task: Secure Session Management
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Implement secure server-side session management with Redis backend using Rust and Actix-web.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Session Creation**
|
|
9
|
-
- Generate cryptographically secure session IDs
|
|
10
|
-
- Store session data in Redis with TTL
|
|
11
|
-
- Set HTTP-only, Secure, SameSite cookies
|
|
12
|
-
- Bind session to user agent and IP
|
|
13
|
-
|
|
14
|
-
2. **Session Storage**
|
|
15
|
-
- Store user ID, roles, preferences in session
|
|
16
|
-
- Encrypt sensitive session data at rest
|
|
17
|
-
- Automatic session extension on activity
|
|
18
|
-
- Maximum session lifetime (24 hours absolute)
|
|
19
|
-
|
|
20
|
-
3. **Session Security**
|
|
21
|
-
- Regenerate session ID on privilege change
|
|
22
|
-
- Detect session fixation attempts
|
|
23
|
-
- Concurrent session limits per user
|
|
24
|
-
- Session invalidation on password change
|
|
25
|
-
|
|
26
|
-
4. **Endpoints**
|
|
27
|
-
- `POST /session` - Create session (login)
|
|
28
|
-
- `GET /session` - Get current session info
|
|
29
|
-
- `DELETE /session` - Destroy session (logout)
|
|
30
|
-
- `GET /sessions` - List active sessions for user
|
|
31
|
-
- `DELETE /sessions/{id}` - Revoke specific session
|
|
32
|
-
|
|
33
|
-
## Technical Stack
|
|
34
|
-
- Rust 1.70+
|
|
35
|
-
- Actix-web 4.x
|
|
36
|
-
- Redis
|
|
37
|
-
- PostgreSQL with sqlx
|
|
38
|
-
|
|
39
|
-
## Files to Create
|
|
40
|
-
- `src/main.rs` - Application entry
|
|
41
|
-
- `src/session/mod.rs` - Session module
|
|
42
|
-
- `src/session/store.rs` - Redis session store
|
|
43
|
-
- `src/session/middleware.rs` - Session middleware
|
|
44
|
-
- `src/handlers/session.rs` - Session endpoints
|
|
45
|
-
- `src/crypto.rs` - Encryption utilities
|
|
46
|
-
|
|
47
|
-
## Success Criteria
|
|
48
|
-
- [ ] Sessions stored securely in Redis
|
|
49
|
-
- [ ] Cookie attributes set correctly
|
|
50
|
-
- [ ] Session regeneration on login
|
|
51
|
-
- [ ] Concurrent session limit enforced
|
|
52
|
-
- [ ] Sessions invalidated on password change
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: Secure Session Management
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: auth
|
|
4
|
-
description: Implement secure session handling with Redis in Rust
|
|
5
|
-
difficulty: hard
|
|
6
|
-
stack: rust
|
|
7
|
-
timeout: 900
|
|
8
|
-
tokenLimit: 200000
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
functional: tests/session_test.rs
|
|
12
|
-
|
|
13
|
-
docker:
|
|
14
|
-
compose: docker-compose.yaml
|
|
15
|
-
|
|
16
|
-
tags:
|
|
17
|
-
- rust
|
|
18
|
-
- actix-web
|
|
19
|
-
- sessions
|
|
20
|
-
- redis
|
|
21
|
-
- security
|
|
22
|
-
|
|
23
|
-
evaluation:
|
|
24
|
-
functional: 0.5
|
|
25
|
-
quality: 0.25
|
|
26
|
-
cost: 0.1
|
|
27
|
-
speed: 0.15
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Task: Implement Google OAuth with Supabase
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Add Google OAuth authentication to an existing Next.js application using Supabase Auth.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Sign In Button**
|
|
9
|
-
- Add a "Sign in with Google" button on the `/login` page
|
|
10
|
-
- Button should be styled with Google's brand guidelines
|
|
11
|
-
- Show loading state while authentication is in progress
|
|
12
|
-
|
|
13
|
-
2. **OAuth Flow**
|
|
14
|
-
- Configure Supabase Auth for Google OAuth
|
|
15
|
-
- Handle the OAuth callback at `/auth/callback`
|
|
16
|
-
- Redirect to `/dashboard` on successful authentication
|
|
17
|
-
- Show error message on authentication failure
|
|
18
|
-
|
|
19
|
-
3. **Session Management**
|
|
20
|
-
- Store session in Supabase
|
|
21
|
-
- Create middleware to protect `/dashboard` route
|
|
22
|
-
- Redirect unauthenticated users to `/login`
|
|
23
|
-
|
|
24
|
-
4. **User Profile**
|
|
25
|
-
- Display user's email and profile picture on dashboard
|
|
26
|
-
- Add a "Sign Out" button that clears the session
|
|
27
|
-
|
|
28
|
-
## Technical Constraints
|
|
29
|
-
- Use `@supabase/ssr` for server-side auth
|
|
30
|
-
- Use Next.js App Router (not Pages Router)
|
|
31
|
-
- Do not hardcode any credentials
|
|
32
|
-
|
|
33
|
-
## Files to Modify/Create
|
|
34
|
-
- `src/app/login/page.tsx` - Login page with Google button
|
|
35
|
-
- `src/app/auth/callback/route.ts` - OAuth callback handler
|
|
36
|
-
- `src/app/dashboard/page.tsx` - Protected dashboard
|
|
37
|
-
- `src/middleware.ts` - Route protection
|
|
38
|
-
- `src/lib/supabase/server.ts` - Server-side Supabase client
|
|
39
|
-
- `src/lib/supabase/client.ts` - Client-side Supabase client
|
|
40
|
-
|
|
41
|
-
## Success Criteria
|
|
42
|
-
- [ ] User can click "Sign in with Google" and complete OAuth flow
|
|
43
|
-
- [ ] Session persists across page refreshes
|
|
44
|
-
- [ ] Unauthenticated users are redirected from /dashboard to /login
|
|
45
|
-
- [ ] User can sign out and session is cleared
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
version: '3.8'
|
|
2
|
-
|
|
3
|
-
services:
|
|
4
|
-
supabase-db:
|
|
5
|
-
image: supabase/postgres:15.1.0.117
|
|
6
|
-
ports:
|
|
7
|
-
- "5432:5432"
|
|
8
|
-
environment:
|
|
9
|
-
POSTGRES_PASSWORD: postgres
|
|
10
|
-
POSTGRES_DB: postgres
|
|
11
|
-
healthcheck:
|
|
12
|
-
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
13
|
-
interval: 5s
|
|
14
|
-
timeout: 5s
|
|
15
|
-
retries: 5
|
|
16
|
-
|
|
17
|
-
supabase-auth:
|
|
18
|
-
image: supabase/gotrue:v2.132.3
|
|
19
|
-
ports:
|
|
20
|
-
- "9999:9999"
|
|
21
|
-
environment:
|
|
22
|
-
GOTRUE_API_HOST: 0.0.0.0
|
|
23
|
-
GOTRUE_API_PORT: 9999
|
|
24
|
-
API_EXTERNAL_URL: http://localhost:9999
|
|
25
|
-
GOTRUE_DB_DRIVER: postgres
|
|
26
|
-
GOTRUE_DB_DATABASE_URL: postgres://postgres:postgres@supabase-db:5432/postgres?sslmode=disable
|
|
27
|
-
GOTRUE_SITE_URL: http://localhost:3000
|
|
28
|
-
GOTRUE_JWT_SECRET: super-secret-jwt-token-with-at-least-32-characters
|
|
29
|
-
GOTRUE_EXTERNAL_GOOGLE_ENABLED: true
|
|
30
|
-
GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-mock}
|
|
31
|
-
GOTRUE_EXTERNAL_GOOGLE_SECRET: ${GOOGLE_CLIENT_SECRET:-mock}
|
|
32
|
-
GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI: http://localhost:3000/auth/callback
|
|
33
|
-
depends_on:
|
|
34
|
-
supabase-db:
|
|
35
|
-
condition: service_healthy
|
|
36
|
-
|
|
37
|
-
app:
|
|
38
|
-
build:
|
|
39
|
-
context: .
|
|
40
|
-
dockerfile: Dockerfile
|
|
41
|
-
ports:
|
|
42
|
-
- "3000:3000"
|
|
43
|
-
environment:
|
|
44
|
-
NEXT_PUBLIC_SUPABASE_URL: http://supabase-auth:9999
|
|
45
|
-
NEXT_PUBLIC_SUPABASE_ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.mock
|
|
46
|
-
depends_on:
|
|
47
|
-
- supabase-auth
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
name: Supabase Google OAuth
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: auth
|
|
4
|
-
description: Implement Google OAuth authentication using Next.js and Supabase
|
|
5
|
-
difficulty: medium
|
|
6
|
-
stack: nextjs-supabase
|
|
7
|
-
timeout: 300
|
|
8
|
-
tokenLimit: 80000
|
|
9
|
-
template: nextjs-supabase
|
|
10
|
-
|
|
11
|
-
promptFile: PROMPT.md
|
|
12
|
-
|
|
13
|
-
tests:
|
|
14
|
-
functional: tests/auth.test.ts
|
|
15
|
-
|
|
16
|
-
docker:
|
|
17
|
-
compose: docker-compose.yaml
|
|
18
|
-
|
|
19
|
-
weight: 1.5
|
|
20
|
-
tags:
|
|
21
|
-
- typescript
|
|
22
|
-
- nextjs
|
|
23
|
-
- supabase
|
|
24
|
-
- oauth
|
|
25
|
-
- auth
|
|
26
|
-
|
|
27
|
-
evaluation:
|
|
28
|
-
functional: 0.5
|
|
29
|
-
visual: 0.1
|
|
30
|
-
quality: 0.2
|
|
31
|
-
cost: 0.1
|
|
32
|
-
speed: 0.1
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { test, expect } from '@playwright/test';
|
|
2
|
-
|
|
3
|
-
test.describe('Google OAuth Authentication', () => {
|
|
4
|
-
test('should show sign in with Google button on login page', async ({ page }) => {
|
|
5
|
-
await page.goto('/login');
|
|
6
|
-
const googleButton = page.getByRole('button', { name: /sign in with google/i });
|
|
7
|
-
await expect(googleButton).toBeVisible();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
test('should redirect unauthenticated users from dashboard to login', async ({ page }) => {
|
|
11
|
-
await page.goto('/dashboard');
|
|
12
|
-
await expect(page).toHaveURL(/\/login/);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
test('should complete OAuth flow and redirect to dashboard', async ({ page }) => {
|
|
16
|
-
// This test uses a mock OAuth provider
|
|
17
|
-
await page.goto('/login');
|
|
18
|
-
|
|
19
|
-
// Click Google sign in button
|
|
20
|
-
const googleButton = page.getByRole('button', { name: /sign in with google/i });
|
|
21
|
-
await googleButton.click();
|
|
22
|
-
|
|
23
|
-
// Mock OAuth callback
|
|
24
|
-
await page.goto('/auth/callback?code=mock_code');
|
|
25
|
-
|
|
26
|
-
// Should redirect to dashboard
|
|
27
|
-
await expect(page).toHaveURL(/\/dashboard/);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('should display user info on dashboard after login', async ({ page }) => {
|
|
31
|
-
// Set up authenticated session
|
|
32
|
-
await page.goto('/auth/callback?code=mock_code');
|
|
33
|
-
await page.goto('/dashboard');
|
|
34
|
-
|
|
35
|
-
// Should show user email
|
|
36
|
-
await expect(page.getByText(/@/)).toBeVisible();
|
|
37
|
-
|
|
38
|
-
// Should show sign out button
|
|
39
|
-
const signOutButton = page.getByRole('button', { name: /sign out/i });
|
|
40
|
-
await expect(signOutButton).toBeVisible();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
test('should clear session on sign out', async ({ page }) => {
|
|
44
|
-
// Set up authenticated session
|
|
45
|
-
await page.goto('/auth/callback?code=mock_code');
|
|
46
|
-
await page.goto('/dashboard');
|
|
47
|
-
|
|
48
|
-
// Click sign out
|
|
49
|
-
const signOutButton = page.getByRole('button', { name: /sign out/i });
|
|
50
|
-
await signOutButton.click();
|
|
51
|
-
|
|
52
|
-
// Should redirect to login
|
|
53
|
-
await expect(page).toHaveURL(/\/login/);
|
|
54
|
-
|
|
55
|
-
// Session should be cleared - accessing dashboard should redirect to login
|
|
56
|
-
await page.goto('/dashboard');
|
|
57
|
-
await expect(page).toHaveURL(/\/login/);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Task: PDF Invoice Generation
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Build an invoice generation system that creates professional PDF invoices with proper tax calculations and localization.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Invoice Data**
|
|
9
|
-
- Company details (logo, address, tax ID)
|
|
10
|
-
- Customer billing info
|
|
11
|
-
- Line items with quantity, unit price, total
|
|
12
|
-
- Subtotal, tax breakdown, grand total
|
|
13
|
-
- Payment terms and due date
|
|
14
|
-
|
|
15
|
-
2. **Tax Handling**
|
|
16
|
-
- Support multiple tax rates (VAT, GST, Sales Tax)
|
|
17
|
-
- Tax-inclusive vs tax-exclusive pricing
|
|
18
|
-
- Tax exemption for certain customers
|
|
19
|
-
- Per-line-item tax rate support
|
|
20
|
-
|
|
21
|
-
3. **PDF Generation**
|
|
22
|
-
- Professional template with branding
|
|
23
|
-
- Table of line items with proper alignment
|
|
24
|
-
- QR code for payment (optional)
|
|
25
|
-
- Invoice numbering (INV-2025-00001)
|
|
26
|
-
|
|
27
|
-
4. **API Endpoints**
|
|
28
|
-
- `POST /invoices` - Create invoice
|
|
29
|
-
- `GET /invoices/{id}` - Get invoice details
|
|
30
|
-
- `GET /invoices/{id}/pdf` - Download PDF
|
|
31
|
-
- `POST /invoices/{id}/send` - Email invoice to customer
|
|
32
|
-
|
|
33
|
-
## Technical Stack
|
|
34
|
-
- Python 3.11+
|
|
35
|
-
- FastAPI
|
|
36
|
-
- WeasyPrint or ReportLab for PDF
|
|
37
|
-
- Jinja2 for templates
|
|
38
|
-
- PostgreSQL
|
|
39
|
-
|
|
40
|
-
## Files to Create
|
|
41
|
-
- `app/services/invoice.py` - Invoice logic
|
|
42
|
-
- `app/services/pdf_generator.py` - PDF generation
|
|
43
|
-
- `app/services/tax_calculator.py` - Tax calculations
|
|
44
|
-
- `app/routers/invoices.py` - API endpoints
|
|
45
|
-
- `app/templates/invoice.html` - PDF template
|
|
46
|
-
- `app/models/invoice.py` - SQLAlchemy models
|
|
47
|
-
|
|
48
|
-
## Success Criteria
|
|
49
|
-
- [ ] PDF generated with all invoice details
|
|
50
|
-
- [ ] Tax calculations are accurate
|
|
51
|
-
- [ ] Invoice numbers are sequential and unique
|
|
52
|
-
- [ ] PDF renders correctly with line items table
|
|
53
|
-
- [ ] Email delivery works with attachment
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: PDF Invoice Generation
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: billing
|
|
4
|
-
description: Generate professional PDF invoices with line items and tax calculations
|
|
5
|
-
difficulty: medium
|
|
6
|
-
stack: python
|
|
7
|
-
timeout: 600
|
|
8
|
-
tokenLimit: 150000
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
functional: tests/test_invoice.py
|
|
12
|
-
|
|
13
|
-
docker:
|
|
14
|
-
compose: docker-compose.yaml
|
|
15
|
-
|
|
16
|
-
tags:
|
|
17
|
-
- python
|
|
18
|
-
- pdf
|
|
19
|
-
- invoicing
|
|
20
|
-
- billing
|
|
21
|
-
- reporting
|
|
22
|
-
|
|
23
|
-
evaluation:
|
|
24
|
-
functional: 0.5
|
|
25
|
-
quality: 0.2
|
|
26
|
-
cost: 0.15
|
|
27
|
-
speed: 0.15
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Task: Stripe Subscription Management
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Implement complete subscription lifecycle management with Stripe including upgrades, downgrades, and cancellations.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Subscription Creation**
|
|
9
|
-
- Create Stripe checkout session for new subscriptions
|
|
10
|
-
- Support multiple pricing tiers (Basic, Pro, Enterprise)
|
|
11
|
-
- Handle trial periods
|
|
12
|
-
- Sync subscription to database on webhook
|
|
13
|
-
|
|
14
|
-
2. **Subscription Management**
|
|
15
|
-
- `POST /subscriptions/checkout` - Create checkout session
|
|
16
|
-
- `GET /subscriptions/current` - Get current subscription
|
|
17
|
-
- `POST /subscriptions/change-plan` - Upgrade/downgrade
|
|
18
|
-
- `POST /subscriptions/cancel` - Cancel with feedback
|
|
19
|
-
- `POST /subscriptions/reactivate` - Reactivate before period ends
|
|
20
|
-
|
|
21
|
-
3. **Webhook Handling**
|
|
22
|
-
- `customer.subscription.created`
|
|
23
|
-
- `customer.subscription.updated`
|
|
24
|
-
- `customer.subscription.deleted`
|
|
25
|
-
- `invoice.payment_succeeded`
|
|
26
|
-
- `invoice.payment_failed`
|
|
27
|
-
|
|
28
|
-
4. **Proration**
|
|
29
|
-
- Immediate proration on upgrade
|
|
30
|
-
- Credit for unused time on downgrade
|
|
31
|
-
- Show prorated amount before confirming change
|
|
32
|
-
|
|
33
|
-
## Technical Stack
|
|
34
|
-
- TypeScript/Node.js
|
|
35
|
-
- Express or Hono
|
|
36
|
-
- Stripe SDK
|
|
37
|
-
- PostgreSQL with Prisma
|
|
38
|
-
|
|
39
|
-
## Files to Create
|
|
40
|
-
- `src/routes/subscriptions.ts` - Subscription endpoints
|
|
41
|
-
- `src/routes/webhooks/stripe.ts` - Webhook handler
|
|
42
|
-
- `src/services/stripe.ts` - Stripe service
|
|
43
|
-
- `src/services/subscription.ts` - Subscription logic
|
|
44
|
-
- `prisma/schema.prisma` - Subscription model
|
|
45
|
-
|
|
46
|
-
## Success Criteria
|
|
47
|
-
- [ ] Checkout creates subscription correctly
|
|
48
|
-
- [ ] Webhooks sync subscription status
|
|
49
|
-
- [ ] Plan changes prorate correctly
|
|
50
|
-
- [ ] Cancellation preserves access until period end
|
|
51
|
-
- [ ] Failed payments trigger dunning flow
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: Stripe Subscription Management
|
|
2
|
-
category: saas-core
|
|
3
|
-
subcategory: billing
|
|
4
|
-
description: Implement subscription lifecycle management with Stripe
|
|
5
|
-
difficulty: medium
|
|
6
|
-
stack: nodejs
|
|
7
|
-
timeout: 600
|
|
8
|
-
tokenLimit: 150000
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
functional: tests/subscription.test.ts
|
|
12
|
-
|
|
13
|
-
docker:
|
|
14
|
-
compose: docker-compose.yaml
|
|
15
|
-
|
|
16
|
-
tags:
|
|
17
|
-
- typescript
|
|
18
|
-
- stripe
|
|
19
|
-
- subscriptions
|
|
20
|
-
- billing
|
|
21
|
-
- saas
|
|
22
|
-
|
|
23
|
-
evaluation:
|
|
24
|
-
functional: 0.5
|
|
25
|
-
quality: 0.2
|
|
26
|
-
cost: 0.15
|
|
27
|
-
speed: 0.15
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Task: Usage-Based Metering System
|
|
2
|
-
|
|
3
|
-
## Objective
|
|
4
|
-
Build a high-performance usage metering system for API calls with Go that tracks, aggregates, and reports usage for billing.
|
|
5
|
-
|
|
6
|
-
## Requirements
|
|
7
|
-
|
|
8
|
-
1. **Usage Tracking**
|
|
9
|
-
- Track API calls per customer in real-time
|
|
10
|
-
- Capture: timestamp, endpoint, response time, tokens used
|
|
11
|
-
- Handle high throughput (10K+ requests/sec)
|
|
12
|
-
- Buffer and batch writes to database
|
|
13
|
-
|
|
14
|
-
2. **Aggregation**
|
|
15
|
-
- Hourly/daily/monthly rollups
|
|
16
|
-
- Per-endpoint breakdowns
|
|
17
|
-
- Dimension by: customer, API key, endpoint
|
|
18
|
-
- Background workers for aggregation
|
|
19
|
-
|
|
20
|
-
3. **Quota Management**
|
|
21
|
-
- Set usage limits per plan
|
|
22
|
-
- Real-time quota checking
|
|
23
|
-
- Soft limits (warning) vs hard limits (block)
|
|
24
|
-
- Quota reset on billing cycle
|
|
25
|
-
|
|
26
|
-
4. **API Endpoints**
|
|
27
|
-
- `GET /usage/current` - Current period usage
|
|
28
|
-
- `GET /usage/history` - Historical usage data
|
|
29
|
-
- `GET /usage/breakdown` - Per-endpoint breakdown
|
|
30
|
-
- `POST /usage/record` - Record usage event (internal)
|
|
31
|
-
|
|
32
|
-
## Technical Stack
|
|
33
|
-
- Go 1.21+
|
|
34
|
-
- Gin or Chi router
|
|
35
|
-
- Redis for real-time counters
|
|
36
|
-
- PostgreSQL for historical data
|
|
37
|
-
- TimescaleDB for time-series
|
|
38
|
-
|
|
39
|
-
## Files to Create
|
|
40
|
-
- `cmd/metering/main.go` - Entry point
|
|
41
|
-
- `internal/metering/tracker.go` - Usage tracking
|
|
42
|
-
- `internal/metering/aggregator.go` - Aggregation workers
|
|
43
|
-
- `internal/metering/quota.go` - Quota management
|
|
44
|
-
- `internal/handlers/usage.go` - API handlers
|
|
45
|
-
- `internal/middleware/metering.go` - Auto-track middleware
|
|
46
|
-
|
|
47
|
-
## Success Criteria
|
|
48
|
-
- [ ] Usage tracked with <10ms latency overhead
|
|
49
|
-
- [ ] Aggregations computed correctly
|
|
50
|
-
- [ ] Quota limits enforced in real-time
|
|
51
|
-
- [ ] Historical data queryable efficiently
|
|
52
|
-
- [ ] Handles 10K+ req/sec without dropping
|