@etus/bhono-app 0.1.1
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/dist/cli.d.ts +13 -0
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.test.d.ts +1 -0
- package/dist/cli.test.js +26 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/generator.d.ts +14 -0
- package/dist/generator.js +142 -0
- package/dist/generator.js.map +1 -0
- package/dist/generator.test.d.ts +1 -0
- package/dist/generator.test.js +127 -0
- package/dist/generator.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +25 -0
- package/dist/prompts.js +83 -0
- package/dist/prompts.js.map +1 -0
- package/dist/prompts.test.d.ts +1 -0
- package/dist/prompts.test.js +24 -0
- package/dist/prompts.test.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +37 -0
- package/dist/providers/cloudflare.js +61 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/cloudflare.test.d.ts +1 -0
- package/dist/providers/cloudflare.test.js +29 -0
- package/dist/providers/cloudflare.test.js.map +1 -0
- package/dist/providers/github.d.ts +16 -0
- package/dist/providers/github.js +57 -0
- package/dist/providers/github.js.map +1 -0
- package/dist/providers/github.test.d.ts +1 -0
- package/dist/providers/github.test.js +16 -0
- package/dist/providers/github.test.js.map +1 -0
- package/dist/templates.d.ts +8 -0
- package/dist/templates.js +88 -0
- package/dist/templates.js.map +1 -0
- package/dist/templates.test.d.ts +1 -0
- package/dist/templates.test.js +26 -0
- package/dist/templates.test.js.map +1 -0
- package/package.json +36 -0
- package/templates/base/.claude/agents/architect-review.md +160 -0
- package/templates/base/.claude/agents/backend-architect.md +308 -0
- package/templates/base/.claude/agents/code-reviewer.md +170 -0
- package/templates/base/.claude/agents/performance-engineer.md +166 -0
- package/templates/base/.claude/agents/test-automator.md +219 -0
- package/templates/base/.claude/commands/check-skill-rules.md +53 -0
- package/templates/base/.claude/commands/claude-md.md +250 -0
- package/templates/base/.claude/commands/code-prompt.md +212 -0
- package/templates/base/.claude/commands/explain-code.md +194 -0
- package/templates/base/.claude/commands/init-projec.md +89 -0
- package/templates/base/.claude/commands/linear/README.md +297 -0
- package/templates/base/.claude/commands/linear/create-issue.md +190 -0
- package/templates/base/.claude/commands/linear/implement-issue.md +248 -0
- package/templates/base/.claude/commands/linear/process-triage.md +399 -0
- package/templates/base/.claude/commands/linear/setup.md +180 -0
- package/templates/base/.claude/commands/prime.md +9 -0
- package/templates/base/.claude/commands/review-gap.md +10 -0
- package/templates/base/.claude/commands/setup-aa.md +311 -0
- package/templates/base/.claude/commands/ship.md +262 -0
- package/templates/base/.claude/commands/tools.md +3 -0
- package/templates/base/.claude/docs/claude-progress.txt +107 -0
- package/templates/base/.claude/hooks/package-lock.json +556 -0
- package/templates/base/.claude/hooks/package.json +16 -0
- package/templates/base/.claude/hooks/skill-activation-prompt.sh +7 -0
- package/templates/base/.claude/hooks/skill-activation-prompt.ts +142 -0
- package/templates/base/.claude/hooks/tsconfig.json +19 -0
- package/templates/base/.claude/scripts/check-updates.sh +85 -0
- package/templates/base/.claude/scripts/install_pkgs.sh +66 -0
- package/templates/base/.claude/scripts/setup-project.sh +177 -0
- package/templates/base/.claude/scripts/validate-skill-rules.sh +94 -0
- package/templates/base/.claude/settings.json +113 -0
- package/templates/base/.claude/settings.local.json +11 -0
- package/templates/base/.claude/skills/architecture-analyzer/SKILL.md +531 -0
- package/templates/base/.claude/skills/architecture-analyzer/assets/report-template.md +215 -0
- package/templates/base/.claude/skills/architecture-analyzer/references/c4-templates.md +234 -0
- package/templates/base/.claude/skills/architecture-analyzer/references/confidence-levels.md +203 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/analyze_structure.py +266 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/analyze_tech_debt.py +776 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/extract_apis.py +338 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/generate_c4.py +283 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/generate_erd.py +935 -0
- package/templates/base/.claude/skills/architecture-analyzer/scripts/map_dependencies.py +555 -0
- package/templates/base/.claude/skills/dev-browser/SKILL.md +318 -0
- package/templates/base/.claude/skills/dev-browser/bun.lock +443 -0
- package/templates/base/.claude/skills/dev-browser/package-lock.json +2927 -0
- package/templates/base/.claude/skills/dev-browser/package.json +27 -0
- package/templates/base/.claude/skills/dev-browser/scripts/start-server.ts +117 -0
- package/templates/base/.claude/skills/dev-browser/server.sh +24 -0
- package/templates/base/.claude/skills/dev-browser/src/client.ts +403 -0
- package/templates/base/.claude/skills/dev-browser/src/index.ts +281 -0
- package/templates/base/.claude/skills/dev-browser/src/snapshot/__tests__/snapshot.test.ts +223 -0
- package/templates/base/.claude/skills/dev-browser/src/snapshot/browser-script.ts +877 -0
- package/templates/base/.claude/skills/dev-browser/src/snapshot/index.ts +14 -0
- package/templates/base/.claude/skills/dev-browser/src/snapshot/inject.ts +13 -0
- package/templates/base/.claude/skills/dev-browser/src/types.ts +27 -0
- package/templates/base/.claude/skills/dev-browser/tsconfig.json +36 -0
- package/templates/base/.claude/skills/dev-browser/vitest.config.ts +12 -0
- package/templates/base/.claude/skills/linear/SKILL.md +440 -0
- package/templates/base/.claude/skills/linear/examples.md +262 -0
- package/templates/base/.claude/skills/linear/lib/client.ts +51 -0
- package/templates/base/.claude/skills/linear/lib/config.ts +106 -0
- package/templates/base/.claude/skills/linear/lib/output.ts +34 -0
- package/templates/base/.claude/skills/linear/package-lock.json +698 -0
- package/templates/base/.claude/skills/linear/package.json +27 -0
- package/templates/base/.claude/skills/linear/reference.md +263 -0
- package/templates/base/.claude/skills/linear/scripts/comments/create.ts +47 -0
- package/templates/base/.claude/skills/linear/scripts/comments/list.ts +47 -0
- package/templates/base/.claude/skills/linear/scripts/issues/archive.ts +30 -0
- package/templates/base/.claude/skills/linear/scripts/issues/create.ts +279 -0
- package/templates/base/.claude/skills/linear/scripts/issues/get.ts +68 -0
- package/templates/base/.claude/skills/linear/scripts/issues/list.ts +67 -0
- package/templates/base/.claude/skills/linear/scripts/issues/update.ts +281 -0
- package/templates/base/.claude/skills/linear/scripts/labels/add-to-issue.ts +63 -0
- package/templates/base/.claude/skills/linear/scripts/labels/create.ts +45 -0
- package/templates/base/.claude/skills/linear/scripts/labels/list.ts +30 -0
- package/templates/base/.claude/skills/linear/scripts/list-teams.ts +52 -0
- package/templates/base/.claude/skills/linear/scripts/setup/setup-credentials.ts +96 -0
- package/templates/base/.claude/skills/linear/scripts/status/list.ts +31 -0
- package/templates/base/.claude/skills/linear/scripts/status/set-by-name.ts +78 -0
- package/templates/base/.claude/skills/linear/scripts/status/update.ts +44 -0
- package/templates/base/.claude/skills/linear/scripts/users/list.ts +59 -0
- package/templates/base/.claude/skills/linear/scripts/users/me.ts +20 -0
- package/templates/base/.claude/skills/linear/templates/README.md +203 -0
- package/templates/base/.claude/skills/linear/templates/api-reference.md +258 -0
- package/templates/base/.claude/skills/linear/templates/bug-report.md +99 -0
- package/templates/base/.claude/skills/linear/templates/feature-request.md +118 -0
- package/templates/base/.claude/skills/linear/templates/security-issue.md +162 -0
- package/templates/base/.claude/skills/linear/templates/sprint-task.md +175 -0
- package/templates/base/.claude/skills/linear/templates/tech-debt.md +137 -0
- package/templates/base/.claude/skills/linear/tsconfig.json +17 -0
- package/templates/base/.claude/skills/linear/workflows/issue-lifecycle.md +317 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/SKILL.md +113 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/assets/global-setup.template.js +97 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/assets/playwright.config.template.js +171 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/assets/test-template.spec.js +163 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/examples/README.md +26 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/examples/ads.email-deeplink.spec.ts +12 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/examples/mobile.realism.spec.ts +16 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/examples/smoke.home.spec.ts +6 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/architecture.md +578 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/best-practices.md +260 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/ci-reporting.md +86 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/debugging.md +629 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/mobile-realism.md +50 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/optimization.md +488 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/patterns.md +513 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/resources.md +44 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/references/visual-a11y.md +66 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/scripts/auth-setup.js +202 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/scripts/performance-analyzer.js +240 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/scripts/trace-url.js +132 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/ci/github-actions.playwright.yml +78 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/fixtures.ts +44 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/global-setup.template.js +97 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/global.setup.ts +35 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/helpers/ad-gpt-observer.ts +80 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/helpers/chromium-mobile-profile.ts +93 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/playwright.config.template.js +171 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/playwright.config.ts +126 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/test-template.spec.js +163 -0
- package/templates/base/.claude/skills/playwright-e2e-testing/templates/tests/email-deeplink.ads.spec.ts +44 -0
- package/templates/base/.claude/skills/skill-rules.json +184 -0
- package/templates/base/.claude/skills/wrangler/SKILL.md +209 -0
- package/templates/base/.claude/skills/wrangler/resources/api.md +494 -0
- package/templates/base/.claude/skills/wrangler/resources/bundling.md +83 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/cert.md +64 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/check.md +66 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/containers.md +157 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/d1.md +843 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/delete.md +27 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/deploy.md +139 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/deployments.md +56 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/dev.md +157 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/dispatch-namespace.md +69 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/docs.md +61 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/how-to-run.md +62 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/hyperdrive.md +425 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/init.md +31 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/kv-bulk.md +265 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/kv-key.md +353 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/kv-namespace.md +265 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/login.md +23 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/logout.md +19 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/mtls-certificate.md +69 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/pages.md +175 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/pipelines.md +76 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/queues.md +132 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/r2-bucket.md +342 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/r2-object.md +267 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/r2-sql.md +65 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/rollback.md +40 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/secret.md +308 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/secrets-store-secret.md +100 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/secrets-store-store.md +60 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/setup.md +67 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/tail.md +37 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/telemetry.md +64 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/triggers.md +39 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/types.md +73 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/vectorize.md +941 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/versions.md +95 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/whoami.md +49 -0
- package/templates/base/.claude/skills/wrangler/resources/commands/workflows.md +117 -0
- package/templates/base/.claude/skills/wrangler/resources/commands.md +138 -0
- package/templates/base/.claude/skills/wrangler/resources/configuration.md +2176 -0
- package/templates/base/.claude/skills/wrangler/resources/custom-builds.md +55 -0
- package/templates/base/.claude/skills/wrangler/resources/deprecations.md +279 -0
- package/templates/base/.claude/skills/wrangler/resources/enviroments.md +416 -0
- package/templates/base/.claude/skills/wrangler/resources/extract_sections.py +119 -0
- package/templates/base/.claude/skills/wrangler/resources/process_content.py +94 -0
- package/templates/base/.claude/skills/wrangler/resources/system-enviroments-variables.md +120 -0
- package/templates/base/.dev.vars.example +15 -0
- package/templates/base/.env.example +29 -0
- package/templates/base/.github/workflows/test.yml +127 -0
- package/templates/base/.nycrc.json +16 -0
- package/templates/base/CLAUDE.md +218 -0
- package/templates/base/README.md +670 -0
- package/templates/base/auth-setup-error.png +0 -0
- package/templates/base/config/drizzle.config.ts +10 -0
- package/templates/base/config/eslint.config.js +364 -0
- package/templates/base/config/wrangler.json +76 -0
- package/templates/base/docs/app_spec.txt +879 -0
- package/templates/base/docs/app_spec_template.md +681 -0
- package/templates/base/docs/architecture/README.md +8 -0
- package/templates/base/docs/architecture/data-requirements.md +109 -0
- package/templates/base/docs/architecture/erd.md +91 -0
- package/templates/base/docs/features/feature_list.json +3128 -0
- package/templates/base/docs/hono-boilerplate-plan.md +1774 -0
- package/templates/base/docs/test-coverage-gap-analysis.md +242 -0
- package/templates/base/docs/testing.md +188 -0
- package/templates/base/index.html +16 -0
- package/templates/base/package.json +115 -0
- package/templates/base/playwright.config.ts +158 -0
- package/templates/base/pnpm-lock.yaml +8175 -0
- package/templates/base/scripts/capture-prod-session.ts +250 -0
- package/templates/base/scripts/generate-openapi.ts +23 -0
- package/templates/base/scripts/init.sh +121 -0
- package/templates/base/src/client/__tests__/button.test.tsx +30 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-display-dashboard-stats-cards-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-display-quick-action-cards-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-display-recent-activity-section-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-display-user-first-name-in-welcome-message-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-display-user-information-in-sidebar-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-render-dashboard-when-authenticated-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-authenticated-should-show-navigation-sidebar-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/dashboard.test.tsx/Dashboard-Page-when-unauthenticated-should-redirect-to-login-when-not-authenticated-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-display-Google-OAuth-login-button-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-have-a-link-back-to-home-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-render-login-content-without-waiting-for-authentication-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-render-login-page-at--login-route-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-show-Terms-of-Service-and-Privacy-Policy-links-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/login.test.tsx/Login-Page-should-trigger-OAuth-flow-when-clicking-login-button-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-404-handling-should-display-404-text-on-not-found-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-404-handling-should-have-navigation-options-on-404-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-404-handling-should-render-404-page-for-unknown-routes-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-authenticated-navigation-should-navigate-from-dashboard-to-account-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-authenticated-navigation-should-navigate-from-dashboard-to-integrations-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-authenticated-navigation-should-navigate-from-dashboard-to-settings-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-authenticated-navigation-should-navigate-from-dashboard-to-team-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-home-page-navigation-should-display-navigation-links-on-home-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-home-page-navigation-should-have-correct-link-destinations-on-home-page-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-unauthenticated-navigation-should-allow-access-to-home-page-without-authentication-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-unauthenticated-navigation-should-allow-access-to-login-page-without-authentication-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-unauthenticated-navigation-should-redirect-unauthenticated-users-from-dashboard-to-login-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-unauthenticated-navigation-should-redirect-unauthenticated-users-from-settings-to-login-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/__screenshots__/navigation.test.tsx/Navigation-unauthenticated-navigation-should-redirect-unauthenticated-users-from-team-to-login-1.png +0 -0
- package/templates/base/src/client/__tests__/routes/authenticated-layout.test.tsx +252 -0
- package/templates/base/src/client/__tests__/routes/dashboard.test.tsx +136 -0
- package/templates/base/src/client/__tests__/routes/error-components.test.tsx +186 -0
- package/templates/base/src/client/__tests__/routes/login.test.tsx +112 -0
- package/templates/base/src/client/__tests__/routes/navigation.test.tsx +272 -0
- package/templates/base/src/client/__tests__/routes/root-layout.test.tsx +65 -0
- package/templates/base/src/client/__tests__/setup-browser.ts +15 -0
- package/templates/base/src/client/__tests__/setup.ts +32 -0
- package/templates/base/src/client/__tests__/test-utils.tsx +135 -0
- package/templates/base/src/client/api/.gitkeep +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-can-be-collapsed-by-default-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-expands-when-collapsed-and-expand-button-is-clicked-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-handles-logout-button-click-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-handles-navigation-clicks-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-hides-navigation-labels-when-collapsed-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-highlights-active-route-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-renders-sidebar-navigation-items-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-shows-keyboard-shortcut-hint-when-expanded-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-shows-user-info-when-authenticated-1.png +0 -0
- package/templates/base/src/client/components/__tests__/__screenshots__/sidebar.test.tsx/Sidebar-shows-user-initials-in-avatar-fallback-1.png +0 -0
- package/templates/base/src/client/components/__tests__/error-boundary.test.tsx +97 -0
- package/templates/base/src/client/components/__tests__/sidebar.test.tsx +281 -0
- package/templates/base/src/client/components/error-boundary.tsx +68 -0
- package/templates/base/src/client/components/icons.tsx +106 -0
- package/templates/base/src/client/components/layout/.gitkeep +0 -0
- package/templates/base/src/client/components/sidebar.tsx +267 -0
- package/templates/base/src/client/components/ui/.gitkeep +0 -0
- package/templates/base/src/client/components/ui/__tests__/avatar.test.tsx +308 -0
- package/templates/base/src/client/components/ui/__tests__/card.test.tsx +214 -0
- package/templates/base/src/client/components/ui/__tests__/dialog.test.tsx +297 -0
- package/templates/base/src/client/components/ui/__tests__/error-fallback.test.tsx +145 -0
- package/templates/base/src/client/components/ui/__tests__/input.test.tsx +98 -0
- package/templates/base/src/client/components/ui/__tests__/loading-skeleton.test.tsx +139 -0
- package/templates/base/src/client/components/ui/__tests__/skeleton.test.tsx +44 -0
- package/templates/base/src/client/components/ui/__tests__/sonner.test.tsx +28 -0
- package/templates/base/src/client/components/ui/__tests__/tabs.test.tsx +233 -0
- package/templates/base/src/client/components/ui/avatar.tsx +101 -0
- package/templates/base/src/client/components/ui/badge.tsx +46 -0
- package/templates/base/src/client/components/ui/button.tsx +72 -0
- package/templates/base/src/client/components/ui/card.tsx +86 -0
- package/templates/base/src/client/components/ui/dialog.tsx +140 -0
- package/templates/base/src/client/components/ui/error-fallback.tsx +179 -0
- package/templates/base/src/client/components/ui/form.tsx +172 -0
- package/templates/base/src/client/components/ui/input.tsx +24 -0
- package/templates/base/src/client/components/ui/label.tsx +22 -0
- package/templates/base/src/client/components/ui/loading-skeleton.tsx +154 -0
- package/templates/base/src/client/components/ui/separator.tsx +33 -0
- package/templates/base/src/client/components/ui/skeleton.tsx +16 -0
- package/templates/base/src/client/components/ui/sonner.tsx +29 -0
- package/templates/base/src/client/components/ui/tabs.tsx +121 -0
- package/templates/base/src/client/hooks/.gitkeep +0 -0
- package/templates/base/src/client/hooks/__tests__/use-auth.test.tsx +306 -0
- package/templates/base/src/client/hooks/__tests__/use-theme.test.tsx +172 -0
- package/templates/base/src/client/hooks/use-auth.ts +53 -0
- package/templates/base/src/client/hooks/use-theme.tsx +78 -0
- package/templates/base/src/client/index.css +881 -0
- package/templates/base/src/client/lib/query-client.ts +11 -0
- package/templates/base/src/client/lib/utils.ts +7 -0
- package/templates/base/src/client/main.tsx +26 -0
- package/templates/base/src/client/routeTree.gen.ts +258 -0
- package/templates/base/src/client/router.ts +15 -0
- package/templates/base/src/client/routes/$.tsx +77 -0
- package/templates/base/src/client/routes/.gitkeep +0 -0
- package/templates/base/src/client/routes/__root.tsx +34 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-display-accept-invitation-button-1.png +0 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-display-decline-button-linking-to-homepage-1.png +0 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-display-invitation-details--email--workspace--role--1.png +0 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-have-a-logo-link-to-homepage-1.png +0 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-render-invitation-page-with-inviter-name-and-workspace-1.png +0 -0
- package/templates/base/src/client/routes/__tests__/__screenshots__/invite.test.tsx/Invite-Token-Page-pending-invitation-state-should-show-terms-of-service-and-privacy-policy-links-1.png +0 -0
- package/templates/base/src/client/routes/__tests__/invite.test.tsx +138 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-render-Active-Sessions-section-with-session-cards-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-render-page-with-correct-title--Account--1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-show-API-Access-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-show-Connected-Accounts-section-with-Google-connected-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-show-Danger-Zone-section-with-delete-button-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/account.test.tsx/Account-Page-should-show-Security-section-with-Two-Factor-Authentication-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-API-documentation-section-should-display-API-documentation-link-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-Create-Webhook-Dialog-should-have-Add-Webhook-trigger-button-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-category-filters-should-display-all-category-buttons-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-integration-cards-should-display-all-integration-cards-with-names-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-integration-cards-should-display-category-badges-on-cards-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-integration-cards-should-show-Configure-button-for-connected-integrations-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-integration-cards-should-show-Connect-button-for-not-connected-integrations-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-integration-cards-should-show-Connected-badge-for-connected-integrations-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-display-Available-Integrations-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-display-Webhooks-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-display-connected-count-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-display-page-description-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-display-search-input-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-page-rendering-should-render-with-correct-title--Integrations--1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-search-functionality-should-filter-integrations-based-on-search-query-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-search-functionality-should-search-by-description-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-search-functionality-should-show-no-results-message-when-search-has-no-matches-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-webhooks-section-should-display-existing-webhook-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-webhooks-section-should-display-webhook-events-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-webhooks-section-should-display-webhook-last-delivery-info-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-webhooks-section-should-display-webhook-success-status-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/integrations.test.tsx/Integrations-Page-webhooks-section-should-have-Add-Webhook-button-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Account-tab-should-display-connected-accounts-section-with-Google-provider-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Account-tab-should-display-sessions-and-danger-zone-sections-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Notifications-tab-should-display-all-notification-toggle-options-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Notifications-tab-should-display-email-notifications-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Notifications-tab-should-display-toggle-switches-for-notification-options-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Notifications-tab-should-have-toggles-checked-by-default-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display--Save-Changes--button-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display-personal-information-form-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display-profile-picture-section-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display-user-email-in-disabled-email-input-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display-user-initials-in-avatar-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-Profile-tab-should-display-user-name-in-the-name-input-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-page-rendering-should-display-all-three-tabs-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-page-rendering-should-display-page-description-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-page-rendering-should-render-with-correct-title--Settings--1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-tab-navigation-should-show-Profile-tab-as-default-active-tab-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-tab-navigation-should-switch-to-Account-tab-when-clicked-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/settings.test.tsx/Settings-Page-tab-navigation-should-switch-to-Notifications-tab-when-clicked-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-display-Active-Members-section-with-member-count-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-display-Pending-Invitations-section-with-invitation-details-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-have-invite-member-button-that-can-be-clicked-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-render-page-with-correct-title-and-description-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-render-search-input-that-filters-team-members-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/__screenshots__/team.test.tsx/Team-Page-should-show-current-user-with---you---indicator-and-role-badge-1.png +0 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/account.test.tsx +324 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/integrations.test.tsx +520 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/settings.test.tsx +414 -0
- package/templates/base/src/client/routes/_authenticated/__tests__/team.test.tsx +374 -0
- package/templates/base/src/client/routes/_authenticated/account.tsx +416 -0
- package/templates/base/src/client/routes/_authenticated/dashboard.tsx +151 -0
- package/templates/base/src/client/routes/_authenticated/integrations.tsx +553 -0
- package/templates/base/src/client/routes/_authenticated/settings.tsx +310 -0
- package/templates/base/src/client/routes/_authenticated/team.tsx +395 -0
- package/templates/base/src/client/routes/_authenticated.tsx +69 -0
- package/templates/base/src/client/routes/index.tsx +155 -0
- package/templates/base/src/client/routes/invite.$token.tsx +191 -0
- package/templates/base/src/client/routes/login.tsx +92 -0
- package/templates/base/src/server/__tests__/fixtures.ts +461 -0
- package/templates/base/src/server/__tests__/mocks/__tests__/db.test.ts +239 -0
- package/templates/base/src/server/__tests__/mocks/__tests__/kv.test.ts +293 -0
- package/templates/base/src/server/__tests__/mocks/__tests__/r2.test.ts +363 -0
- package/templates/base/src/server/__tests__/mocks/db.ts +186 -0
- package/templates/base/src/server/__tests__/mocks/index.ts +33 -0
- package/templates/base/src/server/__tests__/mocks/kv.ts +286 -0
- package/templates/base/src/server/__tests__/mocks/r2.ts +397 -0
- package/templates/base/src/server/__tests__/setup.ts +281 -0
- package/templates/base/src/server/auth/__tests__/guards.test.ts +162 -0
- package/templates/base/src/server/auth/guards.ts +92 -0
- package/templates/base/src/server/auth/permissions.test.ts +45 -0
- package/templates/base/src/server/auth/permissions.ts +139 -0
- package/templates/base/src/server/auth/roles.test.ts +169 -0
- package/templates/base/src/server/auth/roles.ts +141 -0
- package/templates/base/src/server/db/client.ts +12 -0
- package/templates/base/src/server/db/schema/accounts.ts +20 -0
- package/templates/base/src/server/db/schema/audit-logs.ts +26 -0
- package/templates/base/src/server/db/schema/index.ts +7 -0
- package/templates/base/src/server/db/schema/invitations.ts +30 -0
- package/templates/base/src/server/db/schema/refresh-tokens.ts +22 -0
- package/templates/base/src/server/db/schema/user-accounts.ts +25 -0
- package/templates/base/src/server/db/schema/users.ts +33 -0
- package/templates/base/src/server/db/seed.ts +267 -0
- package/templates/base/src/server/env.test.ts +84 -0
- package/templates/base/src/server/env.ts +78 -0
- package/templates/base/src/server/index.ts +82 -0
- package/templates/base/src/server/lib/audit.ts +73 -0
- package/templates/base/src/server/lib/audited-db.test.ts +107 -0
- package/templates/base/src/server/lib/audited-db.ts +154 -0
- package/templates/base/src/server/lib/email.test.ts +116 -0
- package/templates/base/src/server/lib/email.ts +82 -0
- package/templates/base/src/server/lib/errors.test.ts +49 -0
- package/templates/base/src/server/lib/errors.ts +64 -0
- package/templates/base/src/server/lib/oauth.test.ts +238 -0
- package/templates/base/src/server/lib/oauth.ts +113 -0
- package/templates/base/src/server/lib/pagination.test.ts +52 -0
- package/templates/base/src/server/lib/pagination.ts +32 -0
- package/templates/base/src/server/lib/password.test.ts +151 -0
- package/templates/base/src/server/lib/password.ts +151 -0
- package/templates/base/src/server/lib/providers.test.ts +105 -0
- package/templates/base/src/server/lib/providers.ts +62 -0
- package/templates/base/src/server/lib/r2-storage.test.ts +202 -0
- package/templates/base/src/server/lib/r2-storage.ts +107 -0
- package/templates/base/src/server/lib/schema-helpers.ts +16 -0
- package/templates/base/src/server/lib/session.test.ts +758 -0
- package/templates/base/src/server/lib/session.ts +267 -0
- package/templates/base/src/server/lib/tokens.test.ts +208 -0
- package/templates/base/src/server/lib/tokens.ts +65 -0
- package/templates/base/src/server/lib/transaction.test.ts +45 -0
- package/templates/base/src/server/lib/transaction.ts +24 -0
- package/templates/base/src/server/middleware/account.test.ts +201 -0
- package/templates/base/src/server/middleware/account.ts +66 -0
- package/templates/base/src/server/middleware/auth.test.ts +345 -0
- package/templates/base/src/server/middleware/auth.ts +146 -0
- package/templates/base/src/server/middleware/cors.test.ts +88 -0
- package/templates/base/src/server/middleware/cors.ts +26 -0
- package/templates/base/src/server/middleware/error-handler.test.ts +69 -0
- package/templates/base/src/server/middleware/error-handler.ts +43 -0
- package/templates/base/src/server/middleware/index.ts +8 -0
- package/templates/base/src/server/middleware/rate-limit.test.ts +472 -0
- package/templates/base/src/server/middleware/rate-limit.ts +294 -0
- package/templates/base/src/server/middleware/request-context.test.ts +175 -0
- package/templates/base/src/server/middleware/request-context.ts +28 -0
- package/templates/base/src/server/middleware/request-logger.test.ts +92 -0
- package/templates/base/src/server/middleware/request-logger.ts +50 -0
- package/templates/base/src/server/routes/accounts/__tests__/handlers.test.ts +460 -0
- package/templates/base/src/server/routes/accounts/handlers.ts +179 -0
- package/templates/base/src/server/routes/accounts/index.ts +55 -0
- package/templates/base/src/server/routes/accounts/routes.ts +205 -0
- package/templates/base/src/server/routes/accounts/schemas.ts +31 -0
- package/templates/base/src/server/routes/api.ts +37 -0
- package/templates/base/src/server/routes/audits/__tests__/handlers.test.ts +349 -0
- package/templates/base/src/server/routes/audits/handlers.ts +37 -0
- package/templates/base/src/server/routes/audits/index.ts +14 -0
- package/templates/base/src/server/routes/audits/routes.ts +29 -0
- package/templates/base/src/server/routes/audits/schemas.ts +43 -0
- package/templates/base/src/server/routes/auth/__tests__/handlers.test.ts +381 -0
- package/templates/base/src/server/routes/auth/handlers.ts +222 -0
- package/templates/base/src/server/routes/auth/index.ts +37 -0
- package/templates/base/src/server/routes/auth/routes.ts +136 -0
- package/templates/base/src/server/routes/auth/schemas.ts +48 -0
- package/templates/base/src/server/routes/auth/test-login.ts +156 -0
- package/templates/base/src/server/routes/health/__tests__/handlers.test.ts +237 -0
- package/templates/base/src/server/routes/health/handlers.ts +83 -0
- package/templates/base/src/server/routes/health/index.ts +13 -0
- package/templates/base/src/server/routes/health/routes.ts +90 -0
- package/templates/base/src/server/routes/index.ts +53 -0
- package/templates/base/src/server/routes/invitations/__tests__/handlers.test.ts +473 -0
- package/templates/base/src/server/routes/invitations/handlers.ts +71 -0
- package/templates/base/src/server/routes/invitations/index.ts +25 -0
- package/templates/base/src/server/routes/invitations/routes.ts +69 -0
- package/templates/base/src/server/routes/invitations/schemas.ts +39 -0
- package/templates/base/src/server/routes/openapi.ts +14 -0
- package/templates/base/src/server/routes/schemas.ts +53 -0
- package/templates/base/src/server/routes/storage/__tests__/handlers.test.ts +408 -0
- package/templates/base/src/server/routes/storage/handlers.ts +100 -0
- package/templates/base/src/server/routes/storage/index.ts +42 -0
- package/templates/base/src/server/routes/storage/routes.ts +91 -0
- package/templates/base/src/server/routes/storage/schemas.ts +56 -0
- package/templates/base/src/server/routes/users/__tests__/handlers.test.ts +526 -0
- package/templates/base/src/server/routes/users/handlers.ts +228 -0
- package/templates/base/src/server/routes/users/index.ts +67 -0
- package/templates/base/src/server/routes/users/routes.ts +265 -0
- package/templates/base/src/server/routes/users/schemas.ts +67 -0
- package/templates/base/src/server/services/__tests__/accounts.test.ts +764 -0
- package/templates/base/src/server/services/__tests__/audits.test.ts +235 -0
- package/templates/base/src/server/services/__tests__/auth.test.ts +765 -0
- package/templates/base/src/server/services/__tests__/invitations.test.ts +704 -0
- package/templates/base/src/server/services/__tests__/users.test.ts +755 -0
- package/templates/base/src/server/services/accounts.ts +269 -0
- package/templates/base/src/server/services/audits.ts +82 -0
- package/templates/base/src/server/services/auth.ts +225 -0
- package/templates/base/src/server/services/index.ts +6 -0
- package/templates/base/src/server/services/invitations.ts +306 -0
- package/templates/base/src/server/services/users.ts +350 -0
- package/templates/base/src/server/types/auth.ts +36 -0
- package/templates/base/src/server/types/index.ts +117 -0
- package/templates/base/src/shared/schemas/.gitkeep +0 -0
- package/templates/base/src/shared/schemas/__tests__/schemas.test.ts +547 -0
- package/templates/base/src/shared/schemas/account.ts +15 -0
- package/templates/base/src/shared/schemas/index.ts +6 -0
- package/templates/base/src/shared/schemas/invitation.ts +9 -0
- package/templates/base/src/shared/schemas/profile.ts +10 -0
- package/templates/base/src/shared/schemas/user.ts +16 -0
- package/templates/base/src/shared/schemas/webhook.ts +12 -0
- package/templates/base/src/shared/types/.gitkeep +0 -0
- package/templates/base/src/shared/types/account.ts +12 -0
- package/templates/base/src/shared/types/api.ts +1399 -0
- package/templates/base/src/shared/types/auth.ts +24 -0
- package/templates/base/src/shared/types/index.ts +5 -0
- package/templates/base/src/shared/types/user.ts +31 -0
- package/templates/base/src/test/vitest-zod-matcher.ts +37 -0
- package/templates/base/src/test/vitest.d.ts +19 -0
- package/templates/base/tests/e2e/README.md +141 -0
- package/templates/base/tests/e2e/a11y/accessibility.spec.ts +925 -0
- package/templates/base/tests/e2e/a11y/keyboard-navigation.spec.ts +610 -0
- package/templates/base/tests/e2e/api/accounts.spec.ts +148 -0
- package/templates/base/tests/e2e/api/audit-logs.spec.ts +130 -0
- package/templates/base/tests/e2e/api/authenticated-api.spec.ts +311 -0
- package/templates/base/tests/e2e/api/storage.spec.ts +109 -0
- package/templates/base/tests/e2e/auth-flows.unauth.spec.ts +117 -0
- package/templates/base/tests/e2e/auth-logout.unauth.spec.ts +103 -0
- package/templates/base/tests/e2e/auth.setup.ts +115 -0
- package/templates/base/tests/e2e/auth.spec.ts +146 -0
- package/templates/base/tests/e2e/compatibility/cross-browser.spec.ts +152 -0
- package/templates/base/tests/e2e/compatibility/cross-browser.spec.ts-snapshots/login-chromium-chromium-darwin.png +0 -0
- package/templates/base/tests/e2e/crud/account.spec.ts +356 -0
- package/templates/base/tests/e2e/crud/integrations.spec.ts +419 -0
- package/templates/base/tests/e2e/crud/team.spec.ts +287 -0
- package/templates/base/tests/e2e/crud/users.spec.ts +239 -0
- package/templates/base/tests/e2e/errors/error-boundary.spec.ts +428 -0
- package/templates/base/tests/e2e/errors/error-handling.spec.ts +47 -0
- package/templates/base/tests/e2e/errors/error-handling.unauth.spec.ts +205 -0
- package/templates/base/tests/e2e/fixtures.ts +266 -0
- package/templates/base/tests/e2e/forms/validation.spec.ts +569 -0
- package/templates/base/tests/e2e/invitations/invite-flow.unauth.spec.ts +204 -0
- package/templates/base/tests/e2e/journeys/account-lifecycle.spec.ts +314 -0
- package/templates/base/tests/e2e/journeys/audit-investigation.spec.ts +299 -0
- package/templates/base/tests/e2e/journeys/auth-onboarding.spec.ts +232 -0
- package/templates/base/tests/e2e/journeys/critical-flows.spec.ts +281 -0
- package/templates/base/tests/e2e/journeys/error-recovery.spec.ts +354 -0
- package/templates/base/tests/e2e/journeys/file-management.spec.ts +307 -0
- package/templates/base/tests/e2e/journeys/integrations.spec.ts +372 -0
- package/templates/base/tests/e2e/journeys/multi-account.spec.ts +317 -0
- package/templates/base/tests/e2e/journeys/rbac-enforcement.spec.ts +389 -0
- package/templates/base/tests/e2e/journeys/settings-profile.spec.ts +400 -0
- package/templates/base/tests/e2e/journeys/team-collaboration.spec.ts +410 -0
- package/templates/base/tests/e2e/mobile/responsive.spec.ts +178 -0
- package/templates/base/tests/e2e/navigation/routing.spec.ts +371 -0
- package/templates/base/tests/e2e/navigation/sidebar.spec.ts +425 -0
- package/templates/base/tests/e2e/pages/ui-features.spec.ts +393 -0
- package/templates/base/tests/e2e/performance/baselines.spec.ts +162 -0
- package/templates/base/tests/e2e/performance/benchmarks.spec.ts +371 -0
- package/templates/base/tests/e2e/smoke.unauth.spec.ts +196 -0
- package/templates/base/tests/e2e/visual/components.spec.ts +650 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/confirmation-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dark-mode-background-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dark-mode-card-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dark-mode-sidebar-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dashboard-card-single-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dialog-content-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/dialog-with-backdrop-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/empty-search-results-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/input-default-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/input-focus-ring-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/primary-button-focus-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/primary-button-hover-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/primary-button-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/sidebar-active-nav-item-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/sidebar-collapsed-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/components.spec.ts-snapshots/sidebar-navigation-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts +192 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/account-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/create-webhook-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/dashboard-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/delete-account-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/integrations-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/invite-member-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/login-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/settings-account-tab-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/settings-profile-tab-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/sidebar-navigation-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/core-components.spec.ts-snapshots/team-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts +230 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/404-page-chromium-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/404-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/account-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/login-page-chromium-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/login-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/settings-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/team-invite-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/team-page-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/screenshots.spec.ts-snapshots/webhook-create-dialog-visual-darwin.png +0 -0
- package/templates/base/tests/e2e/visual/theme-colors.spec.ts +293 -0
- package/templates/base/tests/e2e/visual/ui-components.spec.ts +502 -0
- package/templates/base/tests/integration/accounts/crud.test.ts +1402 -0
- package/templates/base/tests/integration/audits/list.test.ts +1133 -0
- package/templates/base/tests/integration/auth/auth-service.test.ts +415 -0
- package/templates/base/tests/integration/auth/invitation-token.test.ts +529 -0
- package/templates/base/tests/integration/auth/logout.test.ts +524 -0
- package/templates/base/tests/integration/auth/oauth.test.ts +768 -0
- package/templates/base/tests/integration/auth/refresh-token.test.ts +364 -0
- package/templates/base/tests/integration/auth/session-expiry.test.ts +569 -0
- package/templates/base/tests/integration/auth/session.test.ts +520 -0
- package/templates/base/tests/integration/auth/super-admin.test.ts +451 -0
- package/templates/base/tests/integration/authorization/analytics-role.test.ts +1026 -0
- package/templates/base/tests/integration/authorization/billing-role.test.ts +776 -0
- package/templates/base/tests/integration/authorization/guards-roles.test.ts +539 -0
- package/templates/base/tests/integration/authorization/multi-tenancy.test.ts +1112 -0
- package/templates/base/tests/integration/authorization/role-hierarchy.test.ts +931 -0
- package/templates/base/tests/integration/authorization/roles.test.ts +1347 -0
- package/templates/base/tests/integration/config/production-behavior.test.ts +536 -0
- package/templates/base/tests/integration/db/constraints.test.ts +695 -0
- package/templates/base/tests/integration/fixtures/accounts.ts +136 -0
- package/templates/base/tests/integration/fixtures/index.ts +232 -0
- package/templates/base/tests/integration/fixtures/invitations.ts +195 -0
- package/templates/base/tests/integration/fixtures/users.ts +144 -0
- package/templates/base/tests/integration/health/health.test.ts +351 -0
- package/templates/base/tests/integration/invitations/crud.test.ts +1457 -0
- package/templates/base/tests/integration/invitations/email.test.ts +506 -0
- package/templates/base/tests/integration/lib/email.test.ts +174 -0
- package/templates/base/tests/integration/lib/oauth.test.ts +368 -0
- package/templates/base/tests/integration/lib/password.test.ts +192 -0
- package/templates/base/tests/integration/lib/schema-helpers.test.ts +129 -0
- package/templates/base/tests/integration/lib/tokens.test.ts +304 -0
- package/templates/base/tests/integration/middleware/auth.test.ts +499 -0
- package/templates/base/tests/integration/middleware/cors.test.ts +334 -0
- package/templates/base/tests/integration/middleware/request-context.test.ts +156 -0
- package/templates/base/tests/integration/middleware/request-logger.test.ts +313 -0
- package/templates/base/tests/integration/performance/response-times.test.ts +509 -0
- package/templates/base/tests/integration/security/cookie-security.test.ts +567 -0
- package/templates/base/tests/integration/security/csrf-protection.test.ts +542 -0
- package/templates/base/tests/integration/security/jwt-validation.test.ts +209 -0
- package/templates/base/tests/integration/security/log-sanitization.test.ts +658 -0
- package/templates/base/tests/integration/security/rate-limiting.test.ts +1251 -0
- package/templates/base/tests/integration/security/sql-injection.test.ts +663 -0
- package/templates/base/tests/integration/security/token-hashing.test.ts +371 -0
- package/templates/base/tests/integration/security/xss-prevention.test.ts +541 -0
- package/templates/base/tests/integration/setup.ts +834 -0
- package/templates/base/tests/integration/smoke.test.ts +288 -0
- package/templates/base/tests/integration/storage/upload.test.ts +1162 -0
- package/templates/base/tests/integration/storage/validation.test.ts +746 -0
- package/templates/base/tests/integration/users/crud.test.ts +1297 -0
- package/templates/base/tests/integration/users/list.test.ts +698 -0
- package/templates/base/tests/integration/vitest.config.ts +80 -0
- package/templates/base/tsconfig.app.json +18 -0
- package/templates/base/tsconfig.json +39 -0
- package/templates/base/tsconfig.node.json +16 -0
- package/templates/base/tsconfig.server.json +26 -0
- package/templates/base/tsconfig.tsbuildinfo +1 -0
- package/templates/base/vite.config.ts +46 -0
- package/templates/base/vitest.config.browser.ts +47 -0
- package/templates/base/vitest.config.frontend.ts +47 -0
- package/templates/base/vitest.config.ts +82 -0
- package/templates/base/vitest.workspace.ts +22 -0
- package/templates/modules/audit-logs/.gitkeep +0 -0
- package/templates/modules/billing/.gitkeep +0 -0
- package/templates/modules/invitations/.gitkeep +0 -0
- package/templates/modules/storage/.gitkeep +0 -0
- package/templates/modules/webhooks/.gitkeep +0 -0
- package/templates/providers/auth-email/.gitkeep +0 -0
- package/templates/providers/auth-github/.gitkeep +0 -0
- package/templates/providers/auth-google/.gitkeep +0 -0
- package/templates/providers/email-resend/.gitkeep +0 -0
- package/templates/providers/email-sendgrid/.gitkeep +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Bug Report Template
|
|
2
|
+
|
|
3
|
+
## Template Configuration
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|----------|-------|
|
|
7
|
+
| **Name** | Bug Report |
|
|
8
|
+
| **Labels** | `bug` |
|
|
9
|
+
| **Priority** | 2 (High) or use triage |
|
|
10
|
+
| **Default Status** | Triage |
|
|
11
|
+
|
|
12
|
+
## Description Template
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## Summary
|
|
16
|
+
<!-- Brief description of the bug -->
|
|
17
|
+
|
|
18
|
+
## Environment
|
|
19
|
+
- **Browser/App**:
|
|
20
|
+
- **OS**:
|
|
21
|
+
- **Device**:
|
|
22
|
+
- **User Account**:
|
|
23
|
+
|
|
24
|
+
## Steps to Reproduce
|
|
25
|
+
1.
|
|
26
|
+
2.
|
|
27
|
+
3.
|
|
28
|
+
|
|
29
|
+
## Expected Behavior
|
|
30
|
+
<!-- What should have happened -->
|
|
31
|
+
|
|
32
|
+
## Actual Behavior
|
|
33
|
+
<!-- What actually happened -->
|
|
34
|
+
|
|
35
|
+
## Screenshots/Videos
|
|
36
|
+
<!-- Attach visual evidence if applicable -->
|
|
37
|
+
|
|
38
|
+
## Console Errors
|
|
39
|
+
<!-- Paste any relevant error messages -->
|
|
40
|
+
|
|
41
|
+
## Additional Context
|
|
42
|
+
<!-- Any other relevant information -->
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## CLI Usage
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Create bug report
|
|
49
|
+
npx tsx scripts/issues/create.ts \
|
|
50
|
+
--title "Bug: [Component] - Brief description" \
|
|
51
|
+
--description "## Summary
|
|
52
|
+
Login button does not respond on mobile Safari.
|
|
53
|
+
|
|
54
|
+
## Environment
|
|
55
|
+
- **Browser/App**: Safari 17.2
|
|
56
|
+
- **OS**: iOS 17.1
|
|
57
|
+
- **Device**: iPhone 15 Pro
|
|
58
|
+
|
|
59
|
+
## Steps to Reproduce
|
|
60
|
+
1. Open app on mobile Safari
|
|
61
|
+
2. Navigate to login page
|
|
62
|
+
3. Tap login button
|
|
63
|
+
|
|
64
|
+
## Expected Behavior
|
|
65
|
+
Login form should submit and redirect to dashboard.
|
|
66
|
+
|
|
67
|
+
## Actual Behavior
|
|
68
|
+
Nothing happens when tapping the button.
|
|
69
|
+
|
|
70
|
+
## Console Errors
|
|
71
|
+
\`\`\`
|
|
72
|
+
TypeError: Cannot read property 'submit' of null
|
|
73
|
+
\`\`\`" \
|
|
74
|
+
--priority 2 \
|
|
75
|
+
--json
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Best Practices
|
|
79
|
+
|
|
80
|
+
1. **Title Format**: `Bug: [Component/Feature] - Brief description`
|
|
81
|
+
- `Bug: Cart - Cannot add items on mobile`
|
|
82
|
+
- `Bug: Auth - Session expires unexpectedly`
|
|
83
|
+
|
|
84
|
+
2. **Include Visual Evidence**: Screenshots or screen recordings significantly speed up debugging
|
|
85
|
+
|
|
86
|
+
3. **Capture Console Logs**: JavaScript errors help developers reproduce issues
|
|
87
|
+
|
|
88
|
+
4. **Specify Environment**: Bugs often only appear in specific browsers/devices
|
|
89
|
+
|
|
90
|
+
5. **Be Specific**: "Button doesn't work" → "Login button doesn't respond to tap events on iOS Safari"
|
|
91
|
+
|
|
92
|
+
## Severity Guidelines
|
|
93
|
+
|
|
94
|
+
| Severity | Description | Example |
|
|
95
|
+
|----------|-------------|---------|
|
|
96
|
+
| **Urgent (1)** | App unusable, data loss | Payment processing fails |
|
|
97
|
+
| **High (2)** | Major feature broken | Cannot login |
|
|
98
|
+
| **Medium (3)** | Feature degraded | Slow page load |
|
|
99
|
+
| **Low (4)** | Minor issue | Typo in UI |
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Feature Request Template
|
|
2
|
+
|
|
3
|
+
## Template Configuration
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|----------|-------|
|
|
7
|
+
| **Name** | Feature Request |
|
|
8
|
+
| **Labels** | `enhancement` |
|
|
9
|
+
| **Priority** | 3 (Medium) or use triage |
|
|
10
|
+
| **Default Status** | Backlog |
|
|
11
|
+
|
|
12
|
+
## Description Template
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## Problem Statement
|
|
16
|
+
<!-- What problem does this solve? Who is affected? -->
|
|
17
|
+
|
|
18
|
+
## Proposed Solution
|
|
19
|
+
<!-- Describe the feature you'd like -->
|
|
20
|
+
|
|
21
|
+
## User Stories
|
|
22
|
+
<!-- As a [user type], I want [feature] so that [benefit] -->
|
|
23
|
+
|
|
24
|
+
- As a user, I want to...
|
|
25
|
+
- As an admin, I want to...
|
|
26
|
+
|
|
27
|
+
## Acceptance Criteria
|
|
28
|
+
- [ ] Criterion 1
|
|
29
|
+
- [ ] Criterion 2
|
|
30
|
+
- [ ] Criterion 3
|
|
31
|
+
|
|
32
|
+
## Design/Mockups
|
|
33
|
+
<!-- Link to designs or describe UI expectations -->
|
|
34
|
+
|
|
35
|
+
## Technical Considerations
|
|
36
|
+
<!-- Any known technical constraints or dependencies -->
|
|
37
|
+
|
|
38
|
+
## Alternatives Considered
|
|
39
|
+
<!-- What other solutions were explored? -->
|
|
40
|
+
|
|
41
|
+
## Additional Context
|
|
42
|
+
<!-- Business value, customer requests, competitive analysis -->
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## CLI Usage
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Create feature request
|
|
49
|
+
npx tsx scripts/issues/create.ts \
|
|
50
|
+
--title "Feature: Add dark mode toggle" \
|
|
51
|
+
--description "## Problem Statement
|
|
52
|
+
Users have requested dark mode support, especially for nighttime usage. Currently, the app only supports light theme which causes eye strain in low-light environments.
|
|
53
|
+
|
|
54
|
+
## Proposed Solution
|
|
55
|
+
Add a dark mode toggle in Settings that switches the app theme. The preference should persist across sessions.
|
|
56
|
+
|
|
57
|
+
## User Stories
|
|
58
|
+
- As a user, I want to switch to dark mode so that I can use the app comfortably at night
|
|
59
|
+
- As a user, I want my theme preference saved so that I don't have to toggle it each session
|
|
60
|
+
|
|
61
|
+
## Acceptance Criteria
|
|
62
|
+
- [ ] Toggle switch in Settings page
|
|
63
|
+
- [ ] Dark theme applied to all components
|
|
64
|
+
- [ ] Preference persisted in localStorage
|
|
65
|
+
- [ ] Respects system preference by default
|
|
66
|
+
- [ ] Smooth transition animation
|
|
67
|
+
|
|
68
|
+
## Design/Mockups
|
|
69
|
+
https://www.figma.com/file/abc123
|
|
70
|
+
|
|
71
|
+
## Technical Considerations
|
|
72
|
+
- Use CSS variables for theme colors
|
|
73
|
+
- Consider prefers-color-scheme media query
|
|
74
|
+
- Test with all existing components
|
|
75
|
+
|
|
76
|
+
## Alternatives Considered
|
|
77
|
+
- Auto-detect only (no manual toggle) - rejected: users want control
|
|
78
|
+
- Scheduled dark mode - future enhancement" \
|
|
79
|
+
--priority 3 \
|
|
80
|
+
--json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Best Practices
|
|
84
|
+
|
|
85
|
+
1. **Title Format**: `Feature: Brief description`
|
|
86
|
+
- `Feature: Add export to CSV functionality`
|
|
87
|
+
- `Feature: Enable two-factor authentication`
|
|
88
|
+
|
|
89
|
+
2. **Focus on the Problem**: Explain the "why" before the "what"
|
|
90
|
+
|
|
91
|
+
3. **Include User Stories**: Helps team understand user perspective
|
|
92
|
+
|
|
93
|
+
4. **Define Done**: Clear acceptance criteria prevent scope creep
|
|
94
|
+
|
|
95
|
+
5. **Link Designs**: Visual references accelerate development
|
|
96
|
+
|
|
97
|
+
6. **Mention Alternatives**: Shows you've thought through options
|
|
98
|
+
|
|
99
|
+
## Priority Guidelines
|
|
100
|
+
|
|
101
|
+
| Priority | Criteria |
|
|
102
|
+
|----------|----------|
|
|
103
|
+
| **Urgent (1)** | Critical for launch, blocking revenue |
|
|
104
|
+
| **High (2)** | High customer demand, competitive feature |
|
|
105
|
+
| **Medium (3)** | Nice to have, improves UX |
|
|
106
|
+
| **Low (4)** | Future consideration, minor enhancement |
|
|
107
|
+
|
|
108
|
+
## Linking Related Issues
|
|
109
|
+
|
|
110
|
+
Reference related issues in the description:
|
|
111
|
+
```markdown
|
|
112
|
+
## Related Issues
|
|
113
|
+
- Blocked by: https://linear.app/workspace/issue/AA-100
|
|
114
|
+
- Related: https://linear.app/workspace/issue/AA-101
|
|
115
|
+
- Parent epic: https://linear.app/workspace/issue/AA-50
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Linear will automatically convert these URLs to clickable issue links.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Security Issue Template
|
|
2
|
+
|
|
3
|
+
## Template Configuration
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|----------|-------|
|
|
7
|
+
| **Name** | Security Issue |
|
|
8
|
+
| **Labels** | `security`, `vulnerability` |
|
|
9
|
+
| **Priority** | 1 (Urgent) or 2 (High) |
|
|
10
|
+
| **Default Status** | Triage |
|
|
11
|
+
|
|
12
|
+
## Description Template
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## Vulnerability Summary
|
|
16
|
+
<!-- Brief description of the security issue -->
|
|
17
|
+
|
|
18
|
+
## Severity
|
|
19
|
+
<!-- Critical / High / Medium / Low -->
|
|
20
|
+
|
|
21
|
+
## CVSS Score (if applicable)
|
|
22
|
+
<!-- e.g., 7.5 (High) -->
|
|
23
|
+
|
|
24
|
+
## Affected Components
|
|
25
|
+
<!-- Which systems/services are affected? -->
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Attack Vector
|
|
31
|
+
<!-- How could this be exploited? -->
|
|
32
|
+
|
|
33
|
+
## Impact
|
|
34
|
+
<!-- What's the potential damage? -->
|
|
35
|
+
|
|
36
|
+
- **Confidentiality**:
|
|
37
|
+
- **Integrity**:
|
|
38
|
+
- **Availability**:
|
|
39
|
+
|
|
40
|
+
## Steps to Reproduce
|
|
41
|
+
<!-- How to verify the vulnerability exists -->
|
|
42
|
+
|
|
43
|
+
1.
|
|
44
|
+
2.
|
|
45
|
+
3.
|
|
46
|
+
|
|
47
|
+
## Proof of Concept
|
|
48
|
+
<!-- Code or demonstration if safe to share -->
|
|
49
|
+
|
|
50
|
+
## Recommended Fix
|
|
51
|
+
<!-- Proposed remediation -->
|
|
52
|
+
|
|
53
|
+
## References
|
|
54
|
+
<!-- CVE IDs, security advisories, documentation -->
|
|
55
|
+
|
|
56
|
+
-
|
|
57
|
+
|
|
58
|
+
## Discovery
|
|
59
|
+
- **Discovered by**:
|
|
60
|
+
- **Discovered date**:
|
|
61
|
+
- **Disclosure deadline**:
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## CLI Usage
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Create security issue (CONFIDENTIAL - be careful with details)
|
|
68
|
+
npx tsx scripts/issues/create.ts \
|
|
69
|
+
--title "Security: SQL Injection in search endpoint" \
|
|
70
|
+
--description "## Vulnerability Summary
|
|
71
|
+
SQL injection vulnerability in the /api/search endpoint allows unauthorized database access.
|
|
72
|
+
|
|
73
|
+
## Severity
|
|
74
|
+
High
|
|
75
|
+
|
|
76
|
+
## CVSS Score
|
|
77
|
+
8.6 (High)
|
|
78
|
+
|
|
79
|
+
## Affected Components
|
|
80
|
+
- \`/api/search\` endpoint
|
|
81
|
+
- \`src/services/search.ts\`
|
|
82
|
+
|
|
83
|
+
## Attack Vector
|
|
84
|
+
User-supplied search query is concatenated directly into SQL without parameterization.
|
|
85
|
+
|
|
86
|
+
## Impact
|
|
87
|
+
- **Confidentiality**: High - Attacker can read any database records
|
|
88
|
+
- **Integrity**: High - Attacker can modify database records
|
|
89
|
+
- **Availability**: Medium - Potential for data deletion
|
|
90
|
+
|
|
91
|
+
## Steps to Reproduce
|
|
92
|
+
1. Navigate to search page
|
|
93
|
+
2. Enter: \`'; DROP TABLE users; --\`
|
|
94
|
+
3. Observe SQL error in response
|
|
95
|
+
|
|
96
|
+
## Recommended Fix
|
|
97
|
+
Use parameterized queries:
|
|
98
|
+
\`\`\`typescript
|
|
99
|
+
// Before (vulnerable)
|
|
100
|
+
const query = \\\`SELECT * FROM items WHERE name = '\${searchTerm}'\\\`;
|
|
101
|
+
|
|
102
|
+
// After (safe)
|
|
103
|
+
const query = 'SELECT * FROM items WHERE name = $1';
|
|
104
|
+
const result = await db.query(query, [searchTerm]);
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
## References
|
|
108
|
+
- OWASP SQL Injection: https://owasp.org/www-community/attacks/SQL_Injection
|
|
109
|
+
- CWE-89: https://cwe.mitre.org/data/definitions/89.html
|
|
110
|
+
|
|
111
|
+
## Discovery
|
|
112
|
+
- **Discovered by**: Security audit
|
|
113
|
+
- **Discovered date**: 2025-01-15
|
|
114
|
+
- **Disclosure deadline**: 2025-01-22" \
|
|
115
|
+
--priority 1 \
|
|
116
|
+
--json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Best Practices
|
|
120
|
+
|
|
121
|
+
1. **Title Format**: `Security: Brief description (no exploit details)`
|
|
122
|
+
- `Security: Authentication bypass in admin panel`
|
|
123
|
+
- `Security: XSS vulnerability in comments`
|
|
124
|
+
|
|
125
|
+
2. **Handle Sensitively**:
|
|
126
|
+
- Don't include full exploit code in public channels
|
|
127
|
+
- Use private issues if available
|
|
128
|
+
- Follow responsible disclosure practices
|
|
129
|
+
|
|
130
|
+
3. **Include Severity**: Use standard severity ratings (Critical/High/Medium/Low)
|
|
131
|
+
|
|
132
|
+
4. **Provide Remediation**: Security issues should include fix recommendations
|
|
133
|
+
|
|
134
|
+
5. **Set Deadline**: Security issues often have disclosure timelines
|
|
135
|
+
|
|
136
|
+
## Severity Guidelines
|
|
137
|
+
|
|
138
|
+
| Severity | CVSS | Response Time | Examples |
|
|
139
|
+
|----------|------|---------------|----------|
|
|
140
|
+
| **Critical** | 9.0-10.0 | Immediate | RCE, auth bypass, data breach |
|
|
141
|
+
| **High** | 7.0-8.9 | 24-48 hours | SQL injection, privilege escalation |
|
|
142
|
+
| **Medium** | 4.0-6.9 | 1 week | XSS, CSRF, info disclosure |
|
|
143
|
+
| **Low** | 0.1-3.9 | Next sprint | Missing headers, minor leaks |
|
|
144
|
+
|
|
145
|
+
## Common Vulnerability Types
|
|
146
|
+
|
|
147
|
+
| Type | Label | Example |
|
|
148
|
+
|------|-------|---------|
|
|
149
|
+
| Injection | `injection` | SQL, NoSQL, Command, LDAP |
|
|
150
|
+
| Authentication | `auth` | Broken auth, session issues |
|
|
151
|
+
| XSS | `xss` | Reflected, Stored, DOM-based |
|
|
152
|
+
| Access Control | `access-control` | IDOR, privilege escalation |
|
|
153
|
+
| Cryptography | `crypto` | Weak encryption, key exposure |
|
|
154
|
+
| Configuration | `misconfiguration` | Default creds, open ports |
|
|
155
|
+
|
|
156
|
+
## Responsible Disclosure
|
|
157
|
+
|
|
158
|
+
If external:
|
|
159
|
+
1. Acknowledge receipt within 24 hours
|
|
160
|
+
2. Provide timeline for fix
|
|
161
|
+
3. Credit reporter (if desired)
|
|
162
|
+
4. Coordinate disclosure date
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Sprint Task Template
|
|
2
|
+
|
|
3
|
+
## Template Configuration
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|----------|-------|
|
|
7
|
+
| **Name** | Sprint Task |
|
|
8
|
+
| **Labels** | (varies by task type) |
|
|
9
|
+
| **Priority** | 3 (Medium) |
|
|
10
|
+
| **Default Status** | Todo |
|
|
11
|
+
| **Estimate** | (set per task) |
|
|
12
|
+
|
|
13
|
+
## Description Template
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
## Objective
|
|
17
|
+
<!-- What needs to be accomplished? -->
|
|
18
|
+
|
|
19
|
+
## Background
|
|
20
|
+
<!-- Why are we doing this? Context and motivation -->
|
|
21
|
+
|
|
22
|
+
## Requirements
|
|
23
|
+
- [ ] Requirement 1
|
|
24
|
+
- [ ] Requirement 2
|
|
25
|
+
- [ ] Requirement 3
|
|
26
|
+
|
|
27
|
+
## Technical Approach
|
|
28
|
+
<!-- How will this be implemented? -->
|
|
29
|
+
|
|
30
|
+
## Acceptance Criteria
|
|
31
|
+
- [ ] Criterion 1
|
|
32
|
+
- [ ] Criterion 2
|
|
33
|
+
- [ ] Tests written and passing
|
|
34
|
+
- [ ] Code reviewed
|
|
35
|
+
|
|
36
|
+
## Dependencies
|
|
37
|
+
<!-- What needs to happen first? -->
|
|
38
|
+
|
|
39
|
+
## Out of Scope
|
|
40
|
+
<!-- What are we NOT doing? -->
|
|
41
|
+
|
|
42
|
+
## Links
|
|
43
|
+
- Design:
|
|
44
|
+
- Spec:
|
|
45
|
+
- Parent issue:
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## CLI Usage
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Create sprint task
|
|
52
|
+
npx tsx scripts/issues/create.ts \
|
|
53
|
+
--title "Implement user avatar upload" \
|
|
54
|
+
--description "## Objective
|
|
55
|
+
Add the ability for users to upload and update their profile avatar.
|
|
56
|
+
|
|
57
|
+
## Background
|
|
58
|
+
Users have requested the ability to personalize their profiles. Currently, we only show initials.
|
|
59
|
+
|
|
60
|
+
## Requirements
|
|
61
|
+
- [ ] Upload button on profile settings page
|
|
62
|
+
- [ ] Support JPEG, PNG, WebP formats
|
|
63
|
+
- [ ] Max file size: 5MB
|
|
64
|
+
- [ ] Auto-resize to 256x256
|
|
65
|
+
- [ ] Store in S3 bucket
|
|
66
|
+
|
|
67
|
+
## Technical Approach
|
|
68
|
+
1. Add file input component to ProfileSettings
|
|
69
|
+
2. Create \`/api/users/avatar\` endpoint
|
|
70
|
+
3. Use sharp for image processing
|
|
71
|
+
4. Upload to S3 with user ID as key
|
|
72
|
+
5. Update user record with avatar URL
|
|
73
|
+
|
|
74
|
+
## Acceptance Criteria
|
|
75
|
+
- [ ] User can upload image from profile settings
|
|
76
|
+
- [ ] Image is resized and optimized
|
|
77
|
+
- [ ] Avatar displays throughout app
|
|
78
|
+
- [ ] Invalid files show error message
|
|
79
|
+
- [ ] Unit tests for upload service
|
|
80
|
+
- [ ] E2E test for upload flow
|
|
81
|
+
|
|
82
|
+
## Dependencies
|
|
83
|
+
- S3 bucket configured (already done)
|
|
84
|
+
- sharp package installed
|
|
85
|
+
|
|
86
|
+
## Out of Scope
|
|
87
|
+
- Avatar cropping UI (future enhancement)
|
|
88
|
+
- Gravatar integration
|
|
89
|
+
- Avatar history
|
|
90
|
+
|
|
91
|
+
## Links
|
|
92
|
+
- Design: https://www.figma.com/file/abc123
|
|
93
|
+
- Parent epic: https://linear.app/workspace/issue/AA-50" \
|
|
94
|
+
--priority 3 \
|
|
95
|
+
--estimate 3 \
|
|
96
|
+
--json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Best Practices
|
|
100
|
+
|
|
101
|
+
1. **Title Format**: Imperative verb + what
|
|
102
|
+
- `Implement user avatar upload`
|
|
103
|
+
- `Add pagination to user list`
|
|
104
|
+
- `Fix memory leak in WebSocket handler`
|
|
105
|
+
|
|
106
|
+
2. **Define "Done"**: Clear acceptance criteria prevent ambiguity
|
|
107
|
+
|
|
108
|
+
3. **List Dependencies**: Helps with sprint planning
|
|
109
|
+
|
|
110
|
+
4. **Scope Boundaries**: "Out of Scope" prevents creep
|
|
111
|
+
|
|
112
|
+
5. **Link Related Issues**: Reference parent epics, blockers, related work
|
|
113
|
+
|
|
114
|
+
## Estimate Guidelines
|
|
115
|
+
|
|
116
|
+
Use Fibonacci or T-shirt sizing consistently:
|
|
117
|
+
|
|
118
|
+
| Points | Effort | Example |
|
|
119
|
+
|--------|--------|---------|
|
|
120
|
+
| 1 | Few hours | Config change, copy update |
|
|
121
|
+
| 2 | Half day | Simple component, small fix |
|
|
122
|
+
| 3 | 1 day | Feature with tests |
|
|
123
|
+
| 5 | 2-3 days | Complex feature |
|
|
124
|
+
| 8 | 1 week | Large feature, multiple components |
|
|
125
|
+
| 13 | 2 weeks | Epic-level work (should be broken down) |
|
|
126
|
+
|
|
127
|
+
## Task Breakdown Pattern
|
|
128
|
+
|
|
129
|
+
For larger tasks, create sub-issues:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Parent task
|
|
133
|
+
npx tsx scripts/issues/create.ts \
|
|
134
|
+
--title "Epic: User profile system" \
|
|
135
|
+
--description "..." \
|
|
136
|
+
--json
|
|
137
|
+
|
|
138
|
+
# Sub-tasks (using parent ID)
|
|
139
|
+
npx tsx scripts/issues/create.ts \
|
|
140
|
+
--title "Add profile settings page" \
|
|
141
|
+
--parent AA-100 \
|
|
142
|
+
--estimate 3 \
|
|
143
|
+
--json
|
|
144
|
+
|
|
145
|
+
npx tsx scripts/issues/create.ts \
|
|
146
|
+
--title "Implement avatar upload" \
|
|
147
|
+
--parent AA-100 \
|
|
148
|
+
--estimate 5 \
|
|
149
|
+
--json
|
|
150
|
+
|
|
151
|
+
npx tsx scripts/issues/create.ts \
|
|
152
|
+
--title "Add profile API endpoints" \
|
|
153
|
+
--parent AA-100 \
|
|
154
|
+
--estimate 3 \
|
|
155
|
+
--json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Status Workflow
|
|
159
|
+
|
|
160
|
+
Typical sprint task flow:
|
|
161
|
+
```
|
|
162
|
+
Todo → In Progress → In Review → Done
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Update status as you work:
|
|
166
|
+
```bash
|
|
167
|
+
# Start working
|
|
168
|
+
npx tsx scripts/status/update.ts AA-101 "in-progress-state-id" --json
|
|
169
|
+
|
|
170
|
+
# Submit for review
|
|
171
|
+
npx tsx scripts/status/update.ts AA-101 "in-review-state-id" --json
|
|
172
|
+
|
|
173
|
+
# Complete
|
|
174
|
+
npx tsx scripts/status/update.ts AA-101 "done-state-id" --json
|
|
175
|
+
```
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Technical Debt Template
|
|
2
|
+
|
|
3
|
+
## Template Configuration
|
|
4
|
+
|
|
5
|
+
| Property | Value |
|
|
6
|
+
|----------|-------|
|
|
7
|
+
| **Name** | Technical Debt |
|
|
8
|
+
| **Labels** | `tech-debt`, `refactor` |
|
|
9
|
+
| **Priority** | 4 (Low) or 3 (Medium) |
|
|
10
|
+
| **Default Status** | Backlog |
|
|
11
|
+
|
|
12
|
+
## Description Template
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## Summary
|
|
16
|
+
<!-- Brief description of the technical debt -->
|
|
17
|
+
|
|
18
|
+
## Current State
|
|
19
|
+
<!-- What's the problem with the current implementation? -->
|
|
20
|
+
|
|
21
|
+
## Impact
|
|
22
|
+
<!-- How does this affect development, performance, or maintainability? -->
|
|
23
|
+
|
|
24
|
+
- **Development velocity**:
|
|
25
|
+
- **Performance**:
|
|
26
|
+
- **Security risk**:
|
|
27
|
+
- **Test coverage**:
|
|
28
|
+
|
|
29
|
+
## Proposed Solution
|
|
30
|
+
<!-- How should this be refactored? -->
|
|
31
|
+
|
|
32
|
+
## Files/Components Affected
|
|
33
|
+
<!-- List the areas of code that need changes -->
|
|
34
|
+
|
|
35
|
+
- `src/components/...`
|
|
36
|
+
- `src/utils/...`
|
|
37
|
+
|
|
38
|
+
## Migration Strategy
|
|
39
|
+
<!-- If breaking changes, how will we migrate? -->
|
|
40
|
+
|
|
41
|
+
## Acceptance Criteria
|
|
42
|
+
- [ ] Criterion 1
|
|
43
|
+
- [ ] Criterion 2
|
|
44
|
+
- [ ] Tests updated
|
|
45
|
+
- [ ] Documentation updated
|
|
46
|
+
|
|
47
|
+
## Effort Estimate
|
|
48
|
+
<!-- T-shirt size: XS, S, M, L, XL -->
|
|
49
|
+
|
|
50
|
+
## Risk Assessment
|
|
51
|
+
<!-- What could go wrong? -->
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## CLI Usage
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Create tech debt issue
|
|
58
|
+
npx tsx scripts/issues/create.ts \
|
|
59
|
+
--title "Tech Debt: Migrate from moment.js to date-fns" \
|
|
60
|
+
--description "## Summary
|
|
61
|
+
Replace moment.js with date-fns to reduce bundle size and improve tree-shaking.
|
|
62
|
+
|
|
63
|
+
## Current State
|
|
64
|
+
We're using moment.js (300KB gzipped) for date formatting throughout the app. It's imported wholesale and doesn't tree-shake.
|
|
65
|
+
|
|
66
|
+
## Impact
|
|
67
|
+
- **Development velocity**: Neutral
|
|
68
|
+
- **Performance**: -300KB bundle size potential savings
|
|
69
|
+
- **Security risk**: moment.js is in maintenance mode
|
|
70
|
+
- **Test coverage**: Need to update date-related tests
|
|
71
|
+
|
|
72
|
+
## Proposed Solution
|
|
73
|
+
1. Install date-fns
|
|
74
|
+
2. Create adapter layer with same API
|
|
75
|
+
3. Migrate components incrementally
|
|
76
|
+
4. Remove moment.js when complete
|
|
77
|
+
|
|
78
|
+
## Files/Components Affected
|
|
79
|
+
- \`src/utils/date.ts\`
|
|
80
|
+
- \`src/components/DatePicker/\`
|
|
81
|
+
- \`src/components/Timeline/\`
|
|
82
|
+
- \`src/hooks/useFormatDate.ts\`
|
|
83
|
+
|
|
84
|
+
## Migration Strategy
|
|
85
|
+
1. Add date-fns alongside moment.js
|
|
86
|
+
2. Create \`src/utils/date-adapter.ts\` with unified API
|
|
87
|
+
3. Migrate one component at a time
|
|
88
|
+
4. Remove moment.js after all migrations complete
|
|
89
|
+
|
|
90
|
+
## Acceptance Criteria
|
|
91
|
+
- [ ] All date operations use date-fns
|
|
92
|
+
- [ ] Bundle size reduced by >200KB
|
|
93
|
+
- [ ] All existing tests pass
|
|
94
|
+
- [ ] No moment.js imports remain
|
|
95
|
+
|
|
96
|
+
## Effort Estimate
|
|
97
|
+
Medium (M) - 2-3 days
|
|
98
|
+
|
|
99
|
+
## Risk Assessment
|
|
100
|
+
- Date format inconsistencies during migration
|
|
101
|
+
- Timezone handling differences between libraries" \
|
|
102
|
+
--priority 4 \
|
|
103
|
+
--json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Best Practices
|
|
107
|
+
|
|
108
|
+
1. **Title Format**: `Tech Debt: Brief description`
|
|
109
|
+
- `Tech Debt: Remove deprecated API calls`
|
|
110
|
+
- `Tech Debt: Add TypeScript to utils folder`
|
|
111
|
+
|
|
112
|
+
2. **Quantify Impact**: "Reduces build time by 30%" is better than "Makes build faster"
|
|
113
|
+
|
|
114
|
+
3. **Include Migration Path**: Especially for breaking changes
|
|
115
|
+
|
|
116
|
+
4. **List Affected Files**: Helps estimate scope
|
|
117
|
+
|
|
118
|
+
5. **Link to Related Issues**: Tech debt often blocks feature work
|
|
119
|
+
|
|
120
|
+
## Priority Guidelines
|
|
121
|
+
|
|
122
|
+
| Priority | When to Use |
|
|
123
|
+
|----------|-------------|
|
|
124
|
+
| **High (2)** | Blocks feature development, security risk |
|
|
125
|
+
| **Medium (3)** | Significant performance/DX improvement |
|
|
126
|
+
| **Low (4)** | Nice to have, long-term improvement |
|
|
127
|
+
|
|
128
|
+
## Common Tech Debt Categories
|
|
129
|
+
|
|
130
|
+
| Category | Examples |
|
|
131
|
+
|----------|----------|
|
|
132
|
+
| **Dependencies** | Outdated packages, deprecated libraries |
|
|
133
|
+
| **Code Quality** | Missing types, inconsistent patterns |
|
|
134
|
+
| **Performance** | Bundle size, slow queries, memory leaks |
|
|
135
|
+
| **Testing** | Missing tests, flaky tests, low coverage |
|
|
136
|
+
| **Documentation** | Outdated docs, missing API docs |
|
|
137
|
+
| **Infrastructure** | CI/CD improvements, build optimization |
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"forceConsistentCasingInFileNames": true,
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"declaration": true,
|
|
12
|
+
"outDir": "./dist",
|
|
13
|
+
"rootDir": "."
|
|
14
|
+
},
|
|
15
|
+
"include": ["**/*.ts"],
|
|
16
|
+
"exclude": ["node_modules", "dist"]
|
|
17
|
+
}
|