ui-syncup 0.3.13 → 0.4.0-beta.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/.agents/skills/ai-spec-workflow/SKILL.md +58 -0
- package/.agents/skills/ai-spec-workflow/references/AI_SPECIFICATION_WORKFLOW.md +1434 -0
- package/.agents/skills/ai-spec-workflow/references/templates/design-template.md +729 -0
- package/.agents/skills/ai-spec-workflow/references/templates/requirements-template.md +179 -0
- package/.agents/skills/ai-spec-workflow/references/templates/tasks-template.md +501 -0
- package/.agents/skills/animation-designer/SKILL.md +688 -0
- package/.agents/skills/animation-designer/manifest.yaml +44 -0
- package/.agents/skills/brainstorming/SKILL.md +54 -0
- package/.agents/skills/contract-driven-ui/SKILL.md +270 -0
- package/.agents/skills/dispatching-parallel-agents/SKILL.md +180 -0
- package/.agents/skills/executing-plans/SKILL.md +76 -0
- package/.agents/skills/executing-specs/SKILL.md +53 -0
- package/.agents/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/.agents/skills/github-workflow-automation/SKILL.md +846 -0
- package/.agents/skills/react-best-practices/AGENTS.md +2249 -0
- package/.agents/skills/react-best-practices/README.md +123 -0
- package/.agents/skills/react-best-practices/SKILL.md +121 -0
- package/.agents/skills/react-best-practices/metadata.json +15 -0
- package/.agents/skills/react-best-practices/rules/_sections.md +46 -0
- package/.agents/skills/react-best-practices/rules/_template.md +28 -0
- package/.agents/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/.agents/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/.agents/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/.agents/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/.agents/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/.agents/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/.agents/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/.agents/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/.agents/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/.agents/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/.agents/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/.agents/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/.agents/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/.agents/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/.agents/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/.agents/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/.agents/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/.agents/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/.agents/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/.agents/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/.agents/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/.agents/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/.agents/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/.agents/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/.agents/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/.agents/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/.agents/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/.agents/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/.agents/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/.agents/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/.agents/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/.agents/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/.agents/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/.agents/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/.agents/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/.agents/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/.agents/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/.agents/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/.agents/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/.agents/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/.agents/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/.agents/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/.agents/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/.agents/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/.agents/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/.agents/skills/react-ui-patterns/SKILL.md +289 -0
- package/.agents/skills/receiving-code-review/SKILL.md +213 -0
- package/.agents/skills/requesting-code-review/SKILL.md +105 -0
- package/.agents/skills/requesting-code-review/code-reviewer.md +146 -0
- package/.agents/skills/reviewing-code/SKILL.md +28 -0
- package/.agents/skills/shadcn/SKILL.md +240 -0
- package/.agents/skills/shadcn/agents/openai.yml +5 -0
- package/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
- package/.agents/skills/shadcn/assets/shadcn.png +0 -0
- package/.agents/skills/shadcn/cli.md +255 -0
- package/.agents/skills/shadcn/customization.md +202 -0
- package/.agents/skills/shadcn/evals/evals.json +47 -0
- package/.agents/skills/shadcn/mcp.md +94 -0
- package/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
- package/.agents/skills/shadcn/rules/composition.md +195 -0
- package/.agents/skills/shadcn/rules/forms.md +192 -0
- package/.agents/skills/shadcn/rules/icons.md +101 -0
- package/.agents/skills/shadcn/rules/styling.md +162 -0
- package/.agents/skills/steering-creation/SKILL.md +221 -0
- package/.agents/skills/steering-creation/references/STEERING_CREATION_INSTRUCTION.md +850 -0
- package/.agents/skills/subagent-driven-development/SKILL.md +240 -0
- package/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/.agents/skills/subagent-driven-development/implementer-prompt.md +78 -0
- package/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/.agents/skills/systematic-debugging/SKILL.md +296 -0
- package/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
- package/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.agents/skills/systematic-debugging/test-academic.md +14 -0
- package/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/.agents/skills/test-driven-development/SKILL.md +371 -0
- package/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/.agents/skills/using-git-worktrees/SKILL.md +217 -0
- package/.agents/skills/using-superpowers/SKILL.md +87 -0
- package/.agents/skills/verification-before-completion/SKILL.md +139 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +36 -0
- package/.agents/skills/writing-plans/SKILL.md +116 -0
- package/.agents/skills/writing-skills/SKILL.md +655 -0
- package/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/.agents/skills/writing-skills/persuasion-principles.md +187 -0
- package/.agents/skills/writing-skills/render-graphs.js +168 -0
- package/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/.ai/steering/product.md +51 -0
- package/.ai/steering/structure.md +275 -0
- package/.ai/steering/tech.md +188 -0
- package/.claude/agents/database-architect.md +96 -0
- package/.claude/agents/deployment-pipeline-architect.md +122 -0
- package/.claude/agents/nextjs-expert.md +69 -0
- package/.claude/agents/ui-design-expert.md +106 -0
- package/.claudeignore +69 -0
- package/.dockerignore +8 -0
- package/.env.development +86 -0
- package/.env.example +171 -0
- package/.env.production +139 -0
- package/.env.test +58 -0
- package/.gitattributes +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +33 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +20 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +23 -0
- package/.github/workflows/ci.yml +64 -0
- package/.github/workflows/release.yml +131 -0
- package/.nvmrc +1 -0
- package/.releaserc.json +18 -0
- package/.vercelignore +73 -0
- package/AGENTS.md +544 -0
- package/CHANGELOG.md +37 -0
- package/CODE_OF_CONDUCT.md +21 -0
- package/CONTRIBUTING.md +32 -0
- package/Dockerfile +84 -0
- package/LICENSE +21 -0
- package/README.md +328 -59
- package/SECURITY.md +16 -0
- package/bun.lock +3853 -0
- package/cli/README.md +94 -0
- package/cli/bun.lock +306 -0
- package/cli/index.ts +96 -0
- package/cli/package-lock.json +2157 -0
- package/cli/package.json +30 -0
- package/cli/src/commands/backup.ts +78 -0
- package/cli/src/commands/doctor.ts +82 -0
- package/cli/src/commands/init.ts +234 -0
- package/cli/src/commands/logs.ts +26 -0
- package/cli/src/commands/open.ts +23 -0
- package/cli/src/commands/remove.ts +44 -0
- package/cli/src/commands/restart.ts +21 -0
- package/cli/src/commands/restore.ts +90 -0
- package/cli/src/commands/start.ts +26 -0
- package/cli/src/commands/status.ts +25 -0
- package/cli/src/commands/stop.ts +20 -0
- package/cli/src/commands/upgrade.ts +28 -0
- package/cli/src/lib/docker.ts +40 -0
- package/cli/src/lib/env.ts +42 -0
- package/cli/src/lib/ui.ts +43 -0
- package/cli/tsconfig.json +13 -0
- package/cli/tsup.config.ts +12 -0
- package/components.json +24 -0
- package/docker/README.md +430 -0
- package/docker/compose.dev-minio.yml +30 -0
- package/docker/compose.dev.yml +39 -0
- package/docker/compose.local.yml +84 -0
- package/docker/compose.yml +153 -0
- package/docs/VERSIONING.md +117 -0
- package/docs/database/DRIZZLE_COMMANDS_EXPLAINED.md +1779 -0
- package/docs/database/DRIZZLE_ZOD_POSTGRESQL_INSTRUCTION.md +646 -0
- package/docs/database/MIGRATION_BEST_PRACTICES.md +601 -0
- package/docs/database/MIGRATION_ROLLBACK.md +1080 -0
- package/docs/database/MIGRATION_SYSTEM.md +165 -0
- package/docs/database/MIGRATION_TROUBLESHOOTING.md +881 -0
- package/docs/development/ENVIRONMENT_CONFIG.md +896 -0
- package/docs/development/LOCAL_DEVELOPMENT.md +456 -0
- package/docs/development/REMOTE_DATABASE_SETUP.md +786 -0
- package/docs/development/STORAGE_SETUP.md +207 -0
- package/docs/development/SUPABASE_LOCAL_SETUP.md +178 -0
- package/docs/development/TESTING.md +714 -0
- package/docs/feature-architectures/LOADING_ARCHITECTURE.md +343 -0
- package/docs/feature-architectures/NOTIFICATION_ARCHITECTURE.md +858 -0
- package/docs/feature-architectures/RATE_LIMIT_RESET.md +147 -0
- package/docs/feature-architectures/RBAC.md +1132 -0
- package/docs/feature-architectures/RESOURCE_LIMITS.md +69 -0
- package/docs/feature-architectures/SECURITY.md +284 -0
- package/docs/feature-architectures/WORKSPACES.md +278 -0
- package/docs/plans/admin-setup-wizard-routing-plan.md +623 -0
- package/drizzle/0000_purple_wilson_fisk.sql +360 -0
- package/drizzle/0001_drop_instance_public_url.sql +1 -0
- package/drizzle/meta/0000_snapshot.json +3118 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.ts +13 -0
- package/eslint.config.mjs +44 -0
- package/install.sh +180 -0
- package/next.config.ts +91 -0
- package/package.json +128 -22
- package/playwright.config.ts +70 -0
- package/postcss.config.mjs +7 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/logo.svg +11 -0
- package/public/next.svg +1 -0
- package/public/playground/CPM-101/as-is-image.jpg +0 -0
- package/public/playground/CPM-101/to-be-image.jpg +0 -0
- package/public/playground/TEST-1/LinkedIn-skeleton-screen.png +0 -0
- package/public/playground/TEST-1/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_vuahe90ka1mkx9aepmea.webp +0 -0
- package/public/playground/TEST-1/linkedin_skeletonscreen.jpg +0 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/scripts/__tests__/migrate.integration.test.ts +642 -0
- package/scripts/__tests__/migrate.property.test.ts +1714 -0
- package/scripts/__tests__/migrate.test.ts +536 -0
- package/scripts/admin-reset-password.ts +114 -0
- package/scripts/check-email-queue.ts +99 -0
- package/scripts/check-sessions.ts +50 -0
- package/scripts/db-pull-data.sh +73 -0
- package/scripts/force-verify-email.sh +13 -0
- package/scripts/migrate.ts +693 -0
- package/scripts/process-email-queue.ts +26 -0
- package/scripts/reset-db.ts +47 -0
- package/scripts/reset-rate-limit.sh +26 -0
- package/scripts/reset-remote-db.sql +31 -0
- package/scripts/retry-failed-emails.ts +67 -0
- package/scripts/seed.ts +605 -0
- package/scripts/setup-monitoring.sh +440 -0
- package/scripts/sync-migration-tracking.ts +113 -0
- package/scripts/test-ci-error-handling.sh +237 -0
- package/scripts/test-ci-workflow.sh +200 -0
- package/scripts/test-migration.sh +151 -0
- package/scripts/validate-env.ts +25 -0
- package/scripts/validate-migration-system.ts +566 -0
- package/scripts/verify-ci-status-reporting.sh +206 -0
- package/scripts/verify-user-email.sql +22 -0
- package/scripts/verify-vercel-integration.ts +292 -0
- package/seed_data.md +54 -0
- package/src/app/(protected)/(team)/(routes)/[projectSlug]/error.tsx +89 -0
- package/src/app/(protected)/(team)/(routes)/[projectSlug]/loading.tsx +101 -0
- package/src/app/(protected)/(team)/(routes)/[projectSlug]/page.tsx +91 -0
- package/src/app/(protected)/(team)/(routes)/issue/[issueKey]/README.md +192 -0
- package/src/app/(protected)/(team)/(routes)/issue/[issueKey]/error.tsx +58 -0
- package/src/app/(protected)/(team)/(routes)/issue/[issueKey]/loading.tsx +14 -0
- package/src/app/(protected)/(team)/(routes)/issue/[issueKey]/not-found.tsx +47 -0
- package/src/app/(protected)/(team)/(routes)/issue/[issueKey]/page.tsx +91 -0
- package/src/app/(protected)/(team)/projects/page.tsx +16 -0
- package/src/app/(protected)/(team)/team/settings/(section)/instance/page.tsx +52 -0
- package/src/app/(protected)/(team)/team/settings/(section)/integrations/loading.tsx +5 -0
- package/src/app/(protected)/(team)/team/settings/(section)/integrations/page.tsx +23 -0
- package/src/app/(protected)/(team)/team/settings/(section)/members/loading.tsx +5 -0
- package/src/app/(protected)/(team)/team/settings/(section)/members/page.tsx +35 -0
- package/src/app/(protected)/(team)/team/settings/layout.tsx +72 -0
- package/src/app/(protected)/(team)/team/settings/loading.tsx +5 -0
- package/src/app/(protected)/(team)/team/settings/page.tsx +71 -0
- package/src/app/(protected)/dev/auth/README.md +151 -0
- package/src/app/(protected)/dev/auth/page.tsx +590 -0
- package/src/app/(protected)/layout.test.tsx +209 -0
- package/src/app/(protected)/layout.tsx +28 -0
- package/src/app/(protected)/onboarding/page.tsx +27 -0
- package/src/app/(protected)/settings/integrations/page.tsx +23 -0
- package/src/app/(protected)/settings/layout.tsx +26 -0
- package/src/app/(protected)/settings/notifications/page.tsx +26 -0
- package/src/app/(protected)/settings/other/page.tsx +23 -0
- package/src/app/(protected)/settings/page.tsx +23 -0
- package/src/app/(protected)/settings/preferences/page.tsx +23 -0
- package/src/app/(protected)/settings/security/page.tsx +37 -0
- package/src/app/(public)/forgot-password/page.tsx +20 -0
- package/src/app/(public)/invite/project/[token]/error.tsx +50 -0
- package/src/app/(public)/invite/project/[token]/loading.tsx +39 -0
- package/src/app/(public)/invite/project/[token]/page.tsx +156 -0
- package/src/app/(public)/layout.tsx +9 -0
- package/src/app/(public)/privacy-policy/page.tsx +12 -0
- package/src/app/(public)/reset-password/page.tsx +37 -0
- package/src/app/(public)/setup/__tests__/page.test.tsx +30 -0
- package/src/app/(public)/setup/page.tsx +17 -0
- package/src/app/(public)/share/issue/[token]/page.tsx +51 -0
- package/src/app/(public)/sign-in/page.tsx +55 -0
- package/src/app/(public)/sign-up/page.tsx +23 -0
- package/src/app/(public)/verify-email/page.tsx +22 -0
- package/src/app/(public)/verify-email-confirm/page.tsx +40 -0
- package/src/app/api/auth/[...all]/route.ts +6 -0
- package/src/app/api/auth/delete-account/route.ts +134 -0
- package/src/app/api/auth/dev/force-verify/route.ts +180 -0
- package/src/app/api/auth/dev/reset-rate-limit/route.ts +144 -0
- package/src/app/api/auth/dev/sessions/route.ts +172 -0
- package/src/app/api/auth/forgot-password/__tests__/forgot-password.property.test.ts +397 -0
- package/src/app/api/auth/forgot-password/route.ts +277 -0
- package/src/app/api/auth/logout/route.ts +115 -0
- package/src/app/api/auth/me/route.ts +123 -0
- package/src/app/api/auth/providers/__tests__/route.test.ts +236 -0
- package/src/app/api/auth/providers/route.ts +119 -0
- package/src/app/api/auth/resend-verification/route.ts +262 -0
- package/src/app/api/auth/reset-password/__tests__/reset-password.property.test.ts +493 -0
- package/src/app/api/auth/reset-password/__tests__/route.test.ts +284 -0
- package/src/app/api/auth/reset-password/route.ts +251 -0
- package/src/app/api/auth/verify-email/route.ts +232 -0
- package/src/app/api/example-cors/route.ts +61 -0
- package/src/app/api/health/route.ts +14 -0
- package/src/app/api/invite/project/[token]/__tests__/accept-invitation.integration.test.ts +348 -0
- package/src/app/api/invite/project/[token]/decline/route.ts +99 -0
- package/src/app/api/invite/project/[token]/route.ts +269 -0
- package/src/app/api/issues/[issueId]/activities/route.ts +213 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/annotations/[annotationId]/comments/[commentId]/route.ts +486 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/annotations/[annotationId]/comments/route.ts +283 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/annotations/[annotationId]/read/route.ts +242 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/annotations/[annotationId]/route.ts +534 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/annotations/route.ts +514 -0
- package/src/app/api/issues/[issueId]/attachments/[attachmentId]/route.ts +161 -0
- package/src/app/api/issues/[issueId]/attachments/route.ts +376 -0
- package/src/app/api/issues/[issueId]/route.ts +516 -0
- package/src/app/api/notifications/[id]/read/route.ts +131 -0
- package/src/app/api/notifications/__tests__/notifications.integration.test.ts +350 -0
- package/src/app/api/notifications/read-all/route.ts +72 -0
- package/src/app/api/notifications/route.ts +148 -0
- package/src/app/api/notifications/unread-count/route.ts +77 -0
- package/src/app/api/projects/[id]/activities/route.ts +174 -0
- package/src/app/api/projects/[id]/invitations/[invitationId]/resend/route.ts +99 -0
- package/src/app/api/projects/[id]/invitations/[invitationId]/route.ts +96 -0
- package/src/app/api/projects/[id]/invitations/route.ts +254 -0
- package/src/app/api/projects/[id]/issues/route.ts +452 -0
- package/src/app/api/projects/[id]/join/route.ts +207 -0
- package/src/app/api/projects/[id]/members/[memberId]/route.ts +364 -0
- package/src/app/api/projects/[id]/members/me/route.ts +121 -0
- package/src/app/api/projects/[id]/members/route.ts +129 -0
- package/src/app/api/projects/[id]/route.ts +476 -0
- package/src/app/api/projects/route.ts +394 -0
- package/src/app/api/setup/admin/route.ts +255 -0
- package/src/app/api/setup/complete/__tests__/route.test.ts +60 -0
- package/src/app/api/setup/complete/route.ts +244 -0
- package/src/app/api/setup/config/route.ts +195 -0
- package/src/app/api/setup/export/route.ts +111 -0
- package/src/app/api/setup/health/route.ts +74 -0
- package/src/app/api/setup/import/route.ts +154 -0
- package/src/app/api/setup/status/route.ts +82 -0
- package/src/app/api/setup/workspace/route.ts +252 -0
- package/src/app/api/teams/[teamId]/export/route.ts +115 -0
- package/src/app/api/teams/[teamId]/invitations/[invitationId]/resend/route.ts +132 -0
- package/src/app/api/teams/[teamId]/invitations/[invitationId]/route.ts +117 -0
- package/src/app/api/teams/[teamId]/invitations/route.ts +363 -0
- package/src/app/api/teams/[teamId]/members/[userId]/route.ts +335 -0
- package/src/app/api/teams/[teamId]/members/route.ts +184 -0
- package/src/app/api/teams/[teamId]/members/search/route.ts +202 -0
- package/src/app/api/teams/[teamId]/route.ts +423 -0
- package/src/app/api/teams/[teamId]/switch/route.ts +140 -0
- package/src/app/api/teams/[teamId]/transfer-ownership/route.ts +212 -0
- package/src/app/api/teams/invitations/[token]/accept/route.ts +140 -0
- package/src/app/api/teams/invitations/by-id/[id]/accept/route.ts +98 -0
- package/src/app/api/teams/invitations/by-id/[id]/decline/route.ts +90 -0
- package/src/app/api/teams/route.ts +278 -0
- package/src/app/api/uploads/media/route.ts +118 -0
- package/src/app/api/uploads/presigned/route.ts +49 -0
- package/src/app/api/user/linked-accounts/route.ts +35 -0
- package/src/app/email-preview/page.tsx +11 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/global-error.tsx +21 -0
- package/src/app/layout.tsx +50 -0
- package/src/app/page.tsx +5 -0
- package/src/components/icons/atlassian-icon.tsx +22 -0
- package/src/components/icons/index.ts +1 -0
- package/src/components/layout/SIDEBAR_LAYOUT_BEST_PRACTICES.md +240 -0
- package/src/components/layout/app-shell-header-store.tsx +20 -0
- package/src/components/layout/app-shell-skeleton.tsx +89 -0
- package/src/components/layout/app-shell-wrapper.tsx +32 -0
- package/src/components/layout/app-shell.test.tsx +155 -0
- package/src/components/layout/app-shell.tsx +100 -0
- package/src/components/shared/headers/app-header-configurator.tsx +42 -0
- package/src/components/shared/headers/app-header.tsx +103 -0
- package/src/components/shared/headers/header-user-menu.tsx +247 -0
- package/src/components/shared/headers/index.ts +44 -0
- package/src/components/shared/headers/page-header.tsx +25 -0
- package/src/components/shared/notifications/__tests__/notification-bell.test.tsx +159 -0
- package/src/components/shared/notifications/__tests__/notification-dropdown.test.tsx +296 -0
- package/src/components/shared/notifications/__tests__/notification-item.test.tsx +328 -0
- package/src/components/shared/notifications/index.ts +45 -0
- package/src/components/shared/notifications/notification-actions.tsx +295 -0
- package/src/components/shared/notifications/notification-bell-button.tsx +77 -0
- package/src/components/shared/notifications/notification-dropdown.tsx +160 -0
- package/src/components/shared/notifications/notification-group-item.tsx +268 -0
- package/src/components/shared/notifications/notification-item.tsx +193 -0
- package/src/components/shared/notifications/notification-load-more.tsx +50 -0
- package/src/components/shared/notifications/notification-panel.tsx +49 -0
- package/src/components/shared/notifications/utils.tsx +127 -0
- package/src/components/shared/permission-guard/index.ts +1 -0
- package/src/components/shared/permission-guard/permission-tooltip.tsx +45 -0
- package/src/components/shared/relative-time.tsx +53 -0
- package/src/components/shared/section-container.tsx +32 -0
- package/src/components/shared/service-status-banner.tsx +121 -0
- package/src/components/shared/settings-sidebar/index.ts +2 -0
- package/src/components/shared/settings-sidebar/team-setting-aside.tsx +97 -0
- package/src/components/shared/settings-sidebar/user-settings-aside.tsx +66 -0
- package/src/components/shared/sidebar/app-sidebar.tsx +146 -0
- package/src/components/shared/sidebar/index.ts +36 -0
- package/src/components/shared/sidebar/sidebar-main.tsx +81 -0
- package/src/components/shared/sidebar/sidebar-project.tsx +61 -0
- package/src/components/shared/sidebar/sidebar-team-avatar.tsx +126 -0
- package/src/components/shared/sidebar/sidebar-team-switcher.tsx +185 -0
- package/src/components/shared/sidebar/type.ts +97 -0
- package/src/components/ui/alert-dialog.tsx +157 -0
- package/src/components/ui/alert.tsx +66 -0
- package/src/components/ui/avatar-upload.tsx +147 -0
- package/src/components/ui/avatar.tsx +53 -0
- package/src/components/ui/badge.tsx +46 -0
- package/src/components/ui/breadcrumb.tsx +109 -0
- package/src/components/ui/button.tsx +60 -0
- package/src/components/ui/card.tsx +92 -0
- package/src/components/ui/checkbox.tsx +32 -0
- package/src/components/ui/collapsible.tsx +33 -0
- package/src/components/ui/command.tsx +184 -0
- package/src/components/ui/dialog.tsx +143 -0
- package/src/components/ui/dropdown-menu.tsx +257 -0
- package/src/components/ui/empty.tsx +104 -0
- package/src/components/ui/field.tsx +244 -0
- package/src/components/ui/image-cropper-dialog.tsx +167 -0
- package/src/components/ui/input.tsx +21 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/optimized-image.tsx +220 -0
- package/src/components/ui/pagination.tsx +127 -0
- package/src/components/ui/popover.tsx +48 -0
- package/src/components/ui/progress.tsx +31 -0
- package/src/components/ui/radio-group.tsx +45 -0
- package/src/components/ui/scroll-area.tsx +58 -0
- package/src/components/ui/select.tsx +187 -0
- package/src/components/ui/separator.tsx +28 -0
- package/src/components/ui/sheet.tsx +139 -0
- package/src/components/ui/sidebar.tsx +733 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/sonner.tsx +40 -0
- package/src/components/ui/spinner.tsx +16 -0
- package/src/components/ui/switch.tsx +31 -0
- package/src/components/ui/table.tsx +116 -0
- package/src/components/ui/tabs.tsx +66 -0
- package/src/components/ui/textarea.tsx +23 -0
- package/src/components/ui/tooltip.tsx +61 -0
- package/src/config/__tests__/workspace.property.test.ts +40 -0
- package/src/config/auth.ts +62 -0
- package/src/config/integrations.ts +126 -0
- package/src/config/quotas.ts +20 -0
- package/src/config/roles.ts +463 -0
- package/src/config/settings-nav.ts +39 -0
- package/src/config/team-settings-nav.ts +37 -0
- package/src/config/user-settings-nav.ts +42 -0
- package/src/config/version.ts +1 -0
- package/src/config/workspace.ts +64 -0
- package/src/features/annotations/README.md +283 -0
- package/src/features/annotations/api/annotations-api.ts +194 -0
- package/src/features/annotations/api/comments-api.ts +147 -0
- package/src/features/annotations/api/index.ts +71 -0
- package/src/features/annotations/api/save-annotation.ts +150 -0
- package/src/features/annotations/api/schemas.ts +142 -0
- package/src/features/annotations/components/annotated-attachment-view.tsx +576 -0
- package/src/features/annotations/components/annotation-action-sheet.tsx +140 -0
- package/src/features/annotations/components/annotation-annotations-panel.tsx +213 -0
- package/src/features/annotations/components/annotation-box.tsx +539 -0
- package/src/features/annotations/components/annotation-canvas.tsx +534 -0
- package/src/features/annotations/components/annotation-comment-input.tsx +145 -0
- package/src/features/annotations/components/annotation-context-menu.tsx +164 -0
- package/src/features/annotations/components/annotation-drawer.tsx +231 -0
- package/src/features/annotations/components/annotation-layer.tsx +271 -0
- package/src/features/annotations/components/annotation-pin.tsx +318 -0
- package/src/features/annotations/components/annotation-popover.tsx +562 -0
- package/src/features/annotations/components/annotation-thread-panel.tsx +485 -0
- package/src/features/annotations/components/annotation-thread-preview.tsx +195 -0
- package/src/features/annotations/components/annotation-toolbar.tsx +244 -0
- package/src/features/annotations/components/keyboard-shortcuts-modal.tsx +79 -0
- package/src/features/annotations/docs/ANNOTATIONS_ARCHITECTURE.md +67 -0
- package/src/features/annotations/docs/ANNOTATION_SAVE_ARCHITECTURE.md +422 -0
- package/src/features/annotations/docs/ANNOTATION_SAVE_FEATURE.md +408 -0
- package/src/features/annotations/docs/BOX_ANNOTATION_GUIDE.md +542 -0
- package/src/features/annotations/docs/NEXTSTEP.md +28 -0
- package/src/features/annotations/docs/STALE_CLOSURE_FIX.md +344 -0
- package/src/features/annotations/docs/UNDO_REDO_QUICK_START.md +545 -0
- package/src/features/annotations/docs/local_first_canvas_autosave_architecture.md +674 -0
- package/src/features/annotations/examples/complete-example.tsx +266 -0
- package/src/features/annotations/examples/save-annotation-example.tsx +309 -0
- package/src/features/annotations/hooks/__tests__/use-annotation-permissions.property.test.tsx +493 -0
- package/src/features/annotations/hooks/index.ts +36 -0
- package/src/features/annotations/hooks/use-annotation-batch-save.ts +109 -0
- package/src/features/annotations/hooks/use-annotation-comments.ts +353 -0
- package/src/features/annotations/hooks/use-annotation-drafts.ts +137 -0
- package/src/features/annotations/hooks/use-annotation-edit-state.ts +99 -0
- package/src/features/annotations/hooks/use-annotation-history-tracker.ts +159 -0
- package/src/features/annotations/hooks/use-annotation-integration.ts +916 -0
- package/src/features/annotations/hooks/use-annotation-permissions.ts +210 -0
- package/src/features/annotations/hooks/use-annotation-popover.ts +175 -0
- package/src/features/annotations/hooks/use-annotation-save.ts +208 -0
- package/src/features/annotations/hooks/use-annotation-tools.ts +237 -0
- package/src/features/annotations/hooks/use-annotations-with-history.ts +332 -0
- package/src/features/annotations/hooks/use-auto-save.ts +94 -0
- package/src/features/annotations/index.ts +111 -0
- package/src/features/annotations/types/annotation.ts +201 -0
- package/src/features/annotations/types/index.ts +28 -0
- package/src/features/annotations/utils/history-manager.ts +73 -0
- package/src/features/annotations/utils/index.ts +2 -0
- package/src/features/annotations/utils/map-attachments-to-threads.ts +28 -0
- package/src/features/annotations/utils/position-comment-input.ts +136 -0
- package/src/features/annotations/utils/re-sequence-labels.ts +92 -0
- package/src/features/annotations/utils/validate-annotation-label.ts +120 -0
- package/src/features/auth/api/types.ts +101 -0
- package/src/features/auth/components/__tests__/role-gate.test.tsx +448 -0
- package/src/features/auth/components/__tests__/social-login-buttons.test.tsx +313 -0
- package/src/features/auth/components/auth-card.tsx +36 -0
- package/src/features/auth/components/forgot-password-form.tsx +115 -0
- package/src/features/auth/components/index.ts +14 -0
- package/src/features/auth/components/invite-code-input.tsx +155 -0
- package/src/features/auth/components/invited-user-form.tsx +309 -0
- package/src/features/auth/components/onboarding-form.tsx +195 -0
- package/src/features/auth/components/password-strength-indicator.tsx +113 -0
- package/src/features/auth/components/reset-password-form.tsx +138 -0
- package/src/features/auth/components/role-gate.tsx +124 -0
- package/src/features/auth/components/self-registration-choice.tsx +153 -0
- package/src/features/auth/components/sign-in-form.tsx +159 -0
- package/src/features/auth/components/sign-up-form.tsx +158 -0
- package/src/features/auth/components/social-login-buttons.tsx +219 -0
- package/src/features/auth/hooks/__tests__/use-onboarding.test.tsx +109 -0
- package/src/features/auth/hooks/__tests__/use-session.test.tsx +160 -0
- package/src/features/auth/hooks/index.ts +15 -0
- package/src/features/auth/hooks/use-accept-invitation.ts +194 -0
- package/src/features/auth/hooks/use-delete-account.ts +86 -0
- package/src/features/auth/hooks/use-force-verify.ts +89 -0
- package/src/features/auth/hooks/use-forgot-password.ts +144 -0
- package/src/features/auth/hooks/use-link-account.ts +78 -0
- package/src/features/auth/hooks/use-linked-accounts.ts +88 -0
- package/src/features/auth/hooks/use-onboarding.ts +159 -0
- package/src/features/auth/hooks/use-resend-verification.ts +139 -0
- package/src/features/auth/hooks/use-reset-password.ts +151 -0
- package/src/features/auth/hooks/use-reset-rate-limit.ts +56 -0
- package/src/features/auth/hooks/use-self-registration.ts +202 -0
- package/src/features/auth/hooks/use-session.ts +81 -0
- package/src/features/auth/hooks/use-sessions.ts +59 -0
- package/src/features/auth/hooks/use-sign-in.ts +234 -0
- package/src/features/auth/hooks/use-sign-out.ts +88 -0
- package/src/features/auth/hooks/use-sign-up.ts +194 -0
- package/src/features/auth/hooks/use-unlink-account.ts +100 -0
- package/src/features/auth/hooks/use-verify-email-token.ts +125 -0
- package/src/features/auth/index.ts +75 -0
- package/src/features/auth/screens/forgot-password-screen.tsx +33 -0
- package/src/features/auth/screens/index.ts +7 -0
- package/src/features/auth/screens/onboarding-screen.tsx +49 -0
- package/src/features/auth/screens/reset-password-screen.tsx +33 -0
- package/src/features/auth/screens/sign-in-screen.tsx +61 -0
- package/src/features/auth/screens/sign-up-screen.tsx +37 -0
- package/src/features/auth/screens/verify-email-confirm-screen.tsx +286 -0
- package/src/features/auth/screens/verify-email-screen.tsx +146 -0
- package/src/features/auth/types/index.ts +14 -0
- package/src/features/auth/utils/__tests__/validators.test.ts +331 -0
- package/src/features/auth/utils/password-strength.ts +129 -0
- package/src/features/auth/utils/validators.ts +124 -0
- package/src/features/email-preview/actions/render-email.ts +21 -0
- package/src/features/email-preview/screens/email-preview-screen.tsx +81 -0
- package/src/features/folder-scaffold-template/index.ts +0 -0
- package/src/features/instance-settings/components/index.ts +6 -0
- package/src/features/instance-settings/components/instance-settings-form.tsx +180 -0
- package/src/features/instance-settings/components/instance-status-display.tsx +158 -0
- package/src/features/instance-settings/index.ts +7 -0
- package/src/features/instance-settings/screens/index.ts +5 -0
- package/src/features/instance-settings/screens/instance-settings-screen.tsx +59 -0
- package/src/features/issues/README.md +330 -0
- package/src/features/issues/api/create-issue.ts +19 -0
- package/src/features/issues/api/delete-issue.ts +27 -0
- package/src/features/issues/api/get-issue-activities.ts +58 -0
- package/src/features/issues/api/get-issue-details.ts +25 -0
- package/src/features/issues/api/get-project-issues-server.ts +44 -0
- package/src/features/issues/api/get-project-issues.ts +21 -0
- package/src/features/issues/api/index.ts +44 -0
- package/src/features/issues/api/update-issue.ts +31 -0
- package/src/features/issues/api/upload-attachment.ts +81 -0
- package/src/features/issues/components/activity-timeline.tsx +440 -0
- package/src/features/issues/components/canvas-state-indicator.tsx +90 -0
- package/src/features/issues/components/centered-canvas-view.tsx +739 -0
- package/src/features/issues/components/image-selector.tsx +123 -0
- package/src/features/issues/components/image-upload-zone.tsx +262 -0
- package/src/features/issues/components/infinite-canvas-background.tsx +163 -0
- package/src/features/issues/components/inline-editable-select.tsx +173 -0
- package/src/features/issues/components/inline-editable-text.tsx +225 -0
- package/src/features/issues/components/inline-editable-textarea.tsx +219 -0
- package/src/features/issues/components/inline-editable-user-select.tsx +202 -0
- package/src/features/issues/components/issue-deletion-dialog.tsx +142 -0
- package/src/features/issues/components/issue-details-panel.tsx +101 -0
- package/src/features/issues/components/issues-create-dialog.tsx +578 -0
- package/src/features/issues/components/issues-list-filter.tsx +312 -0
- package/src/features/issues/components/issues-list.tsx +151 -0
- package/src/features/issues/components/issues-priority-badge.tsx +77 -0
- package/src/features/issues/components/issues-status-badge.tsx +100 -0
- package/src/features/issues/components/metadata-section.tsx +389 -0
- package/src/features/issues/components/optimized-attachment-view.tsx +528 -0
- package/src/features/issues/components/optimized-image.tsx +257 -0
- package/src/features/issues/components/panel-header.tsx +186 -0
- package/src/features/issues/components/preload.ts +31 -0
- package/src/features/issues/components/priority-selector.tsx +101 -0
- package/src/features/issues/components/responsive-issue-layout-skeleton.tsx +139 -0
- package/src/features/issues/components/responsive-issue-layout.tsx +617 -0
- package/src/features/issues/components/status-selector.tsx +320 -0
- package/src/features/issues/components/type-selector.tsx +102 -0
- package/src/features/issues/components/upload-progress-overlay.tsx +35 -0
- package/src/features/issues/components/uploaded-image-preview.tsx +173 -0
- package/src/features/issues/components/workflow-control.tsx +318 -0
- package/src/features/issues/components/zoom-controls.tsx +150 -0
- package/src/features/issues/config/index.ts +47 -0
- package/src/features/issues/config/options.ts +323 -0
- package/src/features/issues/config/workflow.ts +102 -0
- package/src/features/issues/docs/ARCHITECTURE_DIAGRAM.md +321 -0
- package/src/features/issues/docs/BACKEND_ARCHITECTURE.md +194 -0
- package/src/features/issues/docs/IMAGE_COMPONENTS_ARCHITECTURE.md +363 -0
- package/src/features/issues/docs/IMAGE_COMPONENTS_IMPORTS.md +412 -0
- package/src/features/issues/docs/IMPLEMENTATION_CHECKLIST.md +210 -0
- package/src/features/issues/docs/ROUTE_SETUP_COMPLETE.md +242 -0
- package/src/features/issues/hooks/index.ts +78 -0
- package/src/features/issues/hooks/use-canvas-transform.ts +255 -0
- package/src/features/issues/hooks/use-create-issue.ts +28 -0
- package/src/features/issues/hooks/use-elastic-scroll.ts +296 -0
- package/src/features/issues/hooks/use-issue-activities.ts +71 -0
- package/src/features/issues/hooks/use-issue-delete.ts +84 -0
- package/src/features/issues/hooks/use-issue-details.ts +70 -0
- package/src/features/issues/hooks/use-issue-filters.ts +50 -0
- package/src/features/issues/hooks/use-issue-update.ts +93 -0
- package/src/features/issues/hooks/use-keyboard-shortcuts.ts +104 -0
- package/src/features/issues/hooks/use-optimized-image.ts +228 -0
- package/src/features/issues/hooks/use-project-issues.ts +14 -0
- package/src/features/issues/index.ts +65 -0
- package/src/features/issues/screens/issue-details-screen.tsx +207 -0
- package/src/features/issues/screens/issue-details-skeletons.tsx +295 -0
- package/src/features/issues/screens/issue-share-screen.tsx +56 -0
- package/src/features/issues/types/index.ts +48 -0
- package/src/features/issues/types/issue.ts +291 -0
- package/src/features/issues/utils/filter-issues.ts +141 -0
- package/src/features/issues/utils/index.ts +14 -0
- package/src/features/legal/index.ts +1 -0
- package/src/features/legal/screens/privacy-policy-screen.tsx +307 -0
- package/src/features/notifications/api/get-notifications.ts +58 -0
- package/src/features/notifications/api/get-unread-count.ts +37 -0
- package/src/features/notifications/api/index.ts +35 -0
- package/src/features/notifications/api/mark-all-as-read.ts +37 -0
- package/src/features/notifications/api/mark-as-read.ts +41 -0
- package/src/features/notifications/api/types.ts +109 -0
- package/src/features/notifications/hooks/__tests__/use-notification-subscription.test.ts +206 -0
- package/src/features/notifications/hooks/index.ts +28 -0
- package/src/features/notifications/hooks/use-mark-all-as-read.ts +106 -0
- package/src/features/notifications/hooks/use-mark-as-read.ts +106 -0
- package/src/features/notifications/hooks/use-notification-subscription.ts +244 -0
- package/src/features/notifications/hooks/use-notification-toast.ts +161 -0
- package/src/features/notifications/hooks/use-notifications.ts +80 -0
- package/src/features/notifications/hooks/use-unread-count.ts +60 -0
- package/src/features/notifications/index.ts +48 -0
- package/src/features/notifications/utils/group-notifications.ts +152 -0
- package/src/features/notifications/utils/index.ts +9 -0
- package/src/features/projects/api/create-invitation.ts +45 -0
- package/src/features/projects/api/create-project.ts +64 -0
- package/src/features/projects/api/delete-project.ts +50 -0
- package/src/features/projects/api/get-project-activities.ts +43 -0
- package/src/features/projects/api/get-project-members.ts +53 -0
- package/src/features/projects/api/get-project.ts +49 -0
- package/src/features/projects/api/get-projects.ts +61 -0
- package/src/features/projects/api/index.ts +27 -0
- package/src/features/projects/api/join-project.ts +52 -0
- package/src/features/projects/api/leave-project.ts +51 -0
- package/src/features/projects/api/list-invitations.ts +36 -0
- package/src/features/projects/api/remove-member.ts +60 -0
- package/src/features/projects/api/resend-invitation.ts +36 -0
- package/src/features/projects/api/revoke-invitation.ts +36 -0
- package/src/features/projects/api/types.ts +286 -0
- package/src/features/projects/api/update-member-role.ts +70 -0
- package/src/features/projects/api/update-project.ts +69 -0
- package/src/features/projects/components/__tests__/project-detail-activity-feed.test.tsx +106 -0
- package/src/features/projects/components/__tests__/project-invitation-dialog.test.tsx +211 -0
- package/src/features/projects/components/__tests__/project-member-manager-dialog.test.tsx +254 -0
- package/src/features/projects/components/index.ts +21 -0
- package/src/features/projects/components/project-actions.tsx +248 -0
- package/src/features/projects/components/project-create-dialog.tsx +410 -0
- package/src/features/projects/components/project-detail-activity-feed.tsx +206 -0
- package/src/features/projects/components/project-detail-header.tsx +103 -0
- package/src/features/projects/components/project-detail-overview.tsx +128 -0
- package/src/features/projects/components/project-icon-selector.test.tsx +49 -0
- package/src/features/projects/components/project-icon-selector.tsx +76 -0
- package/src/features/projects/components/project-invitation-dialog.tsx +368 -0
- package/src/features/projects/components/project-issues.tsx +128 -0
- package/src/features/projects/components/project-leave-button.tsx +69 -0
- package/src/features/projects/components/project-list-card.tsx +246 -0
- package/src/features/projects/components/project-list-filters.tsx +320 -0
- package/src/features/projects/components/project-member-manager-dialog.tsx +419 -0
- package/src/features/projects/components/project-settings-dialog.tsx +204 -0
- package/src/features/projects/components/project-stats.tsx +46 -0
- package/src/features/projects/components/project-title-section.tsx +78 -0
- package/src/features/projects/config/icons.ts +91 -0
- package/src/features/projects/hooks/index.ts +28 -0
- package/src/features/projects/hooks/use-create-invitation.ts +83 -0
- package/src/features/projects/hooks/use-create-project.ts +77 -0
- package/src/features/projects/hooks/use-delete-project.ts +84 -0
- package/src/features/projects/hooks/use-join-project.ts +43 -0
- package/src/features/projects/hooks/use-leave-project.ts +84 -0
- package/src/features/projects/hooks/use-project-activities.ts +39 -0
- package/src/features/projects/hooks/use-project-filters.ts +86 -0
- package/src/features/projects/hooks/use-project-invitations.ts +66 -0
- package/src/features/projects/hooks/use-project-members.ts +57 -0
- package/src/features/projects/hooks/use-project.ts +67 -0
- package/src/features/projects/hooks/use-projects.ts +49 -0
- package/src/features/projects/hooks/use-recent-projects.ts +58 -0
- package/src/features/projects/hooks/use-remove-member.ts +89 -0
- package/src/features/projects/hooks/use-resend-invitation.ts +68 -0
- package/src/features/projects/hooks/use-revoke-invitation.ts +71 -0
- package/src/features/projects/hooks/use-team-member-suggestions.ts +133 -0
- package/src/features/projects/hooks/use-update-member-role.ts +92 -0
- package/src/features/projects/hooks/use-update-project.ts +88 -0
- package/src/features/projects/index.ts +91 -0
- package/src/features/projects/screens/index.ts +3 -0
- package/src/features/projects/screens/invitation-acceptance-screen.tsx +320 -0
- package/src/features/projects/screens/project-detail-screen-wrapper.tsx +47 -0
- package/src/features/projects/screens/project-detail-screen.tsx +661 -0
- package/src/features/projects/screens/projects-list-screen.tsx +161 -0
- package/src/features/projects/types/index.ts +59 -0
- package/src/features/projects/utils/format-helpers.ts +16 -0
- package/src/features/projects/utils/index.ts +2 -0
- package/src/features/projects/utils/role-helpers.ts +25 -0
- package/src/features/setup/api/complete-setup.ts +21 -0
- package/src/features/setup/api/create-admin.ts +21 -0
- package/src/features/setup/api/create-first-workspace.ts +21 -0
- package/src/features/setup/api/get-instance-status.ts +12 -0
- package/src/features/setup/api/get-service-health.ts +12 -0
- package/src/features/setup/api/index.ts +44 -0
- package/src/features/setup/api/save-instance-config.ts +21 -0
- package/src/features/setup/api/types.ts +122 -0
- package/src/features/setup/components/__tests__/setup-wizard-ui.test.tsx +362 -0
- package/src/features/setup/components/admin-account-step.tsx +205 -0
- package/src/features/setup/components/first-workspace-step.tsx +120 -0
- package/src/features/setup/components/index.ts +9 -0
- package/src/features/setup/components/instance-config-step.tsx +107 -0
- package/src/features/setup/components/mail-config-step.tsx +205 -0
- package/src/features/setup/components/sample-data-step.tsx +131 -0
- package/src/features/setup/components/service-health-step.tsx +180 -0
- package/src/features/setup/components/service-status-badge.tsx +50 -0
- package/src/features/setup/components/setup-progress.tsx +103 -0
- package/src/features/setup/components/setup-wizard.tsx +169 -0
- package/src/features/setup/hooks/index.ts +12 -0
- package/src/features/setup/hooks/use-complete-setup.ts +23 -0
- package/src/features/setup/hooks/use-create-admin.ts +25 -0
- package/src/features/setup/hooks/use-create-first-workspace.ts +24 -0
- package/src/features/setup/hooks/use-instance-status.ts +21 -0
- package/src/features/setup/hooks/use-save-instance-config.ts +23 -0
- package/src/features/setup/hooks/use-service-health.ts +21 -0
- package/src/features/setup/hooks/use-setup-wizard.ts +152 -0
- package/src/features/setup/hooks/use-workspace-mode.ts +19 -0
- package/src/features/setup/index.ts +30 -0
- package/src/features/setup/screens/index.ts +1 -0
- package/src/features/setup/screens/setup-screen.tsx +40 -0
- package/src/features/setup/types/index.ts +69 -0
- package/src/features/setup/utils/index.ts +78 -0
- package/src/features/team-settings/components/index.ts +39 -0
- package/src/features/team-settings/components/loading-states.tsx +296 -0
- package/src/features/team-settings/components/permission-guard.tsx +23 -0
- package/src/features/team-settings/components/settings-card.tsx +22 -0
- package/src/features/team-settings/components/settings-context-provider.tsx +51 -0
- package/src/features/team-settings/components/settings-error-boundary.tsx +366 -0
- package/src/features/team-settings/components/settings-navigation.tsx +87 -0
- package/src/features/team-settings/components/settings-section.tsx +23 -0
- package/src/features/team-settings/components/team-danger-zone.tsx +275 -0
- package/src/features/team-settings/components/team-information-form.tsx +116 -0
- package/src/features/team-settings/components/team-invitations-list.tsx +463 -0
- package/src/features/team-settings/components/team-members-list.tsx +342 -0
- package/src/features/team-settings/components/team-permission-guard.tsx +56 -0
- package/src/features/team-settings/components/team-setting-integrations.tsx +27 -0
- package/src/features/team-settings/components/team-setting-member.tsx +28 -0
- package/src/features/team-settings/components/team-settings-general.tsx +131 -0
- package/src/features/team-settings/components/transfer-ownership-modal.tsx +164 -0
- package/src/features/team-settings/components/unauthorized-access.tsx +52 -0
- package/src/features/team-settings/hooks/__tests__/use-team-settings.test.tsx +139 -0
- package/src/features/team-settings/hooks/index.ts +1 -0
- package/src/features/team-settings/hooks/use-team-settings.ts +148 -0
- package/src/features/team-settings/hooks/use-transfer-ownership.ts +45 -0
- package/src/features/team-settings/index.ts +25 -0
- package/src/features/team-settings/screens/index.ts +1 -0
- package/src/features/team-settings/screens/team-settings-screen.tsx +33 -0
- package/src/features/team-settings/types/index.ts +78 -0
- package/src/features/team-settings/utils/index.ts +6 -0
- package/src/features/team-settings/utils/mock-data.ts +40 -0
- package/src/features/teams/api/cancel-invitation.ts +25 -0
- package/src/features/teams/api/create-invitation.ts +28 -0
- package/src/features/teams/api/create-team.ts +14 -0
- package/src/features/teams/api/delete-team.ts +19 -0
- package/src/features/teams/api/get-invitations.ts +25 -0
- package/src/features/teams/api/get-team-members.ts +25 -0
- package/src/features/teams/api/get-team.ts +13 -0
- package/src/features/teams/api/get-teams.ts +19 -0
- package/src/features/teams/api/index.ts +49 -0
- package/src/features/teams/api/leave-team.ts +22 -0
- package/src/features/teams/api/remove-member.ts +25 -0
- package/src/features/teams/api/resend-invitation.ts +26 -0
- package/src/features/teams/api/switch-team.ts +13 -0
- package/src/features/teams/api/types.ts +122 -0
- package/src/features/teams/api/update-member-roles.ts +28 -0
- package/src/features/teams/api/update-team.ts +17 -0
- package/src/features/teams/components/create-team-dialog.tsx +105 -0
- package/src/features/teams/hooks/__tests__/cache-invalidation.property.test.tsx +268 -0
- package/src/features/teams/hooks/index.ts +35 -0
- package/src/features/teams/hooks/use-can-manage-members.ts +21 -0
- package/src/features/teams/hooks/use-can-manage-team.ts +21 -0
- package/src/features/teams/hooks/use-cancel-invitation.ts +52 -0
- package/src/features/teams/hooks/use-create-invitation.ts +59 -0
- package/src/features/teams/hooks/use-create-team.ts +38 -0
- package/src/features/teams/hooks/use-delete-team.ts +43 -0
- package/src/features/teams/hooks/use-invitations.ts +31 -0
- package/src/features/teams/hooks/use-leave-team.ts +43 -0
- package/src/features/teams/hooks/use-remove-member.ts +58 -0
- package/src/features/teams/hooks/use-resend-invitation.ts +52 -0
- package/src/features/teams/hooks/use-switch-team.ts +41 -0
- package/src/features/teams/hooks/use-team-members.ts +31 -0
- package/src/features/teams/hooks/use-team-permissions.ts +102 -0
- package/src/features/teams/hooks/use-team.ts +30 -0
- package/src/features/teams/hooks/use-teams.ts +26 -0
- package/src/features/teams/hooks/use-update-member-roles.ts +64 -0
- package/src/features/teams/hooks/use-update-team.ts +47 -0
- package/src/features/teams/index.ts +111 -0
- package/src/features/user-settings/actions/set-password.ts +63 -0
- package/src/features/user-settings/api/index.ts +16 -0
- package/src/features/user-settings/components/__tests__/security-settings.test.tsx +125 -0
- package/src/features/user-settings/components/delete-account-dialog.tsx +185 -0
- package/src/features/user-settings/components/index.ts +13 -0
- package/src/features/user-settings/components/integrations-list.tsx +152 -0
- package/src/features/user-settings/components/notification-preferences.tsx +112 -0
- package/src/features/user-settings/components/other-settings.tsx +126 -0
- package/src/features/user-settings/components/password-section.tsx +297 -0
- package/src/features/user-settings/components/security-settings.tsx +184 -0
- package/src/features/user-settings/components/user-preferences.tsx +146 -0
- package/src/features/user-settings/hooks/index.ts +8 -0
- package/src/features/user-settings/hooks/use-notification-preferences.ts +65 -0
- package/src/features/user-settings/hooks/use-user-preferences.ts +52 -0
- package/src/features/user-settings/index.ts +22 -0
- package/src/features/user-settings/screens/index.ts +11 -0
- package/src/features/user-settings/screens/integrations-screen.tsx +24 -0
- package/src/features/user-settings/screens/notifications-screen.tsx +29 -0
- package/src/features/user-settings/screens/other-settings-screen.tsx +24 -0
- package/src/features/user-settings/screens/setting-preferences-screen.tsx +24 -0
- package/src/features/user-settings/screens/user-settings-screen.tsx +23 -0
- package/src/features/user-settings/types/index.ts +42 -0
- package/src/features/user-settings/utils/index.ts +8 -0
- package/src/hooks/use-long-press.ts +196 -0
- package/src/hooks/use-media-upload.ts +95 -0
- package/src/hooks/use-mobile.ts +19 -0
- package/src/hooks/use-team.ts +32 -0
- package/src/instrumentation.ts +14 -0
- package/src/lib/__tests__/auth-config.test.ts +166 -0
- package/src/lib/__tests__/config.test.ts +42 -0
- package/src/lib/__tests__/db.test.ts +101 -0
- package/src/lib/__tests__/env.property.test.ts +197 -0
- package/src/lib/__tests__/env.test.ts +177 -0
- package/src/lib/__tests__/health-check.test.ts +87 -0
- package/src/lib/__tests__/oauth-errors.test.ts +184 -0
- package/src/lib/__tests__/oauth-redirect.test.ts +224 -0
- package/src/lib/__tests__/oauth-scopes.test.ts +268 -0
- package/src/lib/__tests__/storage.test.ts +58 -0
- package/src/lib/__tests__/url-validator.test.ts +232 -0
- package/src/lib/api-client.ts +93 -0
- package/src/lib/auth-client.ts +5 -0
- package/src/lib/auth-config.ts +146 -0
- package/src/lib/auth.ts +209 -0
- package/src/lib/config.ts +228 -0
- package/src/lib/cors.ts +96 -0
- package/src/lib/date.ts +16 -0
- package/src/lib/db.ts +88 -0
- package/src/lib/env.ts +489 -0
- package/src/lib/feedback.ts +29 -0
- package/src/lib/health-check.ts +229 -0
- package/src/lib/logger.ts +204 -0
- package/src/lib/oauth-errors.ts +138 -0
- package/src/lib/performance.ts +367 -0
- package/src/lib/query-server.ts +35 -0
- package/src/lib/query.tsx +43 -0
- package/src/lib/resend.ts +36 -0
- package/src/lib/security-headers.ts +165 -0
- package/src/lib/setup-status.ts +34 -0
- package/src/lib/storage.ts +150 -0
- package/src/lib/supabase-client.ts +58 -0
- package/src/lib/testing/test-db.ts +75 -0
- package/src/lib/url-validator.ts +168 -0
- package/src/lib/utils.ts +6 -0
- package/src/mocks/README.md +42 -0
- package/src/mocks/activity.fixtures.ts +281 -0
- package/src/mocks/annotation.fixtures.ts +325 -0
- package/src/mocks/attachment.fixtures.ts +80 -0
- package/src/mocks/email.fixtures.ts +61 -0
- package/src/mocks/index.ts +33 -0
- package/src/mocks/issue.fixtures.ts +364 -0
- package/src/mocks/landing.fixtures.ts +118 -0
- package/src/mocks/notification.fixtures.ts +111 -0
- package/src/mocks/project-activity.fixtures.ts +69 -0
- package/src/mocks/project-invitation.fixtures.ts +95 -0
- package/src/mocks/project-member.fixtures.ts +93 -0
- package/src/mocks/project.fixtures.ts +249 -0
- package/src/mocks/settings.fixtures.ts +56 -0
- package/src/mocks/share.fixtures.ts +48 -0
- package/src/mocks/team-member.fixtures.ts +147 -0
- package/src/mocks/team.fixtures.ts +35 -0
- package/src/mocks/user-settings.fixtures.ts +77 -0
- package/src/mocks/user.fixtures.ts +21 -0
- package/src/providers/theme-provider.tsx +11 -0
- package/src/proxy/__tests__/proxy-setup-gate.test.ts +43 -0
- package/src/proxy.ts +169 -0
- package/src/server/annotations/__tests__/annotation-limit.property.test.ts +291 -0
- package/src/server/annotations/__tests__/attachment-deletion-cascade.property.test.ts +385 -0
- package/src/server/annotations/__tests__/comment-delete-authorization.property.test.ts +419 -0
- package/src/server/annotations/__tests__/sanitize.property.test.ts +302 -0
- package/src/server/annotations/annotation-service.ts +305 -0
- package/src/server/annotations/comment-service.ts +288 -0
- package/src/server/annotations/index.ts +61 -0
- package/src/server/annotations/permission-utils.ts +125 -0
- package/src/server/annotations/sanitize.ts +134 -0
- package/src/server/annotations/types.ts +161 -0
- package/src/server/audit/audit-service.ts +85 -0
- package/src/server/audit/index.ts +11 -0
- package/src/server/audit/types.ts +75 -0
- package/src/server/auth/__tests__/README.md +368 -0
- package/src/server/auth/__tests__/account-linking.integration.test.ts +410 -0
- package/src/server/auth/__tests__/auth-integration.test.ts +811 -0
- package/src/server/auth/__tests__/cookies.test.ts +337 -0
- package/src/server/auth/__tests__/login.property.test.ts +428 -0
- package/src/server/auth/__tests__/oauth-integration.test.ts +555 -0
- package/src/server/auth/__tests__/password.test.ts +194 -0
- package/src/server/auth/__tests__/rate-limiter.test.ts +450 -0
- package/src/server/auth/__tests__/rbac.test.ts +474 -0
- package/src/server/auth/__tests__/session.test.ts +599 -0
- package/src/server/auth/__tests__/signup.property.test.ts +224 -0
- package/src/server/auth/__tests__/token-encryption.test.ts +171 -0
- package/src/server/auth/__tests__/tokens.test.ts +476 -0
- package/src/server/auth/__tests__/verify-email.property.test.ts +372 -0
- package/src/server/auth/cookies.ts +184 -0
- package/src/server/auth/password.ts +94 -0
- package/src/server/auth/rate-limiter.ts +257 -0
- package/src/server/auth/rbac.ts +1168 -0
- package/src/server/auth/session.ts +392 -0
- package/src/server/auth/token-encryption.ts +201 -0
- package/src/server/auth/tokens.ts +397 -0
- package/src/server/db/schema/account.ts +21 -0
- package/src/server/db/schema/annotation-read-status.ts +57 -0
- package/src/server/db/schema/better-auth-verifications.ts +27 -0
- package/src/server/db/schema/email-jobs.ts +24 -0
- package/src/server/db/schema/index.ts +20 -0
- package/src/server/db/schema/instance-settings.ts +42 -0
- package/src/server/db/schema/issue-activities.ts +97 -0
- package/src/server/db/schema/issue-attachments.ts +101 -0
- package/src/server/db/schema/issues.ts +139 -0
- package/src/server/db/schema/notifications.ts +119 -0
- package/src/server/db/schema/project-activities.ts +116 -0
- package/src/server/db/schema/project-invitations.ts +34 -0
- package/src/server/db/schema/project-members.ts +29 -0
- package/src/server/db/schema/projects.ts +46 -0
- package/src/server/db/schema/sessions.ts +17 -0
- package/src/server/db/schema/team-invitations.ts +22 -0
- package/src/server/db/schema/team-members.ts +18 -0
- package/src/server/db/schema/teams.ts +15 -0
- package/src/server/db/schema/user-roles.ts +14 -0
- package/src/server/db/schema/users.ts +17 -0
- package/src/server/db/schema/verification-tokens.ts +15 -0
- package/src/server/email/README.md +258 -0
- package/src/server/email/__tests__/client.property.test.ts +218 -0
- package/src/server/email/__tests__/payload.property.test.ts +205 -0
- package/src/server/email/__tests__/queue.test.ts +407 -0
- package/src/server/email/__tests__/render-template.test.tsx +172 -0
- package/src/server/email/client.ts +70 -0
- package/src/server/email/index.ts +20 -0
- package/src/server/email/providers/console-provider.ts +43 -0
- package/src/server/email/providers/index.ts +5 -0
- package/src/server/email/providers/resend-provider.ts +59 -0
- package/src/server/email/providers/smtp-provider.ts +65 -0
- package/src/server/email/queue.ts +365 -0
- package/src/server/email/render-template.tsx +117 -0
- package/src/server/email/templates/layout.tsx +66 -0
- package/src/server/email/templates/ownership-transfer-email.tsx +75 -0
- package/src/server/email/templates/password-reset-email.tsx +72 -0
- package/src/server/email/templates/project-invitation-email.tsx +70 -0
- package/src/server/email/templates/security-alert-email.tsx +161 -0
- package/src/server/email/templates/team-invitation-email.tsx +68 -0
- package/src/server/email/templates/verification-email.tsx +61 -0
- package/src/server/email/templates/welcome-email.tsx +60 -0
- package/src/server/email/worker.ts +182 -0
- package/src/server/issues/activity-service.ts +422 -0
- package/src/server/issues/attachment-service.ts +379 -0
- package/src/server/issues/index.ts +68 -0
- package/src/server/issues/issue-service.ts +569 -0
- package/src/server/issues/types.ts +233 -0
- package/src/server/notifications/__tests__/notification-service.integration.test.ts +405 -0
- package/src/server/notifications/index.ts +13 -0
- package/src/server/notifications/notification-service.ts +526 -0
- package/src/server/notifications/types.ts +234 -0
- package/src/server/projects/__tests__/activity-logging.integration.test.ts +319 -0
- package/src/server/projects/__tests__/invitation-email.integration.test.ts +258 -0
- package/src/server/projects/__tests__/invitation-service.integration.test.ts +651 -0
- package/src/server/projects/__tests__/member-service.property.test.ts +397 -0
- package/src/server/projects/__tests__/project-service.property.test.ts +116 -0
- package/src/server/projects/activity-service.ts +548 -0
- package/src/server/projects/index.ts +11 -0
- package/src/server/projects/invitation-service.ts +773 -0
- package/src/server/projects/member-service.ts +458 -0
- package/src/server/projects/project-service.ts +491 -0
- package/src/server/projects/schemas.ts +310 -0
- package/src/server/projects/types.ts +166 -0
- package/src/server/projects/utils.ts +128 -0
- package/src/server/setup/__tests__/health-check.property.test.ts +70 -0
- package/src/server/setup/__tests__/sample-data.property.test.ts +82 -0
- package/src/server/setup/__tests__/setup.property.test.ts +95 -0
- package/src/server/setup/health-check-service.ts +294 -0
- package/src/server/setup/index.ts +35 -0
- package/src/server/setup/sample-data-service.ts +233 -0
- package/src/server/setup/setup-service.ts +229 -0
- package/src/server/setup/types.ts +96 -0
- package/src/server/teams/__tests__/export.property.test.ts +542 -0
- package/src/server/teams/__tests__/get-members.integration.test.ts +105 -0
- package/src/server/teams/__tests__/invitation-flow.integration.test.ts +402 -0
- package/src/server/teams/__tests__/invitations.property.test.ts +235 -0
- package/src/server/teams/__tests__/member-management-flow.integration.test.ts +306 -0
- package/src/server/teams/__tests__/members.property.test.ts +180 -0
- package/src/server/teams/__tests__/ownership-transfer.property.test.ts +173 -0
- package/src/server/teams/__tests__/resource-limits.property.test.ts +382 -0
- package/src/server/teams/__tests__/team-context-management.integration.test.ts +396 -0
- package/src/server/teams/__tests__/team-context.property.test.ts +854 -0
- package/src/server/teams/__tests__/team-creation-flow.integration.test.ts +310 -0
- package/src/server/teams/__tests__/team-creation.property.test.ts +280 -0
- package/src/server/teams/errors.ts +396 -0
- package/src/server/teams/export-service.ts +383 -0
- package/src/server/teams/index.ts +10 -0
- package/src/server/teams/invitation-service.ts +708 -0
- package/src/server/teams/member-service.ts +334 -0
- package/src/server/teams/resource-limits.ts +211 -0
- package/src/server/teams/slug.ts +58 -0
- package/src/server/teams/team-context.ts +648 -0
- package/src/server/teams/team-service.ts +660 -0
- package/src/server/teams/types.ts +81 -0
- package/src/server/teams/validation.ts +209 -0
- package/src/styles/globals.css +160 -0
- package/src/types/deployment.ts +39 -0
- package/supabase/config.toml +357 -0
- package/supabase/seed.sql +480 -0
- package/tests/e2e/.gitkeep +0 -0
- package/tests/e2e/QUICK_START.md +98 -0
- package/tests/e2e/README.md +301 -0
- package/tests/e2e/auth.spec.ts +583 -0
- package/tests/e2e/global-setup.ts +23 -0
- package/tests/e2e/global-teardown.ts +23 -0
- package/tests/e2e/helpers/auth-helpers.ts +310 -0
- package/tests/e2e/helpers/test-fixtures.ts +286 -0
- package/tests/e2e/smoke-test.spec.ts +330 -0
- package/tsconfig.json +48 -0
- package/vitest.config.ts +50 -0
- package/vitest.setup.ts +56 -0
- package/dist/index.js +0 -778
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deployment-pipeline-architect
|
|
3
|
+
description: Use this agent when designing, implementing, or troubleshooting CI/CD pipelines, deployment workflows, or release automation. This includes:\n\n<example>\nContext: User is working on setting up automated deployments for a new microservice.\nuser: "I need to set up a GitHub Actions workflow to deploy my Node.js API to production whenever I merge to main. It should run tests first and deploy to staging before production."\nassistant: "I'll use the deployment-pipeline-architect agent to design a comprehensive CI/CD pipeline for your deployment requirements."\n<Task tool call to deployment-pipeline-architect agent>\n</example>\n\n<example>\nContext: User has just created infrastructure configuration files and needs deployment automation.\nuser: "Here's my Terraform configuration for our new environment"\nassistant: "I can see your infrastructure code. Let me engage the deployment-pipeline-architect agent to create a robust deployment pipeline that handles your Terraform deployments with proper validation, planning, and safe apply workflows."\n<Task tool call to deployment-pipeline-architect agent>\n</example>\n\n<example>\nContext: User is experiencing deployment failures in their existing pipeline.\nuser: "My GitHub Actions workflow keeps failing during the deployment step with timeout errors"\nassistant: "I'll use the deployment-pipeline-architect agent to analyze your workflow configuration and identify the root cause of the timeout issues, then provide solutions for more reliable deployments."\n<Task tool call to deployment-pipeline-architect agent>\n</example>\n\n<example>\nContext: User mentions wanting to improve their release process.\nuser: "Our deployments are manual and error-prone. We need something better."\nassistant: "Let me bring in the deployment-pipeline-architect agent to design an automated deployment strategy that eliminates manual steps and reduces deployment risks."\n<Task tool call to deployment-pipeline-architect agent>\n</example>\n\nProactively use this agent when you detect discussions about: deployment strategies, release management, artifact versioning, rollback procedures, blue-green or canary deployments, GitOps workflows, deployment security, pipeline optimization, or V0-specific deployment patterns.
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: orange
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a senior DevOps engineer and deployment pipeline architect with deep expertise in CI/CD automation, release orchestration, and production deployment strategies. Your specializations include GitHub Actions workflows, V0 deployment patterns, GitOps methodologies, and enterprise-grade deployment automation.
|
|
9
|
+
|
|
10
|
+
## Core Responsibilities
|
|
11
|
+
|
|
12
|
+
You will design, implement, and optimize deployment pipelines that are:
|
|
13
|
+
- **Reliable**: Include comprehensive testing, validation gates, and automated rollback mechanisms
|
|
14
|
+
- **Fast**: Optimize build times, parallel execution, and efficient artifact management
|
|
15
|
+
- **Safe**: Implement progressive delivery, deployment gates, and production safeguards
|
|
16
|
+
- **Observable**: Integrate monitoring, logging, and deployment tracking
|
|
17
|
+
- **Maintainable**: Create clear, well-documented, and modular pipeline configurations
|
|
18
|
+
|
|
19
|
+
## Approach to Pipeline Design
|
|
20
|
+
|
|
21
|
+
When designing or reviewing deployment workflows:
|
|
22
|
+
|
|
23
|
+
1. **Understand the Full Context**
|
|
24
|
+
- Clarify the application architecture (microservices, monolith, serverless, etc.)
|
|
25
|
+
- Identify deployment targets (cloud platforms, container orchestration, edge networks)
|
|
26
|
+
- Determine environment topology (dev, staging, production, multi-region)
|
|
27
|
+
- Understand current pain points and deployment frequency requirements
|
|
28
|
+
- Consider compliance, security, and audit requirements
|
|
29
|
+
|
|
30
|
+
2. **Apply Deployment Best Practices**
|
|
31
|
+
- Implement deployment strategies appropriate to the use case (rolling, blue-green, canary)
|
|
32
|
+
- Design for zero-downtime deployments when possible
|
|
33
|
+
- Include automated testing at multiple stages (unit, integration, smoke, E2E)
|
|
34
|
+
- Use immutable artifacts - build once, deploy many times
|
|
35
|
+
- Implement proper secret management (never hardcode credentials)
|
|
36
|
+
- Version all deployment artifacts and maintain traceability
|
|
37
|
+
- Design idempotent deployment scripts
|
|
38
|
+
|
|
39
|
+
3. **GitHub Actions Workflow Structure**
|
|
40
|
+
- Use reusable workflows for common patterns
|
|
41
|
+
- Implement job dependencies and proper workflow orchestration
|
|
42
|
+
- Leverage matrix strategies for parallel testing across environments
|
|
43
|
+
- Use environment protection rules and manual approval gates for production
|
|
44
|
+
- Implement caching strategies for dependencies and build artifacts
|
|
45
|
+
- Use concurrency controls to prevent deployment conflicts
|
|
46
|
+
- Structure secrets and variables appropriately (repository, environment, organization levels)
|
|
47
|
+
|
|
48
|
+
4. **V0 Deployment Specifics**
|
|
49
|
+
- Leverage V0's deployment APIs and CLI tools effectively
|
|
50
|
+
- Implement proper preview deployment workflows for pull requests
|
|
51
|
+
- Configure production deployment triggers and promotion strategies
|
|
52
|
+
- Use V0's environment variables and secrets management
|
|
53
|
+
- Integrate with V0's build and deployment hooks
|
|
54
|
+
- Monitor deployment status and implement proper error handling
|
|
55
|
+
|
|
56
|
+
5. **Pipeline Security and Compliance**
|
|
57
|
+
- Implement least-privilege access for deployment credentials
|
|
58
|
+
- Use OIDC/Workload Identity Federation when available
|
|
59
|
+
- Scan for vulnerabilities in dependencies and container images
|
|
60
|
+
- Implement artifact signing and verification
|
|
61
|
+
- Maintain audit logs of all deployments
|
|
62
|
+
- Use branch protection rules and required reviews
|
|
63
|
+
- Implement secrets rotation and expiration policies
|
|
64
|
+
|
|
65
|
+
6. **Quality Gates and Validation**
|
|
66
|
+
- Define clear success/failure criteria at each stage
|
|
67
|
+
- Implement automated smoke tests post-deployment
|
|
68
|
+
- Use health checks and readiness probes
|
|
69
|
+
- Implement automated rollback on failure detection
|
|
70
|
+
- Configure deployment timeouts appropriately
|
|
71
|
+
- Validate infrastructure state before and after deployments
|
|
72
|
+
|
|
73
|
+
## Output Standards
|
|
74
|
+
|
|
75
|
+
When providing pipeline configurations:
|
|
76
|
+
|
|
77
|
+
- **Complete and Runnable**: Provide full, working YAML configurations, not fragments
|
|
78
|
+
- **Well-Commented**: Explain non-obvious decisions and configurations
|
|
79
|
+
- **Parameterized**: Use variables and inputs for flexibility across environments
|
|
80
|
+
- **Error Handling**: Include try-catch blocks, failure notifications, and rollback procedures
|
|
81
|
+
- **Documentation**: Provide setup instructions, required secrets, and usage guidelines
|
|
82
|
+
|
|
83
|
+
## Decision-Making Framework
|
|
84
|
+
|
|
85
|
+
When choosing between approaches:
|
|
86
|
+
|
|
87
|
+
1. **Prioritize Safety**: When in doubt, choose the more cautious approach with additional validation
|
|
88
|
+
2. **Start Simple**: Begin with straightforward implementations, then optimize
|
|
89
|
+
3. **Measure First**: Base optimization decisions on metrics, not assumptions
|
|
90
|
+
4. **Consider Team Context**: Match complexity to team capabilities and maintenance capacity
|
|
91
|
+
5. **Plan for Failure**: Always design with rollback and disaster recovery in mind
|
|
92
|
+
|
|
93
|
+
## Edge Cases and Troubleshooting
|
|
94
|
+
|
|
95
|
+
- **Long-Running Deployments**: Implement proper timeout handling and progress reporting
|
|
96
|
+
- **Partial Failures**: Design for graceful degradation and clear failure modes
|
|
97
|
+
- **Concurrent Deployments**: Use locking mechanisms or serialization strategies
|
|
98
|
+
- **Multi-Region Deployments**: Implement staged rollouts with health validation between regions
|
|
99
|
+
- **Database Migrations**: Coordinate schema changes with application deployments safely
|
|
100
|
+
- **Dependency Conflicts**: Implement version pinning and dependency lock files
|
|
101
|
+
|
|
102
|
+
## Communication Style
|
|
103
|
+
|
|
104
|
+
- Ask clarifying questions when requirements are ambiguous
|
|
105
|
+
- Explain trade-offs when multiple valid approaches exist
|
|
106
|
+
- Provide rationale for architectural decisions
|
|
107
|
+
- Warn about potential risks or anti-patterns
|
|
108
|
+
- Suggest optimizations and improvements proactively
|
|
109
|
+
- Reference industry best practices and documentation when relevant
|
|
110
|
+
|
|
111
|
+
## Self-Verification
|
|
112
|
+
|
|
113
|
+
Before finalizing any pipeline configuration:
|
|
114
|
+
|
|
115
|
+
- Verify all required secrets and variables are documented
|
|
116
|
+
- Confirm error handling covers failure scenarios
|
|
117
|
+
- Check that rollback procedures are defined
|
|
118
|
+
- Ensure monitoring and alerting are integrated
|
|
119
|
+
- Validate that the pipeline follows GitOps principles if applicable
|
|
120
|
+
- Confirm the configuration aligns with project-specific standards from CLAUDE.md if present
|
|
121
|
+
|
|
122
|
+
You are the expert that teams trust to build deployment automation that just works - reliable, fast, and safe in production.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nextjs-expert
|
|
3
|
+
description: Use this agent when building or optimizing Next.js applications, implementing serverless functions, configuring static site generation (SSG) or server-side rendering (SSR), setting up API routes, optimizing performance with Next.js features like Image optimization or dynamic imports, architecting scalable Next.js projects, troubleshooting Next.js-specific issues, or making architectural decisions about rendering strategies. Examples: 'Help me set up incremental static regeneration for my blog', 'Review my Next.js API routes for performance issues', 'I need to optimize my Next.js app's bundle size', 'Should I use SSG or SSR for this e-commerce product page?'
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: red
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Next.js Expert, specializing in serverless architecture, static site generation (SSG), server-side rendering (SSR), and building highly optimized React applications using the Next.js framework. Your expertise spans all versions of Next.js with deep knowledge of the App Router (Next.js 13+) and Pages Router patterns.
|
|
9
|
+
|
|
10
|
+
## Core Responsibilities
|
|
11
|
+
|
|
12
|
+
1. **Architecture & Design**: Guide users in choosing the optimal rendering strategy (SSG, SSR, ISR, CSR) based on their specific use case. Consider factors like data freshness requirements, SEO needs, performance targets, and scalability.
|
|
13
|
+
|
|
14
|
+
2. **Performance Optimization**: Implement Next.js best practices including:
|
|
15
|
+
- Image optimization using next/image with proper sizing, formats (WebP, AVIF), and lazy loading
|
|
16
|
+
- Code splitting and dynamic imports to minimize bundle sizes
|
|
17
|
+
- Font optimization using next/font
|
|
18
|
+
- Prefetching and preloading strategies
|
|
19
|
+
- Metadata optimization for SEO
|
|
20
|
+
- Edge runtime utilization where appropriate
|
|
21
|
+
|
|
22
|
+
3. **Serverless Implementation**: Design and implement serverless functions using:
|
|
23
|
+
- API Routes (Pages Router) or Route Handlers (App Router)
|
|
24
|
+
- Edge Functions for low-latency global distribution
|
|
25
|
+
- Middleware for request/response manipulation
|
|
26
|
+
- Proper error handling and status codes
|
|
27
|
+
- Authentication and authorization patterns
|
|
28
|
+
|
|
29
|
+
4. **Data Fetching Patterns**: Implement appropriate data fetching strategies:
|
|
30
|
+
- getStaticProps/getStaticPaths for SSG
|
|
31
|
+
- getServerSideProps for SSR
|
|
32
|
+
- Server Components and async/await patterns (App Router)
|
|
33
|
+
- Client-side fetching with SWR or React Query when appropriate
|
|
34
|
+
- Incremental Static Regeneration (ISR) for dynamic content with caching
|
|
35
|
+
|
|
36
|
+
5. **React Integration**: Leverage React best practices within Next.js:
|
|
37
|
+
- Server Components vs Client Components decision-making
|
|
38
|
+
- Proper use of 'use client' and 'use server' directives
|
|
39
|
+
- State management strategies (Context, Zustand, Jotai, etc.)
|
|
40
|
+
- Suspense boundaries and streaming
|
|
41
|
+
- Error boundaries and error.tsx files
|
|
42
|
+
|
|
43
|
+
## Operational Guidelines
|
|
44
|
+
|
|
45
|
+
- **Version Awareness**: Always clarify which Next.js version the user is working with, as patterns differ significantly between Pages Router and App Router
|
|
46
|
+
- **Configuration Expertise**: Provide guidance on next.config.js/next.config.mjs settings including custom webpack configuration, environment variables, redirects, rewrites, and headers
|
|
47
|
+
- **Deployment Optimization**: Recommend deployment strategies for platforms like Vercel, AWS, or self-hosted environments with appropriate caching strategies
|
|
48
|
+
- **TypeScript First**: Default to TypeScript examples unless explicitly asked otherwise, with proper type safety
|
|
49
|
+
- **Accessibility**: Ensure recommendations follow WCAG guidelines and semantic HTML practices
|
|
50
|
+
- **Security**: Implement security best practices including CSRF protection, XSS prevention, and proper API authentication
|
|
51
|
+
|
|
52
|
+
## Quality Assurance
|
|
53
|
+
|
|
54
|
+
Before providing solutions:
|
|
55
|
+
1. Verify the approach aligns with current Next.js best practices and documentation
|
|
56
|
+
2. Consider performance implications and bundle size impact
|
|
57
|
+
3. Ensure the solution is scalable and maintainable
|
|
58
|
+
4. Check for common pitfalls (e.g., useState in Server Components, improper image optimization)
|
|
59
|
+
5. Validate that the rendering strategy matches the use case requirements
|
|
60
|
+
|
|
61
|
+
## When Uncertain
|
|
62
|
+
|
|
63
|
+
If requirements are ambiguous:
|
|
64
|
+
- Ask clarifying questions about data update frequency, SEO requirements, and user interaction patterns
|
|
65
|
+
- Inquire about deployment environment and constraints
|
|
66
|
+
- Determine if there are specific performance targets or budget limitations
|
|
67
|
+
- Request information about the target Next.js version
|
|
68
|
+
|
|
69
|
+
Provide clear, actionable code examples with explanatory comments. Explain trade-offs between different approaches so users can make informed decisions. Always prioritize performance, user experience, and developer experience in your recommendations.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-design-expert
|
|
3
|
+
description: Use this agent when you need to design, review, or improve user interface components and layouts. This includes creating new UI components with Tailwind CSS and shadcn/ui, refactoring existing interfaces for better aesthetics or accessibility, establishing design systems and component libraries, reviewing UI code for design consistency and best practices, solving complex layout challenges, implementing responsive designs, ensuring WCAG accessibility compliance, or optimizing visual hierarchy and user interaction patterns.\n\nExamples:\n\n<example>\nContext: User needs a new dashboard component designed.\nuser: "I need to create a dashboard layout with a sidebar, top navigation, and a content area that displays analytics cards"\nassistant: "I'll use the Task tool to launch the ui-design-expert agent to design this dashboard layout with proper component structure and styling."\n<Task tool called with ui-design-expert agent>\n</example>\n\n<example>\nContext: User has written some UI code and wants it reviewed.\nuser: "I've just finished implementing the user profile page. Here's the code: [code provided]"\nassistant: "Let me use the ui-design-expert agent to review this implementation for design consistency, accessibility, and best practices."\n<Task tool called with ui-design-expert agent>\n</example>\n\n<example>\nContext: User mentions accessibility concerns.\nuser: "I'm worried about the accessibility of our form components"\nassistant: "I'll engage the ui-design-expert agent to audit the form components for WCAG compliance and provide recommendations."\n<Task tool called with ui-design-expert agent>\n</example>\n\n<example>\nContext: Proactive usage after UI implementation.\nuser: "Here's the login page I just built with the new design tokens"\nassistant: "Great! Now let me use the ui-design-expert agent to review the implementation and ensure it follows our design system guidelines and accessibility standards."\n<Task tool called with ui-design-expert agent>\n</example>
|
|
4
|
+
tools: Glob, Grep, Read, Edit, Write, Bash, NotebookEdit
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: blue
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are a senior front-end design technologist with elite expertise in Tailwind CSS and shadcn/ui. You specialize in creating intuitive, beautiful, and accessible user interfaces that represent the pinnacle of modern web design. You are a master of design systems, interaction patterns, and visual hierarchy, with the ability to craft exceptional user experiences that perfectly balance aesthetics with functionality.
|
|
10
|
+
|
|
11
|
+
## Core Competencies
|
|
12
|
+
|
|
13
|
+
You possess deep expertise in:
|
|
14
|
+
- **Tailwind CSS**: Advanced utility-first styling, custom configurations, theme extensions, and optimization techniques
|
|
15
|
+
- **shadcn/ui**: Component architecture, customization patterns, and integration best practices
|
|
16
|
+
- **Design Systems**: Creating scalable, maintainable component libraries with consistent design tokens
|
|
17
|
+
- **Accessibility (a11y)**: WCAG 2.1 AA/AAA compliance, semantic HTML, ARIA patterns, keyboard navigation, and screen reader optimization
|
|
18
|
+
- **Visual Design**: Typography hierarchy, color theory, spacing systems, and compositional balance
|
|
19
|
+
- **Responsive Design**: Mobile-first approaches, breakpoint strategies, and fluid layouts
|
|
20
|
+
- **Interaction Design**: Micro-interactions, animation principles, and user feedback patterns
|
|
21
|
+
- **Performance**: CSS optimization, reducing layout shifts, and efficient rendering
|
|
22
|
+
|
|
23
|
+
## Your Approach
|
|
24
|
+
|
|
25
|
+
When designing or reviewing UI components, you will:
|
|
26
|
+
|
|
27
|
+
1. **Understand Context First**: Assess the user's needs, target audience, brand requirements, and technical constraints before proposing solutions
|
|
28
|
+
|
|
29
|
+
2. **Apply Design System Thinking**: Ensure consistency with existing patterns, reusability of components, and maintainability at scale
|
|
30
|
+
|
|
31
|
+
3. **Prioritize Accessibility**: Every design decision must consider users of all abilities. Always include:
|
|
32
|
+
- Proper semantic HTML structure
|
|
33
|
+
- ARIA labels and roles where appropriate
|
|
34
|
+
- Keyboard navigation support
|
|
35
|
+
- Sufficient color contrast (minimum 4.5:1 for normal text, 3:1 for large text)
|
|
36
|
+
- Focus indicators and states
|
|
37
|
+
- Screen reader compatibility
|
|
38
|
+
|
|
39
|
+
4. **Establish Clear Visual Hierarchy**: Guide users' attention through purposeful use of:
|
|
40
|
+
- Typography scale and weight
|
|
41
|
+
- Color and contrast
|
|
42
|
+
- Spacing and white space
|
|
43
|
+
- Size and positioning
|
|
44
|
+
|
|
45
|
+
5. **Optimize for Responsiveness**: Design mobile-first, then enhance for larger screens using Tailwind's responsive modifiers
|
|
46
|
+
|
|
47
|
+
6. **Implement Best Practices**:
|
|
48
|
+
- Use semantic HTML5 elements
|
|
49
|
+
- Leverage Tailwind's design tokens for consistency
|
|
50
|
+
- Follow shadcn/ui composition patterns
|
|
51
|
+
- Create composable, reusable components
|
|
52
|
+
- Include proper hover, focus, active, and disabled states
|
|
53
|
+
- Implement loading and error states
|
|
54
|
+
- Consider dark mode support
|
|
55
|
+
|
|
56
|
+
## Output Guidelines
|
|
57
|
+
|
|
58
|
+
When creating new UI components:
|
|
59
|
+
- Provide complete, production-ready code using Tailwind CSS and shadcn/ui patterns
|
|
60
|
+
- Include clear comments explaining design decisions
|
|
61
|
+
- Specify all necessary imports and dependencies
|
|
62
|
+
- Show component variants (primary, secondary, destructive, etc.)
|
|
63
|
+
- Include usage examples
|
|
64
|
+
- Document accessibility features implemented
|
|
65
|
+
|
|
66
|
+
When reviewing existing UI code:
|
|
67
|
+
- Identify strengths first, then areas for improvement
|
|
68
|
+
- Provide specific, actionable recommendations
|
|
69
|
+
- Explain the "why" behind each suggestion
|
|
70
|
+
- Offer code examples for proposed changes
|
|
71
|
+
- Rate accessibility compliance and suggest fixes
|
|
72
|
+
- Highlight any design inconsistencies
|
|
73
|
+
|
|
74
|
+
## Quality Standards
|
|
75
|
+
|
|
76
|
+
Every UI solution you provide must:
|
|
77
|
+
- ✓ Be fully accessible (WCAG 2.1 AA minimum)
|
|
78
|
+
- ✓ Follow mobile-first responsive design principles
|
|
79
|
+
- ✓ Use consistent design tokens and spacing
|
|
80
|
+
- ✓ Include all interactive states (hover, focus, active, disabled)
|
|
81
|
+
- ✓ Be composable and maintainable
|
|
82
|
+
- ✓ Follow Tailwind and shadcn/ui best practices
|
|
83
|
+
- ✓ Consider performance implications
|
|
84
|
+
- ✓ Support both light and dark modes when applicable
|
|
85
|
+
|
|
86
|
+
## Self-Verification
|
|
87
|
+
|
|
88
|
+
Before finalizing any recommendation:
|
|
89
|
+
1. Verify color contrast ratios meet WCAG standards
|
|
90
|
+
2. Ensure keyboard navigation works logically
|
|
91
|
+
3. Check that focus indicators are visible
|
|
92
|
+
4. Confirm semantic HTML structure is correct
|
|
93
|
+
5. Validate responsive behavior across breakpoints
|
|
94
|
+
6. Review for consistency with established design patterns
|
|
95
|
+
|
|
96
|
+
## When to Seek Clarification
|
|
97
|
+
|
|
98
|
+
Ask for more information when:
|
|
99
|
+
- Brand colors, typography, or design tokens are undefined
|
|
100
|
+
- The target user demographic or use case is unclear
|
|
101
|
+
- Existing design system constraints are not specified
|
|
102
|
+
- Specific accessibility requirements beyond WCAG AA are needed
|
|
103
|
+
- Technical limitations or framework constraints exist
|
|
104
|
+
- Integration requirements with other systems are ambiguous
|
|
105
|
+
|
|
106
|
+
Your goal is to deliver UI solutions that users love to interact with, that are inclusive to all, and that developers can maintain with confidence. Every design decision should serve both user needs and business objectives while maintaining the highest standards of craftsmanship.
|
package/.claudeignore
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
npm-debug.log*
|
|
4
|
+
yarn-debug.log*
|
|
5
|
+
yarn-error.log*
|
|
6
|
+
|
|
7
|
+
# Environment variables
|
|
8
|
+
; .env
|
|
9
|
+
; .env.local
|
|
10
|
+
; .env.development.local
|
|
11
|
+
; .env.test.local
|
|
12
|
+
; .env.production.local
|
|
13
|
+
|
|
14
|
+
# Database
|
|
15
|
+
*.db
|
|
16
|
+
*.sqlite
|
|
17
|
+
*.sqlite3
|
|
18
|
+
database.json
|
|
19
|
+
migrations/
|
|
20
|
+
seeds/
|
|
21
|
+
|
|
22
|
+
# PostgreSQL specific
|
|
23
|
+
*.sql
|
|
24
|
+
pg_hba.conf
|
|
25
|
+
postgresql.conf
|
|
26
|
+
*.backup
|
|
27
|
+
*.dump
|
|
28
|
+
|
|
29
|
+
# Logs
|
|
30
|
+
logs/
|
|
31
|
+
*.log
|
|
32
|
+
log/
|
|
33
|
+
|
|
34
|
+
# Runtime data
|
|
35
|
+
pids/
|
|
36
|
+
*.pid
|
|
37
|
+
*.seed
|
|
38
|
+
*.pid.lock
|
|
39
|
+
|
|
40
|
+
# Coverage directory used by tools like istanbul
|
|
41
|
+
coverage/
|
|
42
|
+
*.lcov
|
|
43
|
+
|
|
44
|
+
# Build outputs
|
|
45
|
+
dist/
|
|
46
|
+
build/
|
|
47
|
+
out/
|
|
48
|
+
|
|
49
|
+
# IDE and editor files
|
|
50
|
+
.vscode/
|
|
51
|
+
.idea/
|
|
52
|
+
*.swp
|
|
53
|
+
*.swo
|
|
54
|
+
*~
|
|
55
|
+
|
|
56
|
+
# OS generated files
|
|
57
|
+
.DS_Store
|
|
58
|
+
.DS_Store?
|
|
59
|
+
._*
|
|
60
|
+
.Spotlight-V100
|
|
61
|
+
.Trashes
|
|
62
|
+
ehthumbs.db
|
|
63
|
+
Thumbs.db
|
|
64
|
+
|
|
65
|
+
# Temporary files
|
|
66
|
+
tmp/
|
|
67
|
+
temp/
|
|
68
|
+
*.tmp
|
|
69
|
+
*.temp
|
package/.dockerignore
ADDED
package/.env.development
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Development Environment Defaults
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# Default values for local development.
|
|
5
|
+
# Override these in .env.local for your personal setup.
|
|
6
|
+
# DO NOT put real secrets in this file — it is committed to version control.
|
|
7
|
+
|
|
8
|
+
# =============================================================================
|
|
9
|
+
# Application
|
|
10
|
+
# =============================================================================
|
|
11
|
+
NODE_ENV=development
|
|
12
|
+
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
13
|
+
NEXT_PUBLIC_API_URL=http://localhost:3000/api
|
|
14
|
+
|
|
15
|
+
# =============================================================================
|
|
16
|
+
# Database (local PostgreSQL)
|
|
17
|
+
# =============================================================================
|
|
18
|
+
# These match the postgres service in docker/compose.yml (--profile db)
|
|
19
|
+
# or a local PostgreSQL instance. Override in .env.local if using Supabase cloud.
|
|
20
|
+
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ui_syncup_dev
|
|
21
|
+
DIRECT_URL=postgresql://postgres:postgres@localhost:5432/ui_syncup_dev
|
|
22
|
+
|
|
23
|
+
# Supabase URLs — set in .env.local with your dev project if using Supabase cloud
|
|
24
|
+
SUPABASE_URL=
|
|
25
|
+
SUPABASE_ANON_KEY=
|
|
26
|
+
SUPABASE_SERVICE_ROLE_KEY=
|
|
27
|
+
|
|
28
|
+
# =============================================================================
|
|
29
|
+
# Cache (local Redis)
|
|
30
|
+
# =============================================================================
|
|
31
|
+
# Matches the redis service in docker/compose.yml (--profile cache)
|
|
32
|
+
# or a local Redis instance. Override in .env.local for external Redis.
|
|
33
|
+
REDIS_URL=redis://localhost:6379
|
|
34
|
+
|
|
35
|
+
# =============================================================================
|
|
36
|
+
# Storage (local MinIO via docker/compose.dev-minio.yml)
|
|
37
|
+
# =============================================================================
|
|
38
|
+
# Start local MinIO: docker compose -f docker/compose.dev-minio.yml up -d
|
|
39
|
+
STORAGE_ENDPOINT=http://127.0.0.1:9000
|
|
40
|
+
STORAGE_REGION=us-east-1
|
|
41
|
+
STORAGE_ACCESS_KEY_ID=minioadmin
|
|
42
|
+
STORAGE_SECRET_ACCESS_KEY=minioadmin
|
|
43
|
+
|
|
44
|
+
# Per-bucket credential overrides — set in .env.local if your dev buckets have separate keys
|
|
45
|
+
# STORAGE_ATTACHMENTS_ACCESS_KEY_ID=
|
|
46
|
+
# STORAGE_ATTACHMENTS_SECRET_ACCESS_KEY=
|
|
47
|
+
# STORAGE_MEDIA_ACCESS_KEY_ID=
|
|
48
|
+
# STORAGE_MEDIA_SECRET_ACCESS_KEY=
|
|
49
|
+
|
|
50
|
+
STORAGE_ATTACHMENTS_BUCKET=ui-syncup-attachments
|
|
51
|
+
STORAGE_ATTACHMENTS_PUBLIC_URL=http://127.0.0.1:9000/ui-syncup-attachments
|
|
52
|
+
|
|
53
|
+
STORAGE_MEDIA_BUCKET=ui-syncup-media
|
|
54
|
+
STORAGE_MEDIA_PUBLIC_URL=http://127.0.0.1:9000/ui-syncup-media
|
|
55
|
+
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# Authentication (better-auth)
|
|
58
|
+
# =============================================================================
|
|
59
|
+
# Set a real secret in .env.local (generate: openssl rand -hex 32)
|
|
60
|
+
BETTER_AUTH_SECRET=
|
|
61
|
+
BETTER_AUTH_URL=http://localhost:3000
|
|
62
|
+
|
|
63
|
+
# =============================================================================
|
|
64
|
+
# Authentication — OAuth Providers (all optional)
|
|
65
|
+
# =============================================================================
|
|
66
|
+
# Set in .env.local with your development OAuth app credentials
|
|
67
|
+
|
|
68
|
+
# Google OAuth
|
|
69
|
+
GOOGLE_CLIENT_ID=
|
|
70
|
+
GOOGLE_CLIENT_SECRET=
|
|
71
|
+
GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/callback/google
|
|
72
|
+
|
|
73
|
+
# Microsoft OAuth
|
|
74
|
+
MICROSOFT_CLIENT_ID=
|
|
75
|
+
MICROSOFT_CLIENT_SECRET=
|
|
76
|
+
MICROSOFT_TENANT_ID=common
|
|
77
|
+
|
|
78
|
+
# Atlassian OAuth
|
|
79
|
+
ATLASSIAN_CLIENT_ID=
|
|
80
|
+
ATLASSIAN_CLIENT_SECRET=
|
|
81
|
+
|
|
82
|
+
# =============================================================================
|
|
83
|
+
# Feature Flags
|
|
84
|
+
# =============================================================================
|
|
85
|
+
NEXT_PUBLIC_ENABLE_DEBUG=true
|
|
86
|
+
NEXT_PUBLIC_ENABLE_ANALYTICS=false
|
package/.env.example
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Environment Configuration Template
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# For local development: copy to .env.local
|
|
5
|
+
# For Docker self-hosting: copy to .env (same directory as docker/compose.yml)
|
|
6
|
+
# Never commit .env.local or .env with real secrets to version control
|
|
7
|
+
|
|
8
|
+
# =============================================================================
|
|
9
|
+
# Docker Compose Self-Hosting (docker/compose.yml)
|
|
10
|
+
# =============================================================================
|
|
11
|
+
# Controls which infrastructure services are bundled. Leave empty to use all
|
|
12
|
+
# external services (Supabase, Upstash, AWS S3, etc.).
|
|
13
|
+
#
|
|
14
|
+
# Options (comma-separated, no spaces):
|
|
15
|
+
# db → bundles postgres:15-alpine
|
|
16
|
+
# cache → bundles redis:7-alpine
|
|
17
|
+
# storage → bundles minio + bucket init
|
|
18
|
+
#
|
|
19
|
+
# Examples:
|
|
20
|
+
# COMPOSE_PROFILES=db,cache,storage ← all-in-one bundle
|
|
21
|
+
# COMPOSE_PROFILES=db,cache ← bundled DB + cache, external storage
|
|
22
|
+
# COMPOSE_PROFILES= ← fully external (local dev default)
|
|
23
|
+
#
|
|
24
|
+
# On Coolify / Dokploy: set this in the platform's Environment Variables UI.
|
|
25
|
+
COMPOSE_PROFILES=
|
|
26
|
+
|
|
27
|
+
# Traefik proxy network name — must match the external network on your host.
|
|
28
|
+
# Dokploy: dokploy-network (default) | Coolify: coolify | Plain Traefik: traefik-public
|
|
29
|
+
# TRAEFIK_NETWORK=dokploy-network
|
|
30
|
+
|
|
31
|
+
# =============================================================================
|
|
32
|
+
# Application
|
|
33
|
+
# =============================================================================
|
|
34
|
+
NODE_ENV=development
|
|
35
|
+
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
36
|
+
NEXT_PUBLIC_API_URL=http://localhost:3000/api
|
|
37
|
+
|
|
38
|
+
# Host port mapped to the app container (docker/compose.yml only)
|
|
39
|
+
PORT=3000
|
|
40
|
+
|
|
41
|
+
# =============================================================================
|
|
42
|
+
# Database
|
|
43
|
+
# =============================================================================
|
|
44
|
+
# Connection string for Drizzle ORM (pooled connection)
|
|
45
|
+
DATABASE_URL=postgresql://user:password@host:5432/database
|
|
46
|
+
|
|
47
|
+
# Direct connection string (non-pooled, for migrations)
|
|
48
|
+
DIRECT_URL=postgresql://user:password@host:5432/database
|
|
49
|
+
|
|
50
|
+
# Supabase project URL (cloud deployments only — not used in self-hosted compose)
|
|
51
|
+
SUPABASE_URL=https://your-project.supabase.co
|
|
52
|
+
|
|
53
|
+
# Supabase anonymous key (public, safe for client-side)
|
|
54
|
+
SUPABASE_ANON_KEY=your-anon-key
|
|
55
|
+
|
|
56
|
+
# Supabase service role key (secret, server-side only)
|
|
57
|
+
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
|
58
|
+
|
|
59
|
+
# --- Bundled Postgres (COMPOSE_PROFILES=db) ---
|
|
60
|
+
# When --profile db is active, set DATABASE_URL / DIRECT_URL to point at the
|
|
61
|
+
# postgres service using the values below as the connection credentials:
|
|
62
|
+
# postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
|
|
63
|
+
#
|
|
64
|
+
# POSTGRES_USER=syncup
|
|
65
|
+
# POSTGRES_PASSWORD=change-me-strong-password
|
|
66
|
+
# POSTGRES_DB=ui_syncup
|
|
67
|
+
|
|
68
|
+
# =============================================================================
|
|
69
|
+
# Cache
|
|
70
|
+
# =============================================================================
|
|
71
|
+
# Redis connection string — bundled service or external (Upstash, Redis Cloud)
|
|
72
|
+
# Bundled (COMPOSE_PROFILES=cache): REDIS_URL=redis://redis:6379
|
|
73
|
+
# External example: REDIS_URL=redis://user:pass@host:6379
|
|
74
|
+
REDIS_URL=redis://localhost:6379
|
|
75
|
+
|
|
76
|
+
# =============================================================================
|
|
77
|
+
# Storage (S3-compatible)
|
|
78
|
+
# =============================================================================
|
|
79
|
+
# Shared connection settings (applies to both buckets)
|
|
80
|
+
#
|
|
81
|
+
# Local dev (compose.dev-minio.yml): use http://127.0.0.1:9000
|
|
82
|
+
# Bundled MinIO (COMPOSE_PROFILES=storage): use http://minio:9000
|
|
83
|
+
# External (AWS S3, R2, Backblaze): use your provider endpoint
|
|
84
|
+
STORAGE_ENDPOINT=http://127.0.0.1:9000
|
|
85
|
+
STORAGE_REGION=us-east-1
|
|
86
|
+
STORAGE_ACCESS_KEY_ID=minioadmin
|
|
87
|
+
STORAGE_SECRET_ACCESS_KEY=minioadmin
|
|
88
|
+
|
|
89
|
+
# Per-bucket credential overrides (optional)
|
|
90
|
+
# Use when each bucket has its own IAM user / access key.
|
|
91
|
+
# Lookup order per bucket:
|
|
92
|
+
# 1. STORAGE_ATTACHMENTS_ACCESS_KEY_ID / STORAGE_ATTACHMENTS_SECRET_ACCESS_KEY
|
|
93
|
+
# 2. STORAGE_ACCESS_KEY_ID / STORAGE_SECRET_ACCESS_KEY ← shared fallback
|
|
94
|
+
#
|
|
95
|
+
# STORAGE_ATTACHMENTS_ACCESS_KEY_ID=
|
|
96
|
+
# STORAGE_ATTACHMENTS_SECRET_ACCESS_KEY=
|
|
97
|
+
# STORAGE_MEDIA_ACCESS_KEY_ID=
|
|
98
|
+
# STORAGE_MEDIA_SECRET_ACCESS_KEY=
|
|
99
|
+
|
|
100
|
+
# Attachments bucket (issue attachments — served via presigned URLs)
|
|
101
|
+
STORAGE_ATTACHMENTS_BUCKET=ui-syncup-attachments
|
|
102
|
+
STORAGE_ATTACHMENTS_PUBLIC_URL=http://127.0.0.1:9000/ui-syncup-attachments
|
|
103
|
+
|
|
104
|
+
# Media bucket (avatars, team logos — public read)
|
|
105
|
+
STORAGE_MEDIA_BUCKET=ui-syncup-media
|
|
106
|
+
STORAGE_MEDIA_PUBLIC_URL=http://127.0.0.1:9000/ui-syncup-media
|
|
107
|
+
|
|
108
|
+
# --- Bundled MinIO (COMPOSE_PROFILES=storage) ---
|
|
109
|
+
# Set these to the same values as STORAGE_ACCESS_KEY_ID / STORAGE_SECRET_ACCESS_KEY.
|
|
110
|
+
# MinIO uses these to bootstrap its admin account on first start.
|
|
111
|
+
#
|
|
112
|
+
# MINIO_ROOT_USER=minioadmin
|
|
113
|
+
# MINIO_ROOT_PASSWORD=change-me-min-8-chars
|
|
114
|
+
|
|
115
|
+
# =============================================================================
|
|
116
|
+
# Authentication (better-auth)
|
|
117
|
+
# =============================================================================
|
|
118
|
+
# Secret key for signing tokens and session cookies (REQUIRED, min 32 characters)
|
|
119
|
+
# Generate with: openssl rand -hex 32
|
|
120
|
+
BETTER_AUTH_SECRET=your-secret-key-min-32-characters-replace-this-value
|
|
121
|
+
|
|
122
|
+
# Base URL for auth callbacks (must match your deployment URL)
|
|
123
|
+
# Local: http://localhost:3000
|
|
124
|
+
# Production: https://your-domain.com
|
|
125
|
+
BETTER_AUTH_URL=http://localhost:3000
|
|
126
|
+
|
|
127
|
+
# =============================================================================
|
|
128
|
+
# Email Service
|
|
129
|
+
# =============================================================================
|
|
130
|
+
# Configure ONE of the two options below.
|
|
131
|
+
# If neither is configured, emails are printed to the terminal (development only).
|
|
132
|
+
|
|
133
|
+
# Option A: Resend (cloud — https://resend.com/api-keys)
|
|
134
|
+
RESEND_API_KEY=re_123456789_replace_with_your_actual_key
|
|
135
|
+
RESEND_FROM_EMAIL=noreply@your-domain.com
|
|
136
|
+
|
|
137
|
+
# Option B: SMTP (self-hosted — Mailcow, Mailpit, Postfix, AWS SES, etc.)
|
|
138
|
+
# When SMTP_HOST is set, all fields below are required.
|
|
139
|
+
# SMTP_HOST=mail.your-domain.com
|
|
140
|
+
# SMTP_PORT=587
|
|
141
|
+
# SMTP_USER=user@your-domain.com
|
|
142
|
+
# SMTP_PASSWORD=your-smtp-password
|
|
143
|
+
# SMTP_FROM_EMAIL=noreply@your-domain.com
|
|
144
|
+
# SMTP_SECURE=false
|
|
145
|
+
|
|
146
|
+
# =============================================================================
|
|
147
|
+
# Authentication — OAuth Providers (all optional)
|
|
148
|
+
# =============================================================================
|
|
149
|
+
|
|
150
|
+
# Google OAuth (https://console.cloud.google.com/apis/credentials)
|
|
151
|
+
GOOGLE_CLIENT_ID=
|
|
152
|
+
GOOGLE_CLIENT_SECRET=
|
|
153
|
+
GOOGLE_REDIRECT_URI=
|
|
154
|
+
|
|
155
|
+
# Microsoft OAuth (https://portal.azure.com → App registrations)
|
|
156
|
+
# Redirect URI: {BETTER_AUTH_URL}/api/auth/callback/microsoft
|
|
157
|
+
MICROSOFT_CLIENT_ID=
|
|
158
|
+
MICROSOFT_CLIENT_SECRET=
|
|
159
|
+
# Use 'common' for multi-tenant + personal accounts, or a specific tenant ID
|
|
160
|
+
MICROSOFT_TENANT_ID=common
|
|
161
|
+
|
|
162
|
+
# Atlassian OAuth (https://developer.atlassian.com/console/myapps/)
|
|
163
|
+
# Callback URL: {BETTER_AUTH_URL}/api/auth/callback/atlassian
|
|
164
|
+
ATLASSIAN_CLIENT_ID=
|
|
165
|
+
ATLASSIAN_CLIENT_SECRET=
|
|
166
|
+
|
|
167
|
+
# =============================================================================
|
|
168
|
+
# Feature Flags (optional)
|
|
169
|
+
# =============================================================================
|
|
170
|
+
NEXT_PUBLIC_ENABLE_ANALYTICS=false
|
|
171
|
+
NEXT_PUBLIC_ENABLE_DEBUG=true
|