@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,215 @@
|
|
|
1
|
+
# Microservices Architecture Analysis Report
|
|
2
|
+
|
|
3
|
+
**Generated**: [DATE]
|
|
4
|
+
**Repository**: [REPOSITORY_NAME]
|
|
5
|
+
**Analysis Type**: Code-based (no stakeholder interviews)
|
|
6
|
+
**Confidence Distribution**: HIGH: _%, MEDIUM: _%, LOW: _%, UNKNOWN: _%
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Executive Summary
|
|
11
|
+
|
|
12
|
+
### Key Findings
|
|
13
|
+
- **Architecture Style**: [Microservices/Monolith/Hybrid] [Confidence: _]
|
|
14
|
+
- **Total Services**: _ microservices identified
|
|
15
|
+
- **Primary Technologies**: [List main stack]
|
|
16
|
+
- **Communication Pattern**: [Sync/Async/Mixed]
|
|
17
|
+
- **Deployment Model**: [Containers/Serverless/VMs]
|
|
18
|
+
|
|
19
|
+
### Critical Observations
|
|
20
|
+
🔴 **High Priority (HIGH confidence)**
|
|
21
|
+
- [Issue 1]
|
|
22
|
+
- [Issue 2]
|
|
23
|
+
|
|
24
|
+
🟡 **Medium Priority (MEDIUM confidence)**
|
|
25
|
+
- [Issue 1]
|
|
26
|
+
- [Issue 2]
|
|
27
|
+
|
|
28
|
+
🔵 **Needs Investigation (LOW confidence)**
|
|
29
|
+
- [Issue 1]
|
|
30
|
+
- [Issue 2]
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## System Architecture
|
|
35
|
+
|
|
36
|
+
### High-Level Overview
|
|
37
|
+
[Narrative description of the system]
|
|
38
|
+
|
|
39
|
+
### Architecture Style
|
|
40
|
+
- **Pattern**: [Microservices/SOA/Modular Monolith]
|
|
41
|
+
- **Evidence**: [List evidence]
|
|
42
|
+
- **Confidence**: [HIGH/MEDIUM/LOW]
|
|
43
|
+
|
|
44
|
+
### Technology Stack
|
|
45
|
+
| Layer | Technology | Services Using | Confidence |
|
|
46
|
+
|-------|------------|----------------|------------|
|
|
47
|
+
| Frontend | | | |
|
|
48
|
+
| Backend | | | |
|
|
49
|
+
| Database | | | |
|
|
50
|
+
| Messaging | | | |
|
|
51
|
+
| Caching | | | |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Service Catalog
|
|
56
|
+
|
|
57
|
+
| Service | Path | Domain | Purpose | Tech Stack | APIs | Dependencies | Confidence |
|
|
58
|
+
|---------|------|--------|---------|------------|------|--------------|------------|
|
|
59
|
+
| | | | | | | | |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## System Diagrams
|
|
64
|
+
|
|
65
|
+
### C4 System Context
|
|
66
|
+
```mermaid
|
|
67
|
+
[Insert C4 Context Diagram]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### C4 Container Diagram
|
|
71
|
+
```mermaid
|
|
72
|
+
[Insert C4 Container Diagram]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Domain Model
|
|
78
|
+
|
|
79
|
+
### Bounded Contexts
|
|
80
|
+
| Context | Services | Core Entities | Confidence |
|
|
81
|
+
|---------|----------|---------------|------------|
|
|
82
|
+
| | | | |
|
|
83
|
+
|
|
84
|
+
### Key Entities
|
|
85
|
+
| Entity | Owner Service | Related Services | Confidence |
|
|
86
|
+
|--------|--------------|------------------|------------|
|
|
87
|
+
| | | | |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## API Documentation
|
|
92
|
+
|
|
93
|
+
### REST APIs
|
|
94
|
+
| Service | Endpoint Count | Authentication | Documentation | Confidence |
|
|
95
|
+
|---------|----------------|----------------|---------------|------------|
|
|
96
|
+
| | | | | |
|
|
97
|
+
|
|
98
|
+
### Event/Message APIs
|
|
99
|
+
| Event | Producer | Consumers | Format | Confidence |
|
|
100
|
+
|-------|----------|-----------|--------|------------|
|
|
101
|
+
| | | | | |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Service Dependencies
|
|
106
|
+
|
|
107
|
+
### Dependency Matrix
|
|
108
|
+
| Service | Depends On | Type | Confidence |
|
|
109
|
+
|---------|------------|------|------------|
|
|
110
|
+
| | | | |
|
|
111
|
+
|
|
112
|
+
### Critical Paths
|
|
113
|
+
1. **[Flow Name]**
|
|
114
|
+
- Path: Service A → Service B → Service C
|
|
115
|
+
- Type: [Synchronous/Asynchronous]
|
|
116
|
+
- Confidence: [_]
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Technical Assessment
|
|
121
|
+
|
|
122
|
+
### Security
|
|
123
|
+
| Aspect | Implementation | Coverage | Confidence |
|
|
124
|
+
|--------|---------------|----------|------------|
|
|
125
|
+
| Authentication | | | |
|
|
126
|
+
| Authorization | | | |
|
|
127
|
+
| Secrets Management | | | |
|
|
128
|
+
| Encryption | | | |
|
|
129
|
+
|
|
130
|
+
### Observability
|
|
131
|
+
| Aspect | Implementation | Coverage | Confidence |
|
|
132
|
+
|--------|---------------|----------|------------|
|
|
133
|
+
| Logging | | | |
|
|
134
|
+
| Metrics | | | |
|
|
135
|
+
| Tracing | | | |
|
|
136
|
+
| Health Checks | | | |
|
|
137
|
+
|
|
138
|
+
### Quality Metrics
|
|
139
|
+
| Service | Test Coverage | Code Quality | Tech Debt | Confidence |
|
|
140
|
+
|---------|--------------|--------------|-----------|------------|
|
|
141
|
+
| | | | | |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Technical Debt Register
|
|
146
|
+
|
|
147
|
+
| ID | Service | Issue | Type | Impact | Evidence | Confidence | Recommendation |
|
|
148
|
+
|----|---------|-------|------|--------|----------|------------|----------------|
|
|
149
|
+
| TD-001 | | | | | | | |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Risks and Gaps
|
|
154
|
+
|
|
155
|
+
### Architecture Risks
|
|
156
|
+
| Risk | Description | Impact | Evidence | Confidence |
|
|
157
|
+
|------|-------------|--------|----------|------------|
|
|
158
|
+
| | | | | |
|
|
159
|
+
|
|
160
|
+
### Knowledge Gaps
|
|
161
|
+
- [Area 1]: Unknown (not derivable from code)
|
|
162
|
+
- [Area 2]: Unknown (requires stakeholder input)
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Recommendations
|
|
167
|
+
|
|
168
|
+
### Immediate Actions (HIGH confidence)
|
|
169
|
+
1. **[Action]**
|
|
170
|
+
- Rationale: [Why]
|
|
171
|
+
- Evidence: [What we found]
|
|
172
|
+
- Impact: [Expected outcome]
|
|
173
|
+
|
|
174
|
+
### Short-term Improvements (MEDIUM confidence)
|
|
175
|
+
1. **[Improvement]**
|
|
176
|
+
- Rationale: [Why]
|
|
177
|
+
- Evidence: [What suggests this]
|
|
178
|
+
- Validation Needed: [What to confirm]
|
|
179
|
+
|
|
180
|
+
### Investigation Areas (LOW confidence)
|
|
181
|
+
1. **[Area]**
|
|
182
|
+
- Current Understanding: [What we think]
|
|
183
|
+
- Evidence Gap: [What's missing]
|
|
184
|
+
- Questions for Stakeholders: [What to ask]
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Appendix
|
|
189
|
+
|
|
190
|
+
### Analysis Limitations
|
|
191
|
+
- No runtime information available
|
|
192
|
+
- No performance metrics accessible
|
|
193
|
+
- No production configurations reviewed
|
|
194
|
+
- No stakeholder interviews conducted
|
|
195
|
+
|
|
196
|
+
### Assumptions Made
|
|
197
|
+
| Assumption | Rationale | Impact if Incorrect |
|
|
198
|
+
|------------|-----------|-------------------|
|
|
199
|
+
| | | |
|
|
200
|
+
|
|
201
|
+
### Files Analyzed
|
|
202
|
+
- Total files scanned: _
|
|
203
|
+
- Total lines of code: _
|
|
204
|
+
- Configuration files: _
|
|
205
|
+
- Test files: _
|
|
206
|
+
|
|
207
|
+
### Confidence Summary
|
|
208
|
+
- HIGH confidence findings: _% (_/_ items)
|
|
209
|
+
- MEDIUM confidence findings: _% (_/_ items)
|
|
210
|
+
- LOW confidence findings: _% (_/_ items)
|
|
211
|
+
- UNKNOWN: _ areas requiring stakeholder input
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
*End of Report*
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# C4 Model Templates
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The C4 model provides a hierarchical way to describe software architecture using Context, Container, Component, and Code diagrams.
|
|
5
|
+
|
|
6
|
+
## System Context Diagram (Level 1)
|
|
7
|
+
|
|
8
|
+
### Mermaid Template
|
|
9
|
+
```mermaid
|
|
10
|
+
graph TB
|
|
11
|
+
User[User]
|
|
12
|
+
System[Your System]
|
|
13
|
+
ExtSystem1[External System 1]
|
|
14
|
+
ExtSystem2[External System 2]
|
|
15
|
+
|
|
16
|
+
User -->|Uses| System
|
|
17
|
+
System -->|Sends data to| ExtSystem1
|
|
18
|
+
System -->|Gets data from| ExtSystem2
|
|
19
|
+
|
|
20
|
+
style System fill:#1168bd,stroke:#333,stroke-width:4px
|
|
21
|
+
style User fill:#08427b,stroke:#333,stroke-width:2px,color:#fff
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### PlantUML Template
|
|
25
|
+
```plantuml
|
|
26
|
+
@startuml
|
|
27
|
+
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
|
|
28
|
+
|
|
29
|
+
Person(user, "User", "A user of the system")
|
|
30
|
+
System(system, "Your System", "Description of your system")
|
|
31
|
+
System_Ext(ext1, "External System 1", "Description")
|
|
32
|
+
System_Ext(ext2, "External System 2", "Description")
|
|
33
|
+
|
|
34
|
+
Rel(user, system, "Uses")
|
|
35
|
+
Rel(system, ext1, "Sends data to")
|
|
36
|
+
Rel(system, ext2, "Gets data from")
|
|
37
|
+
@enduml
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Container Diagram (Level 2)
|
|
41
|
+
|
|
42
|
+
### Mermaid Template
|
|
43
|
+
```mermaid
|
|
44
|
+
graph TB
|
|
45
|
+
subgraph "Your System"
|
|
46
|
+
WebApp[Web Application<br/>React]
|
|
47
|
+
API[API Gateway<br/>Node.js]
|
|
48
|
+
AuthService[Auth Service<br/>Node.js]
|
|
49
|
+
UserService[User Service<br/>Java Spring]
|
|
50
|
+
OrderService[Order Service<br/>Python FastAPI]
|
|
51
|
+
DB1[(User DB<br/>PostgreSQL)]
|
|
52
|
+
DB2[(Order DB<br/>MongoDB)]
|
|
53
|
+
Queue[Message Queue<br/>RabbitMQ]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
User[User]
|
|
57
|
+
|
|
58
|
+
User -->|HTTPS| WebApp
|
|
59
|
+
WebApp -->|REST/JSON| API
|
|
60
|
+
API -->|REST| AuthService
|
|
61
|
+
API -->|REST| UserService
|
|
62
|
+
API -->|REST| OrderService
|
|
63
|
+
UserService -->|SQL| DB1
|
|
64
|
+
OrderService -->|NoSQL| DB2
|
|
65
|
+
OrderService -->|Publish| Queue
|
|
66
|
+
UserService -->|Subscribe| Queue
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### PlantUML Template
|
|
70
|
+
```plantuml
|
|
71
|
+
@startuml
|
|
72
|
+
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
|
|
73
|
+
|
|
74
|
+
Person(user, "User")
|
|
75
|
+
System_Boundary(system, "Your System") {
|
|
76
|
+
Container(webapp, "Web Application", "React", "Provides UI")
|
|
77
|
+
Container(api, "API Gateway", "Node.js", "Routes requests")
|
|
78
|
+
Container(auth, "Auth Service", "Node.js", "Authentication")
|
|
79
|
+
Container(userservice, "User Service", "Java Spring", "User management")
|
|
80
|
+
Container(orderservice, "Order Service", "Python", "Order processing")
|
|
81
|
+
ContainerDb(userdb, "User Database", "PostgreSQL", "User data")
|
|
82
|
+
ContainerDb(orderdb, "Order Database", "MongoDB", "Order data")
|
|
83
|
+
ContainerQueue(queue, "Message Queue", "RabbitMQ", "Async messaging")
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
Rel(user, webapp, "Uses", "HTTPS")
|
|
87
|
+
Rel(webapp, api, "Makes API calls", "REST/JSON")
|
|
88
|
+
Rel(api, auth, "Authenticates", "REST")
|
|
89
|
+
Rel(api, userservice, "User operations", "REST")
|
|
90
|
+
Rel(api, orderservice, "Order operations", "REST")
|
|
91
|
+
Rel(userservice, userdb, "Reads/Writes", "SQL")
|
|
92
|
+
Rel(orderservice, orderdb, "Reads/Writes", "NoSQL")
|
|
93
|
+
Rel(orderservice, queue, "Publishes events")
|
|
94
|
+
Rel(userservice, queue, "Subscribes to events")
|
|
95
|
+
@enduml
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Component Diagram (Level 3)
|
|
99
|
+
|
|
100
|
+
### Mermaid Template
|
|
101
|
+
```mermaid
|
|
102
|
+
graph TB
|
|
103
|
+
subgraph "User Service"
|
|
104
|
+
Controller[REST Controller]
|
|
105
|
+
Service[User Service]
|
|
106
|
+
Repository[User Repository]
|
|
107
|
+
EventPublisher[Event Publisher]
|
|
108
|
+
SecurityFilter[Security Filter]
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
API[API Gateway]
|
|
112
|
+
DB[(PostgreSQL)]
|
|
113
|
+
Queue[RabbitMQ]
|
|
114
|
+
|
|
115
|
+
API -->|REST| Controller
|
|
116
|
+
Controller --> SecurityFilter
|
|
117
|
+
SecurityFilter --> Service
|
|
118
|
+
Service --> Repository
|
|
119
|
+
Service --> EventPublisher
|
|
120
|
+
Repository -->|SQL| DB
|
|
121
|
+
EventPublisher -->|AMQP| Queue
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Sequence Diagram Template
|
|
125
|
+
|
|
126
|
+
### Mermaid Template
|
|
127
|
+
```mermaid
|
|
128
|
+
sequenceDiagram
|
|
129
|
+
participant User
|
|
130
|
+
participant WebApp
|
|
131
|
+
participant API Gateway
|
|
132
|
+
participant Auth Service
|
|
133
|
+
participant User Service
|
|
134
|
+
participant Database
|
|
135
|
+
|
|
136
|
+
User->>WebApp: Login Request
|
|
137
|
+
WebApp->>API Gateway: POST /auth/login
|
|
138
|
+
API Gateway->>Auth Service: Validate Credentials
|
|
139
|
+
Auth Service->>Database: Query User
|
|
140
|
+
Database-->>Auth Service: User Data
|
|
141
|
+
Auth Service-->>API Gateway: JWT Token
|
|
142
|
+
API Gateway-->>WebApp: Login Response
|
|
143
|
+
WebApp-->>User: Show Dashboard
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Data Flow Diagram Template
|
|
147
|
+
|
|
148
|
+
### Mermaid Template
|
|
149
|
+
```mermaid
|
|
150
|
+
graph LR
|
|
151
|
+
Source[Data Source]
|
|
152
|
+
Ingestion[Ingestion Service]
|
|
153
|
+
Processing[Processing Service]
|
|
154
|
+
Storage[(Data Lake)]
|
|
155
|
+
Analytics[Analytics Service]
|
|
156
|
+
Dashboard[Dashboard]
|
|
157
|
+
|
|
158
|
+
Source -->|Raw Data| Ingestion
|
|
159
|
+
Ingestion -->|Validated Data| Processing
|
|
160
|
+
Processing -->|Transformed Data| Storage
|
|
161
|
+
Storage -->|Query| Analytics
|
|
162
|
+
Analytics -->|Aggregated Data| Dashboard
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Event Flow Diagram Template
|
|
166
|
+
|
|
167
|
+
### Mermaid Template
|
|
168
|
+
```mermaid
|
|
169
|
+
graph TB
|
|
170
|
+
OrderService[Order Service]
|
|
171
|
+
UserService[User Service]
|
|
172
|
+
InventoryService[Inventory Service]
|
|
173
|
+
NotificationService[Notification Service]
|
|
174
|
+
|
|
175
|
+
OrderCreated{Order Created Event}
|
|
176
|
+
PaymentProcessed{Payment Processed Event}
|
|
177
|
+
|
|
178
|
+
OrderService -->|Publishes| OrderCreated
|
|
179
|
+
OrderCreated -->|Subscribes| UserService
|
|
180
|
+
OrderCreated -->|Subscribes| InventoryService
|
|
181
|
+
OrderCreated -->|Subscribes| NotificationService
|
|
182
|
+
|
|
183
|
+
OrderService -->|Publishes| PaymentProcessed
|
|
184
|
+
PaymentProcessed -->|Subscribes| NotificationService
|
|
185
|
+
|
|
186
|
+
style OrderCreated fill:#f9f,stroke:#333,stroke-width:2px
|
|
187
|
+
style PaymentProcessed fill:#f9f,stroke:#333,stroke-width:2px
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Dependency Matrix Template
|
|
191
|
+
|
|
192
|
+
### Markdown Table
|
|
193
|
+
```markdown
|
|
194
|
+
| Service | User Service | Order Service | Auth Service | Notification | Database |
|
|
195
|
+
|---------|-------------|---------------|--------------|--------------|----------|
|
|
196
|
+
| **User Service** | - | HTTP | HTTP | Event | PostgreSQL |
|
|
197
|
+
| **Order Service** | HTTP | - | HTTP | Event | MongoDB |
|
|
198
|
+
| **Auth Service** | - | - | - | - | PostgreSQL |
|
|
199
|
+
| **Notification** | Event | Event | - | - | - |
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Mermaid Heatmap Style
|
|
203
|
+
```mermaid
|
|
204
|
+
graph LR
|
|
205
|
+
subgraph "Service Dependencies"
|
|
206
|
+
US[User Service]
|
|
207
|
+
OS[Order Service]
|
|
208
|
+
AS[Auth Service]
|
|
209
|
+
NS[Notification Service]
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
US -.->|Weak| OS
|
|
213
|
+
US ==>|Strong| AS
|
|
214
|
+
OS ==>|Strong| AS
|
|
215
|
+
OS -->|Medium| NS
|
|
216
|
+
US -->|Medium| NS
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Best Practices
|
|
220
|
+
|
|
221
|
+
1. **Consistency**: Use the same notation and style across all diagrams
|
|
222
|
+
2. **Clarity**: Label all connections with protocols/formats
|
|
223
|
+
3. **Confidence**: Mark uncertain connections with dashed lines
|
|
224
|
+
4. **Versioning**: Include API versions where relevant
|
|
225
|
+
5. **Legend**: Add a legend for symbols and confidence levels
|
|
226
|
+
|
|
227
|
+
## Confidence Notation
|
|
228
|
+
|
|
229
|
+
- **Solid lines**: HIGH confidence (verified in code)
|
|
230
|
+
- **Dashed lines**: MEDIUM confidence (inferred)
|
|
231
|
+
- **Dotted lines**: LOW confidence (assumed)
|
|
232
|
+
- **Red elements**: Critical/High priority
|
|
233
|
+
- **Yellow elements**: Warning/Medium priority
|
|
234
|
+
- **Green elements**: Healthy/Low priority
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Confidence Levels Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Every finding in the architecture analysis must be marked with a confidence level to indicate how certain we are about the information based on what can be verified in the code.
|
|
5
|
+
|
|
6
|
+
## Confidence Levels
|
|
7
|
+
|
|
8
|
+
### HIGH Confidence
|
|
9
|
+
**Definition**: Information directly observable in code, configuration files, or explicit documentation within the repository.
|
|
10
|
+
|
|
11
|
+
**Examples**:
|
|
12
|
+
- Dependencies listed in package.json, pom.xml, requirements.txt
|
|
13
|
+
- Database connections with explicit connection strings
|
|
14
|
+
- API endpoints defined with decorators or route definitions
|
|
15
|
+
- Environment variables referenced in code
|
|
16
|
+
- Dockerfiles and deployment configurations
|
|
17
|
+
- Test files and coverage reports
|
|
18
|
+
- Explicit error messages or log statements
|
|
19
|
+
|
|
20
|
+
**How to mark**:
|
|
21
|
+
```markdown
|
|
22
|
+
**Authentication**: JWT-based [HIGH - jsonwebtoken in package.json:15]
|
|
23
|
+
**Database**: PostgreSQL 14 [HIGH - docker-compose.yml:23]
|
|
24
|
+
**API Endpoints**: 23 REST endpoints [HIGH - counted from routes/]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### MEDIUM Confidence
|
|
28
|
+
**Definition**: Information strongly inferred from patterns, naming conventions, or multiple corroborating pieces of evidence.
|
|
29
|
+
|
|
30
|
+
**Examples**:
|
|
31
|
+
- Service dependencies inferred from import statements
|
|
32
|
+
- Framework usage inferred from file structure
|
|
33
|
+
- Communication patterns inferred from client libraries
|
|
34
|
+
- Business logic inferred from method/class names
|
|
35
|
+
- Architectural patterns inferred from directory structure
|
|
36
|
+
- Security practices inferred from middleware usage
|
|
37
|
+
|
|
38
|
+
**How to mark**:
|
|
39
|
+
```markdown
|
|
40
|
+
**Service Communication**: REST over HTTP [MEDIUM - axios client found]
|
|
41
|
+
**Pattern**: Repository pattern [MEDIUM - repo/ directory structure]
|
|
42
|
+
**Caching**: Redis likely used [MEDIUM - redis client imported but no config]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### LOW Confidence
|
|
46
|
+
**Definition**: Educated guesses based on common patterns, incomplete evidence, or industry standards.
|
|
47
|
+
|
|
48
|
+
**Examples**:
|
|
49
|
+
- Performance capabilities without explicit configs
|
|
50
|
+
- Scaling assumptions based on technology stack
|
|
51
|
+
- Business rules inferred from minimal code
|
|
52
|
+
- Integration assumptions from partial evidence
|
|
53
|
+
- Team structure guessed from code ownership
|
|
54
|
+
- Deployment frequency from commit patterns
|
|
55
|
+
|
|
56
|
+
**How to mark**:
|
|
57
|
+
```markdown
|
|
58
|
+
**Scale**: ~1000 concurrent users [LOW - based on single instance config]
|
|
59
|
+
**Team Size**: 3-5 developers [LOW - based on commit authors]
|
|
60
|
+
**Deploy Frequency**: Weekly [LOW - based on version tags]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### UNKNOWN
|
|
64
|
+
**Definition**: Information that cannot be determined from the code alone and requires human input.
|
|
65
|
+
|
|
66
|
+
**Examples**:
|
|
67
|
+
- Business KPIs and metrics
|
|
68
|
+
- SLAs and SLOs not in code
|
|
69
|
+
- Organizational structure
|
|
70
|
+
- Cost constraints
|
|
71
|
+
- Compliance requirements
|
|
72
|
+
- Production infrastructure details
|
|
73
|
+
- User demographics
|
|
74
|
+
- Business strategy
|
|
75
|
+
|
|
76
|
+
**How to mark**:
|
|
77
|
+
```markdown
|
|
78
|
+
**Multi-tenancy Strategy**: Unknown (not derivable from code)
|
|
79
|
+
**Production Scale**: Unknown (no production configs found)
|
|
80
|
+
**Compliance**: Unknown (no explicit compliance markers)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Decision Tree for Confidence Assignment
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Is the information explicitly written in code/config?
|
|
87
|
+
├─ YES → HIGH confidence
|
|
88
|
+
└─ NO → Can it be strongly inferred from multiple sources?
|
|
89
|
+
├─ YES → MEDIUM confidence
|
|
90
|
+
└─ NO → Is there partial evidence?
|
|
91
|
+
├─ YES → LOW confidence
|
|
92
|
+
└─ NO → UNKNOWN
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Evidence Requirements by Confidence Level
|
|
96
|
+
|
|
97
|
+
### HIGH Confidence Evidence
|
|
98
|
+
Must provide:
|
|
99
|
+
- Exact file path
|
|
100
|
+
- Line number (when applicable)
|
|
101
|
+
- Exact text or configuration value
|
|
102
|
+
|
|
103
|
+
Example:
|
|
104
|
+
```markdown
|
|
105
|
+
Evidence: `/services/user/package.json:12` - "express": "^4.18.0"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### MEDIUM Confidence Evidence
|
|
109
|
+
Must provide:
|
|
110
|
+
- Multiple corroborating sources
|
|
111
|
+
- Pattern explanation
|
|
112
|
+
- File/directory references
|
|
113
|
+
|
|
114
|
+
Example:
|
|
115
|
+
```markdown
|
|
116
|
+
Evidence: Multiple HTTP client calls in `/services/order/api/`
|
|
117
|
+
Pattern: All external calls use axios with similar structure
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### LOW Confidence Evidence
|
|
121
|
+
Must provide:
|
|
122
|
+
- Reasoning for the guess
|
|
123
|
+
- What evidence is missing
|
|
124
|
+
- Industry standard reference
|
|
125
|
+
|
|
126
|
+
Example:
|
|
127
|
+
```markdown
|
|
128
|
+
Evidence: No explicit scaling config found
|
|
129
|
+
Reasoning: Node.js single instance, no clustering setup
|
|
130
|
+
Missing: Production deployment configs
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Compound Confidence
|
|
134
|
+
|
|
135
|
+
When combining multiple pieces of information:
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
**Service Architecture** [Confidence: Mixed]
|
|
139
|
+
- Microservices: HIGH (separate deployables found)
|
|
140
|
+
- Count: HIGH (12 services identified)
|
|
141
|
+
- Communication: MEDIUM (REST patterns inferred)
|
|
142
|
+
- Orchestration: LOW (possible K8s from yaml files)
|
|
143
|
+
- Production Setup: Unknown
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Confidence in Diagrams
|
|
147
|
+
|
|
148
|
+
### Visual Representations
|
|
149
|
+
- **Solid lines**: HIGH confidence relationships
|
|
150
|
+
- **Dashed lines**: MEDIUM confidence relationships
|
|
151
|
+
- **Dotted lines**: LOW confidence relationships
|
|
152
|
+
- **Question marks**: UNKNOWN elements
|
|
153
|
+
|
|
154
|
+
### Diagram Annotations
|
|
155
|
+
```mermaid
|
|
156
|
+
graph LR
|
|
157
|
+
A[Service A] ==>|HIGH| B[Service B]
|
|
158
|
+
B -.->|MEDIUM| C[Service C]
|
|
159
|
+
C ...|LOW| D[Service D]
|
|
160
|
+
D ---|UNKNOWN| E[External?]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Confidence Aggregation
|
|
164
|
+
|
|
165
|
+
For summary sections:
|
|
166
|
+
```markdown
|
|
167
|
+
## Analysis Confidence Summary
|
|
168
|
+
- HIGH confidence findings: 67% (45/67 items)
|
|
169
|
+
- MEDIUM confidence findings: 24% (16/67 items)
|
|
170
|
+
- LOW confidence findings: 9% (6/67 items)
|
|
171
|
+
- UNKNOWN: 12 areas requiring stakeholder input
|
|
172
|
+
|
|
173
|
+
## Recommended Validation Priority
|
|
174
|
+
1. Validate LOW confidence items first
|
|
175
|
+
2. Confirm MEDIUM confidence patterns
|
|
176
|
+
3. Verify HIGH confidence critical items
|
|
177
|
+
4. Gather information for UNKNOWN areas
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Best Practices
|
|
181
|
+
|
|
182
|
+
1. **Be Conservative**: When in doubt, use lower confidence
|
|
183
|
+
2. **Show Your Work**: Always explain reasoning
|
|
184
|
+
3. **Accumulate Evidence**: Multiple weak signals can increase confidence
|
|
185
|
+
4. **Update Continuously**: Adjust confidence as more code is analyzed
|
|
186
|
+
5. **Highlight Uncertainty**: Make unknowns prominent
|
|
187
|
+
6. **Version Confidence**: Track how confidence changes over analysis
|
|
188
|
+
|
|
189
|
+
## Anti-Patterns to Avoid
|
|
190
|
+
|
|
191
|
+
❌ **Don't**:
|
|
192
|
+
- State something as fact without evidence
|
|
193
|
+
- Hide uncertainty in footnotes
|
|
194
|
+
- Average confidence across unrelated items
|
|
195
|
+
- Assume industry standards apply
|
|
196
|
+
- Guess at business requirements
|
|
197
|
+
|
|
198
|
+
✅ **Do**:
|
|
199
|
+
- Mark every technical claim
|
|
200
|
+
- Lead with confidence level
|
|
201
|
+
- Explain evidence gaps
|
|
202
|
+
- Separate facts from inferences
|
|
203
|
+
- Document what you cannot determine
|