dk-harness 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +267 -0
- package/bin/dk-harness +206 -0
- package/package.json +36 -0
- package/templates/next-axum-monorepo/.eslintrc.js +13 -0
- package/templates/next-axum-monorepo/.github/workflows/ci.yml +92 -0
- package/templates/next-axum-monorepo/.gitleaks.toml +5 -0
- package/templates/next-axum-monorepo/.prettierignore +7 -0
- package/templates/next-axum-monorepo/.prettierrc +11 -0
- package/templates/next-axum-monorepo/AGENTS.md +35 -0
- package/templates/next-axum-monorepo/ARCHITECTURE.md +58 -0
- package/templates/next-axum-monorepo/README.md +45 -0
- package/templates/next-axum-monorepo/apps/axum/Cargo.lock +1041 -0
- package/templates/next-axum-monorepo/apps/axum/Cargo.toml +12 -0
- package/templates/next-axum-monorepo/apps/axum/deny.toml +13 -0
- package/templates/next-axum-monorepo/apps/axum/src/api/mod.rs +1 -0
- package/templates/next-axum-monorepo/apps/axum/src/api/router.rs +53 -0
- package/templates/next-axum-monorepo/apps/axum/src/core/config.rs +17 -0
- package/templates/next-axum-monorepo/apps/axum/src/core/mod.rs +1 -0
- package/templates/next-axum-monorepo/apps/axum/src/domain/health.rs +22 -0
- package/templates/next-axum-monorepo/apps/axum/src/domain/mod.rs +1 -0
- package/templates/next-axum-monorepo/apps/axum/src/lib.rs +6 -0
- package/templates/next-axum-monorepo/apps/axum/src/main.rs +15 -0
- package/templates/next-axum-monorepo/apps/web/app/favicon.ico +0 -0
- package/templates/next-axum-monorepo/apps/web/app/layout.tsx +43 -0
- package/templates/next-axum-monorepo/apps/web/app/page.tsx +19 -0
- package/templates/next-axum-monorepo/apps/web/biome.json +16 -0
- package/templates/next-axum-monorepo/apps/web/components/.gitkeep +0 -0
- package/templates/next-axum-monorepo/apps/web/components/theme-provider.tsx +71 -0
- package/templates/next-axum-monorepo/apps/web/components.json +23 -0
- package/templates/next-axum-monorepo/apps/web/dependency-cruiser.cjs +66 -0
- package/templates/next-axum-monorepo/apps/web/eslint.config.js +4 -0
- package/templates/next-axum-monorepo/apps/web/hooks/.gitkeep +0 -0
- package/templates/next-axum-monorepo/apps/web/knip.json +17 -0
- package/templates/next-axum-monorepo/apps/web/lib/.gitkeep +0 -0
- package/templates/next-axum-monorepo/apps/web/lighthouserc.json +23 -0
- package/templates/next-axum-monorepo/apps/web/next-env.d.ts +6 -0
- package/templates/next-axum-monorepo/apps/web/next.config.mjs +6 -0
- package/templates/next-axum-monorepo/apps/web/package.json +46 -0
- package/templates/next-axum-monorepo/apps/web/playwright.config.ts +18 -0
- package/templates/next-axum-monorepo/apps/web/postcss.config.mjs +1 -0
- package/templates/next-axum-monorepo/apps/web/skills-lock.json +15 -0
- package/templates/next-axum-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
- package/templates/next-axum-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
- package/templates/next-axum-monorepo/apps/web/tsconfig.json +23 -0
- package/templates/next-axum-monorepo/apps/web/vitest.config.ts +13 -0
- package/templates/next-axum-monorepo/apps/web/vitest.setup.ts +1 -0
- package/templates/next-axum-monorepo/docs/DESIGN.md +10 -0
- package/templates/next-axum-monorepo/docs/FRONTEND.md +26 -0
- package/templates/next-axum-monorepo/docs/PLANS.md +25 -0
- package/templates/next-axum-monorepo/docs/PRODUCT_SENSE.md +11 -0
- package/templates/next-axum-monorepo/docs/QUALITY_SCORE.md +16 -0
- package/templates/next-axum-monorepo/docs/RELIABILITY.md +39 -0
- package/templates/next-axum-monorepo/docs/SECURITY.md +16 -0
- package/templates/next-axum-monorepo/docs/design-docs/core-beliefs.md +6 -0
- package/templates/next-axum-monorepo/docs/design-docs/included-skills.md +16 -0
- package/templates/next-axum-monorepo/docs/design-docs/index.md +6 -0
- package/templates/next-axum-monorepo/docs/exec-plans/active/.gitkeep +1 -0
- package/templates/next-axum-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
- package/templates/next-axum-monorepo/docs/exec-plans/repeated-work.md +15 -0
- package/templates/next-axum-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
- package/templates/next-axum-monorepo/docs/generated/db-schema.md +3 -0
- package/templates/next-axum-monorepo/docs/product-specs/index.md +5 -0
- package/templates/next-axum-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
- package/templates/next-axum-monorepo/docs/references/design-system-reference-llms.txt +13 -0
- package/templates/next-axum-monorepo/justfile +36 -0
- package/templates/next-axum-monorepo/lefthook.yml +8 -0
- package/templates/next-axum-monorepo/mise.toml +5 -0
- package/templates/next-axum-monorepo/package.json +41 -0
- package/templates/next-axum-monorepo/packages/eslint-config/README.md +3 -0
- package/templates/next-axum-monorepo/packages/eslint-config/base.js +32 -0
- package/templates/next-axum-monorepo/packages/eslint-config/next.js +51 -0
- package/templates/next-axum-monorepo/packages/eslint-config/package.json +26 -0
- package/templates/next-axum-monorepo/packages/eslint-config/react-internal.js +41 -0
- package/templates/next-axum-monorepo/packages/typescript-config/README.md +3 -0
- package/templates/next-axum-monorepo/packages/typescript-config/base.json +20 -0
- package/templates/next-axum-monorepo/packages/typescript-config/nextjs.json +13 -0
- package/templates/next-axum-monorepo/packages/typescript-config/package.json +9 -0
- package/templates/next-axum-monorepo/packages/typescript-config/react-library.json +8 -0
- package/templates/next-axum-monorepo/packages/ui/components.json +23 -0
- package/templates/next-axum-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
- package/templates/next-axum-monorepo/packages/ui/eslint.config.js +4 -0
- package/templates/next-axum-monorepo/packages/ui/package.json +49 -0
- package/templates/next-axum-monorepo/packages/ui/postcss.config.mjs +6 -0
- package/templates/next-axum-monorepo/packages/ui/src/config/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/providers/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/repo/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/runtime/utils.ts +6 -0
- package/templates/next-axum-monorepo/packages/ui/src/service/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/styles/globals.css +129 -0
- package/templates/next-axum-monorepo/packages/ui/src/types/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/src/ui/button.tsx +65 -0
- package/templates/next-axum-monorepo/packages/ui/src/utils/.gitkeep +1 -0
- package/templates/next-axum-monorepo/packages/ui/tsconfig.json +10 -0
- package/templates/next-axum-monorepo/packages/ui/tsconfig.lint.json +8 -0
- package/templates/next-axum-monorepo/pnpm-lock.yaml +12402 -0
- package/templates/next-axum-monorepo/pnpm-workspace.yaml +3 -0
- package/templates/next-axum-monorepo/renovate.json +6 -0
- package/templates/next-axum-monorepo/scripts/check-rust-layers.mjs +149 -0
- package/templates/next-axum-monorepo/skills-lock.json +30 -0
- package/templates/next-axum-monorepo/tsconfig.json +4 -0
- package/templates/next-axum-monorepo/turbo.json +27 -0
- package/templates/next-fastapi-monorepo/.eslintrc.js +13 -0
- package/templates/next-fastapi-monorepo/.github/workflows/ci.yml +92 -0
- package/templates/next-fastapi-monorepo/.gitleaks.toml +5 -0
- package/templates/next-fastapi-monorepo/.prettierignore +7 -0
- package/templates/next-fastapi-monorepo/.prettierrc +11 -0
- package/templates/next-fastapi-monorepo/AGENTS.md +35 -0
- package/templates/next-fastapi-monorepo/ARCHITECTURE.md +55 -0
- package/templates/next-fastapi-monorepo/README.md +65 -0
- package/templates/next-fastapi-monorepo/apps/api/.python-version +1 -0
- package/templates/next-fastapi-monorepo/apps/api/README.md +17 -0
- package/templates/next-fastapi-monorepo/apps/api/app/__init__.py +1 -0
- package/templates/next-fastapi-monorepo/apps/api/app/api/__init__.py +2 -0
- package/templates/next-fastapi-monorepo/apps/api/app/api/routes.py +16 -0
- package/templates/next-fastapi-monorepo/apps/api/app/core/__init__.py +2 -0
- package/templates/next-fastapi-monorepo/apps/api/app/core/config.py +11 -0
- package/templates/next-fastapi-monorepo/apps/api/app/domain/__init__.py +2 -0
- package/templates/next-fastapi-monorepo/apps/api/app/domain/health.py +7 -0
- package/templates/next-fastapi-monorepo/apps/api/app/main.py +8 -0
- package/templates/next-fastapi-monorepo/apps/api/package.json +14 -0
- package/templates/next-fastapi-monorepo/apps/api/pyproject.toml +54 -0
- package/templates/next-fastapi-monorepo/apps/api/tests/test_main.py +27 -0
- package/templates/next-fastapi-monorepo/apps/api/uv.lock +1797 -0
- package/templates/next-fastapi-monorepo/apps/web/app/favicon.ico +0 -0
- package/templates/next-fastapi-monorepo/apps/web/app/layout.tsx +43 -0
- package/templates/next-fastapi-monorepo/apps/web/app/page.tsx +19 -0
- package/templates/next-fastapi-monorepo/apps/web/biome.json +16 -0
- package/templates/next-fastapi-monorepo/apps/web/components/.gitkeep +0 -0
- package/templates/next-fastapi-monorepo/apps/web/components/theme-provider.tsx +71 -0
- package/templates/next-fastapi-monorepo/apps/web/components.json +23 -0
- package/templates/next-fastapi-monorepo/apps/web/dependency-cruiser.cjs +66 -0
- package/templates/next-fastapi-monorepo/apps/web/eslint.config.js +4 -0
- package/templates/next-fastapi-monorepo/apps/web/hooks/.gitkeep +0 -0
- package/templates/next-fastapi-monorepo/apps/web/knip.json +17 -0
- package/templates/next-fastapi-monorepo/apps/web/lib/.gitkeep +0 -0
- package/templates/next-fastapi-monorepo/apps/web/lighthouserc.json +23 -0
- package/templates/next-fastapi-monorepo/apps/web/next-env.d.ts +6 -0
- package/templates/next-fastapi-monorepo/apps/web/next.config.mjs +6 -0
- package/templates/next-fastapi-monorepo/apps/web/package.json +46 -0
- package/templates/next-fastapi-monorepo/apps/web/playwright.config.ts +18 -0
- package/templates/next-fastapi-monorepo/apps/web/postcss.config.mjs +1 -0
- package/templates/next-fastapi-monorepo/apps/web/skills-lock.json +40 -0
- package/templates/next-fastapi-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
- package/templates/next-fastapi-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
- package/templates/next-fastapi-monorepo/apps/web/tsconfig.json +23 -0
- package/templates/next-fastapi-monorepo/apps/web/vitest.config.ts +13 -0
- package/templates/next-fastapi-monorepo/apps/web/vitest.setup.ts +1 -0
- package/templates/next-fastapi-monorepo/docs/DESIGN.md +10 -0
- package/templates/next-fastapi-monorepo/docs/FRONTEND.md +26 -0
- package/templates/next-fastapi-monorepo/docs/PLANS.md +25 -0
- package/templates/next-fastapi-monorepo/docs/PRODUCT_SENSE.md +11 -0
- package/templates/next-fastapi-monorepo/docs/QUALITY_SCORE.md +16 -0
- package/templates/next-fastapi-monorepo/docs/RELIABILITY.md +38 -0
- package/templates/next-fastapi-monorepo/docs/SECURITY.md +15 -0
- package/templates/next-fastapi-monorepo/docs/design-docs/core-beliefs.md +6 -0
- package/templates/next-fastapi-monorepo/docs/design-docs/included-skills.md +13 -0
- package/templates/next-fastapi-monorepo/docs/design-docs/index.md +6 -0
- package/templates/next-fastapi-monorepo/docs/exec-plans/active/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/docs/exec-plans/repeated-work.md +15 -0
- package/templates/next-fastapi-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
- package/templates/next-fastapi-monorepo/docs/generated/db-schema.md +3 -0
- package/templates/next-fastapi-monorepo/docs/product-specs/index.md +5 -0
- package/templates/next-fastapi-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
- package/templates/next-fastapi-monorepo/docs/references/design-system-reference-llms.txt +13 -0
- package/templates/next-fastapi-monorepo/docs/references/uv-llms.txt +7 -0
- package/templates/next-fastapi-monorepo/justfile +31 -0
- package/templates/next-fastapi-monorepo/lefthook.yml +8 -0
- package/templates/next-fastapi-monorepo/mise.toml +6 -0
- package/templates/next-fastapi-monorepo/package.json +41 -0
- package/templates/next-fastapi-monorepo/packages/eslint-config/README.md +3 -0
- package/templates/next-fastapi-monorepo/packages/eslint-config/base.js +32 -0
- package/templates/next-fastapi-monorepo/packages/eslint-config/next.js +51 -0
- package/templates/next-fastapi-monorepo/packages/eslint-config/package.json +26 -0
- package/templates/next-fastapi-monorepo/packages/eslint-config/react-internal.js +41 -0
- package/templates/next-fastapi-monorepo/packages/typescript-config/README.md +3 -0
- package/templates/next-fastapi-monorepo/packages/typescript-config/base.json +20 -0
- package/templates/next-fastapi-monorepo/packages/typescript-config/nextjs.json +13 -0
- package/templates/next-fastapi-monorepo/packages/typescript-config/package.json +9 -0
- package/templates/next-fastapi-monorepo/packages/typescript-config/react-library.json +8 -0
- package/templates/next-fastapi-monorepo/packages/ui/components.json +23 -0
- package/templates/next-fastapi-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
- package/templates/next-fastapi-monorepo/packages/ui/eslint.config.js +4 -0
- package/templates/next-fastapi-monorepo/packages/ui/package.json +49 -0
- package/templates/next-fastapi-monorepo/packages/ui/postcss.config.mjs +6 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/config/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/providers/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/repo/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/runtime/utils.ts +6 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/service/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/styles/globals.css +129 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/types/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/ui/button.tsx +65 -0
- package/templates/next-fastapi-monorepo/packages/ui/src/utils/.gitkeep +1 -0
- package/templates/next-fastapi-monorepo/packages/ui/tsconfig.json +10 -0
- package/templates/next-fastapi-monorepo/packages/ui/tsconfig.lint.json +8 -0
- package/templates/next-fastapi-monorepo/pnpm-lock.yaml +12404 -0
- package/templates/next-fastapi-monorepo/pnpm-workspace.yaml +3 -0
- package/templates/next-fastapi-monorepo/renovate.json +6 -0
- package/templates/next-fastapi-monorepo/tsconfig.json +4 -0
- package/templates/next-fastapi-monorepo/turbo.json +27 -0
- package/templates/next-monorepo/.eslintrc.js +13 -0
- package/templates/next-monorepo/.github/workflows/ci.yml +76 -0
- package/templates/next-monorepo/.gitleaks.toml +5 -0
- package/templates/next-monorepo/.prettierignore +7 -0
- package/templates/next-monorepo/.prettierrc +11 -0
- package/templates/next-monorepo/AGENTS.md +35 -0
- package/templates/next-monorepo/ARCHITECTURE.md +67 -0
- package/templates/next-monorepo/README.md +45 -0
- package/templates/next-monorepo/apps/web/app/favicon.ico +0 -0
- package/templates/next-monorepo/apps/web/app/layout.tsx +43 -0
- package/templates/next-monorepo/apps/web/app/page.tsx +19 -0
- package/templates/next-monorepo/apps/web/biome.json +16 -0
- package/templates/next-monorepo/apps/web/components/.gitkeep +0 -0
- package/templates/next-monorepo/apps/web/components/theme-provider.tsx +71 -0
- package/templates/next-monorepo/apps/web/components.json +23 -0
- package/templates/next-monorepo/apps/web/dependency-cruiser.cjs +66 -0
- package/templates/next-monorepo/apps/web/eslint.config.js +4 -0
- package/templates/next-monorepo/apps/web/hooks/.gitkeep +0 -0
- package/templates/next-monorepo/apps/web/knip.json +17 -0
- package/templates/next-monorepo/apps/web/lib/.gitkeep +0 -0
- package/templates/next-monorepo/apps/web/lighthouserc.json +23 -0
- package/templates/next-monorepo/apps/web/next-env.d.ts +6 -0
- package/templates/next-monorepo/apps/web/next.config.mjs +6 -0
- package/templates/next-monorepo/apps/web/package.json +46 -0
- package/templates/next-monorepo/apps/web/playwright.config.ts +18 -0
- package/templates/next-monorepo/apps/web/postcss.config.mjs +1 -0
- package/templates/next-monorepo/apps/web/skills-lock.json +40 -0
- package/templates/next-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
- package/templates/next-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
- package/templates/next-monorepo/apps/web/tsconfig.json +23 -0
- package/templates/next-monorepo/apps/web/vitest.config.ts +13 -0
- package/templates/next-monorepo/apps/web/vitest.setup.ts +1 -0
- package/templates/next-monorepo/docs/DESIGN.md +11 -0
- package/templates/next-monorepo/docs/FRONTEND.md +32 -0
- package/templates/next-monorepo/docs/PLANS.md +25 -0
- package/templates/next-monorepo/docs/PRODUCT_SENSE.md +11 -0
- package/templates/next-monorepo/docs/QUALITY_SCORE.md +18 -0
- package/templates/next-monorepo/docs/RELIABILITY.md +37 -0
- package/templates/next-monorepo/docs/SECURITY.md +14 -0
- package/templates/next-monorepo/docs/design-docs/core-beliefs.md +6 -0
- package/templates/next-monorepo/docs/design-docs/included-skills.md +13 -0
- package/templates/next-monorepo/docs/design-docs/index.md +6 -0
- package/templates/next-monorepo/docs/exec-plans/active/.gitkeep +1 -0
- package/templates/next-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
- package/templates/next-monorepo/docs/exec-plans/repeated-work.md +15 -0
- package/templates/next-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
- package/templates/next-monorepo/docs/generated/db-schema.md +3 -0
- package/templates/next-monorepo/docs/product-specs/index.md +5 -0
- package/templates/next-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
- package/templates/next-monorepo/docs/references/design-system-reference-llms.txt +13 -0
- package/templates/next-monorepo/justfile +26 -0
- package/templates/next-monorepo/lefthook.yml +8 -0
- package/templates/next-monorepo/mise.toml +4 -0
- package/templates/next-monorepo/package.json +41 -0
- package/templates/next-monorepo/packages/eslint-config/README.md +3 -0
- package/templates/next-monorepo/packages/eslint-config/base.js +32 -0
- package/templates/next-monorepo/packages/eslint-config/next.js +51 -0
- package/templates/next-monorepo/packages/eslint-config/package.json +26 -0
- package/templates/next-monorepo/packages/eslint-config/react-internal.js +41 -0
- package/templates/next-monorepo/packages/typescript-config/README.md +3 -0
- package/templates/next-monorepo/packages/typescript-config/base.json +20 -0
- package/templates/next-monorepo/packages/typescript-config/nextjs.json +13 -0
- package/templates/next-monorepo/packages/typescript-config/package.json +9 -0
- package/templates/next-monorepo/packages/typescript-config/react-library.json +8 -0
- package/templates/next-monorepo/packages/ui/components.json +23 -0
- package/templates/next-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
- package/templates/next-monorepo/packages/ui/eslint.config.js +4 -0
- package/templates/next-monorepo/packages/ui/package.json +49 -0
- package/templates/next-monorepo/packages/ui/postcss.config.mjs +6 -0
- package/templates/next-monorepo/packages/ui/src/config/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/providers/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/repo/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/runtime/utils.ts +6 -0
- package/templates/next-monorepo/packages/ui/src/service/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/styles/globals.css +129 -0
- package/templates/next-monorepo/packages/ui/src/types/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/src/ui/button.tsx +65 -0
- package/templates/next-monorepo/packages/ui/src/utils/.gitkeep +1 -0
- package/templates/next-monorepo/packages/ui/tsconfig.json +10 -0
- package/templates/next-monorepo/packages/ui/tsconfig.lint.json +8 -0
- package/templates/next-monorepo/pnpm-lock.yaml +12402 -0
- package/templates/next-monorepo/pnpm-workspace.yaml +3 -0
- package/templates/next-monorepo/renovate.json +6 -0
- package/templates/next-monorepo/tsconfig.json +4 -0
- package/templates/next-monorepo/turbo.json +27 -0
- package/templates/registry.json +22 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://turbo.build/schema.json",
|
|
3
|
+
"ui": "tui",
|
|
4
|
+
"tasks": {
|
|
5
|
+
"build": {
|
|
6
|
+
"dependsOn": ["^build"],
|
|
7
|
+
"inputs": ["$TURBO_DEFAULT$", ".env*"],
|
|
8
|
+
"outputs": [".next/**", "!.next/cache/**"]
|
|
9
|
+
},
|
|
10
|
+
"lint": {
|
|
11
|
+
"dependsOn": ["^lint"]
|
|
12
|
+
},
|
|
13
|
+
"format": {
|
|
14
|
+
"dependsOn": ["^format"]
|
|
15
|
+
},
|
|
16
|
+
"typecheck": {
|
|
17
|
+
"dependsOn": ["^typecheck"]
|
|
18
|
+
},
|
|
19
|
+
"test": {
|
|
20
|
+
"dependsOn": ["^test"]
|
|
21
|
+
},
|
|
22
|
+
"dev": {
|
|
23
|
+
"cache": false,
|
|
24
|
+
"persistent": true
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Root-level ESLint config for a Turborepo workspace.
|
|
2
|
+
// App/package lint rules live in each workspace's eslint.config.js.
|
|
3
|
+
/** @type {import("eslint").Linter.Config} */
|
|
4
|
+
module.exports = {
|
|
5
|
+
root: true,
|
|
6
|
+
ignorePatterns: [
|
|
7
|
+
"**/node_modules/**",
|
|
8
|
+
"**/.next/**",
|
|
9
|
+
"**/dist/**",
|
|
10
|
+
"**/.turbo/**",
|
|
11
|
+
"**/coverage/**",
|
|
12
|
+
],
|
|
13
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
fast:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
- uses: actions/setup-node@v4
|
|
15
|
+
with:
|
|
16
|
+
node-version: 20
|
|
17
|
+
- uses: extractions/setup-just@v2
|
|
18
|
+
- uses: pnpm/action-setup@v4
|
|
19
|
+
with:
|
|
20
|
+
version: 9.15.9
|
|
21
|
+
- run: pnpm install --frozen-lockfile
|
|
22
|
+
- run: just lint
|
|
23
|
+
- run: just typecheck
|
|
24
|
+
|
|
25
|
+
test:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- uses: actions/setup-node@v4
|
|
30
|
+
with:
|
|
31
|
+
node-version: 20
|
|
32
|
+
- uses: extractions/setup-just@v2
|
|
33
|
+
- uses: pnpm/action-setup@v4
|
|
34
|
+
with:
|
|
35
|
+
version: 9.15.9
|
|
36
|
+
- run: pnpm install --frozen-lockfile
|
|
37
|
+
- run: just test
|
|
38
|
+
|
|
39
|
+
ux:
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
- uses: actions/setup-node@v4
|
|
44
|
+
with:
|
|
45
|
+
node-version: 20
|
|
46
|
+
- uses: extractions/setup-just@v2
|
|
47
|
+
- uses: pnpm/action-setup@v4
|
|
48
|
+
with:
|
|
49
|
+
version: 9.15.9
|
|
50
|
+
- run: pnpm install --frozen-lockfile
|
|
51
|
+
- run: pnpm exec playwright install --with-deps chromium
|
|
52
|
+
- run: just ux
|
|
53
|
+
|
|
54
|
+
supply-chain:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
steps:
|
|
57
|
+
- uses: actions/checkout@v4
|
|
58
|
+
with:
|
|
59
|
+
fetch-depth: 0
|
|
60
|
+
- uses: actions/setup-node@v4
|
|
61
|
+
with:
|
|
62
|
+
node-version: 20
|
|
63
|
+
- uses: actions/setup-go@v5
|
|
64
|
+
with:
|
|
65
|
+
go-version: "1.24"
|
|
66
|
+
- uses: pnpm/action-setup@v4
|
|
67
|
+
with:
|
|
68
|
+
version: 9.15.9
|
|
69
|
+
- run: pnpm install --frozen-lockfile
|
|
70
|
+
- run: go install github.com/google/osv-scanner/v2/cmd/osv-scanner@v2.3.5
|
|
71
|
+
- uses: gitleaks/gitleaks-action@v2
|
|
72
|
+
env:
|
|
73
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
74
|
+
GITLEAKS_CONFIG: .gitleaks.toml
|
|
75
|
+
- run: $(go env GOPATH)/bin/osv-scanner scan source -r .
|
|
76
|
+
- run: pnpm audit --audit-level=high
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"endOfLine": "lf",
|
|
3
|
+
"semi": false,
|
|
4
|
+
"singleQuote": false,
|
|
5
|
+
"tabWidth": 2,
|
|
6
|
+
"trailingComma": "es5",
|
|
7
|
+
"printWidth": 80,
|
|
8
|
+
"plugins": ["prettier-plugin-tailwindcss"],
|
|
9
|
+
"tailwindStylesheet": "packages/ui/src/styles/globals.css",
|
|
10
|
+
"tailwindFunctions": ["cn", "cva"]
|
|
11
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Project Context
|
|
2
|
+
|
|
3
|
+
This file is a short table of contents for the template knowledge base.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
System structure and enforced dependency layers: [ARCHITECTURE.md](ARCHITECTURE.md)
|
|
8
|
+
|
|
9
|
+
## Design
|
|
10
|
+
|
|
11
|
+
Design notes and core beliefs: [docs/DESIGN.md](docs/DESIGN.md), [docs/design-docs/index.md](docs/design-docs/index.md)
|
|
12
|
+
|
|
13
|
+
## Frontend
|
|
14
|
+
|
|
15
|
+
Frontend conventions, UI package structure, and shared component rules: [docs/FRONTEND.md](docs/FRONTEND.md)
|
|
16
|
+
|
|
17
|
+
## Product
|
|
18
|
+
|
|
19
|
+
Starter goals and onboarding expectations: [docs/PRODUCT_SENSE.md](docs/PRODUCT_SENSE.md), [docs/product-specs/index.md](docs/product-specs/index.md)
|
|
20
|
+
|
|
21
|
+
## Plans
|
|
22
|
+
|
|
23
|
+
Execution plans and tech debt tracking: [docs/PLANS.md](docs/PLANS.md), [docs/exec-plans/tech-debt-tracker.md](docs/exec-plans/tech-debt-tracker.md)
|
|
24
|
+
|
|
25
|
+
## Reliability
|
|
26
|
+
|
|
27
|
+
Build, test, CI, and operational expectations: [docs/RELIABILITY.md](docs/RELIABILITY.md)
|
|
28
|
+
|
|
29
|
+
## Quality And Security
|
|
30
|
+
|
|
31
|
+
Quality rubric and security posture: [docs/QUALITY_SCORE.md](docs/QUALITY_SCORE.md), [docs/SECURITY.md](docs/SECURITY.md)
|
|
32
|
+
|
|
33
|
+
## References And Generated Artifacts
|
|
34
|
+
|
|
35
|
+
Reference material and generated snapshots: [docs/references/design-system-reference-llms.txt](docs/references/design-system-reference-llms.txt), [docs/generated/db-schema.md](docs/generated/db-schema.md)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## Repository Shape
|
|
4
|
+
|
|
5
|
+
- `apps/web`: the main Next.js application
|
|
6
|
+
- `packages/ui`: the shared UI package used by the app
|
|
7
|
+
- `packages/eslint-config`: shared lint config
|
|
8
|
+
- `packages/typescript-config`: shared TypeScript config
|
|
9
|
+
|
|
10
|
+
## Web App Layers
|
|
11
|
+
|
|
12
|
+
`apps/web` uses `dependency-cruiser` to enforce a small app-level stack:
|
|
13
|
+
|
|
14
|
+
- `app`
|
|
15
|
+
- `components`
|
|
16
|
+
- `hooks`
|
|
17
|
+
- `lib`
|
|
18
|
+
|
|
19
|
+
The important constraints are:
|
|
20
|
+
|
|
21
|
+
- `components` must not import `app`
|
|
22
|
+
- `hooks` may only import `lib`
|
|
23
|
+
- `lib` stays leaf-like
|
|
24
|
+
|
|
25
|
+
The rules live in `apps/web/dependency-cruiser.cjs` and run through `just lint`.
|
|
26
|
+
|
|
27
|
+
## Shared UI Domain Stack
|
|
28
|
+
|
|
29
|
+
`packages/ui` follows the business-domain stack:
|
|
30
|
+
|
|
31
|
+
- `Types`
|
|
32
|
+
- `Config`
|
|
33
|
+
- `Repo`
|
|
34
|
+
- `Service`
|
|
35
|
+
- `Runtime`
|
|
36
|
+
- `UI`
|
|
37
|
+
|
|
38
|
+
In filesystem terms that is:
|
|
39
|
+
|
|
40
|
+
- `src/types`
|
|
41
|
+
- `src/config`
|
|
42
|
+
- `src/repo`
|
|
43
|
+
- `src/service`
|
|
44
|
+
- `src/runtime`
|
|
45
|
+
- `src/ui`
|
|
46
|
+
|
|
47
|
+
Imports must only move forward through that chain.
|
|
48
|
+
|
|
49
|
+
## Explicit Cross-Cutting Boundary
|
|
50
|
+
|
|
51
|
+
Cross-cutting concerns do not enter the stack directly.
|
|
52
|
+
They enter through:
|
|
53
|
+
|
|
54
|
+
- `src/providers`
|
|
55
|
+
|
|
56
|
+
Provider-only helper code lives in:
|
|
57
|
+
|
|
58
|
+
- `src/utils`
|
|
59
|
+
|
|
60
|
+
`src/providers` may support `src/service` and `src/ui`.
|
|
61
|
+
`src/utils` is reserved for provider support and must not depend on domain code.
|
|
62
|
+
|
|
63
|
+
The rules live in `packages/ui/dependency-cruiser.cjs` and run through `just lint`.
|
|
64
|
+
|
|
65
|
+
## No Backend By Default
|
|
66
|
+
|
|
67
|
+
This template does not include a separate API server or database by default.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Next.js Monorepo Template
|
|
2
|
+
|
|
3
|
+
This template ships a README-aligned harness for `apps/web`.
|
|
4
|
+
|
|
5
|
+
## Harness Commands
|
|
6
|
+
|
|
7
|
+
Run all top-level checks from the template root:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
just install
|
|
11
|
+
just lint
|
|
12
|
+
just typecheck
|
|
13
|
+
just test
|
|
14
|
+
just ux
|
|
15
|
+
just supply-chain
|
|
16
|
+
just ci
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`packages/ui` is still generated and updated through `shadcn` commands, but its internal layer boundaries are checked as part of the harness.
|
|
20
|
+
|
|
21
|
+
## What Each Lane Covers
|
|
22
|
+
|
|
23
|
+
- `just lint`: Biome, dependency-cruiser, and knip for `apps/web`; dependency-cruiser layer checks for `packages/ui`
|
|
24
|
+
- `just typecheck`: `tsc --noEmit` for `apps/web`
|
|
25
|
+
- `just test`: Vitest smoke coverage for `apps/web`
|
|
26
|
+
- `just ux`: Playwright, axe, and Lighthouse against the running Next.js app
|
|
27
|
+
- `just supply-chain`: gitleaks, osv-scanner, and `pnpm audit`
|
|
28
|
+
|
|
29
|
+
## Adding Components
|
|
30
|
+
|
|
31
|
+
To add components to your app, run the following command at the root of your `web` app:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pnpm dlx shadcn@latest add button -c apps/web
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This places generated UI components in `packages/ui/src/ui`.
|
|
38
|
+
|
|
39
|
+
## Using Components
|
|
40
|
+
|
|
41
|
+
Import shared components from the `ui` package.
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
import { Button } from "@workspace/ui/ui/button"
|
|
45
|
+
```
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Metadata } from "next"
|
|
2
|
+
import { Geist_Mono, Inter } from "next/font/google"
|
|
3
|
+
|
|
4
|
+
import "@workspace/ui/globals.css"
|
|
5
|
+
import { ThemeProvider } from "@/components/theme-provider"
|
|
6
|
+
import { cn } from "@workspace/ui/runtime/utils"
|
|
7
|
+
|
|
8
|
+
const inter = Inter({
|
|
9
|
+
subsets: ["latin"],
|
|
10
|
+
variable: "--font-sans",
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
const fontMono = Geist_Mono({
|
|
14
|
+
subsets: ["latin"],
|
|
15
|
+
variable: "--font-mono",
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
export const metadata: Metadata = {
|
|
19
|
+
title: "Project ready",
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default function RootLayout({
|
|
23
|
+
children,
|
|
24
|
+
}: Readonly<{
|
|
25
|
+
children: React.ReactNode
|
|
26
|
+
}>) {
|
|
27
|
+
return (
|
|
28
|
+
<html
|
|
29
|
+
lang="en"
|
|
30
|
+
suppressHydrationWarning
|
|
31
|
+
className={cn(
|
|
32
|
+
"antialiased",
|
|
33
|
+
fontMono.variable,
|
|
34
|
+
"font-sans",
|
|
35
|
+
inter.variable,
|
|
36
|
+
)}
|
|
37
|
+
>
|
|
38
|
+
<body>
|
|
39
|
+
<ThemeProvider>{children}</ThemeProvider>
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Button } from "@workspace/ui/ui/button"
|
|
2
|
+
|
|
3
|
+
export default function Page() {
|
|
4
|
+
return (
|
|
5
|
+
<main className="flex min-h-svh p-6">
|
|
6
|
+
<div className="flex max-w-md min-w-0 flex-col gap-4 text-sm leading-loose">
|
|
7
|
+
<section>
|
|
8
|
+
<h1 className="font-medium">Project ready!</h1>
|
|
9
|
+
<p>You may now add components and start building.</p>
|
|
10
|
+
<p>We've already added the button component for you.</p>
|
|
11
|
+
<Button className="mt-2">Button</Button>
|
|
12
|
+
</section>
|
|
13
|
+
<div className="text-muted-foreground font-mono text-xs">
|
|
14
|
+
(Press <kbd>d</kbd> to toggle dark mode)
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
</main>
|
|
18
|
+
)
|
|
19
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
3
|
+
"formatter": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"indentStyle": "space"
|
|
6
|
+
},
|
|
7
|
+
"linter": {
|
|
8
|
+
"enabled": true
|
|
9
|
+
},
|
|
10
|
+
"javascript": {
|
|
11
|
+
"formatter": {
|
|
12
|
+
"quoteStyle": "double",
|
|
13
|
+
"semicolons": "asNeeded"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes"
|
|
4
|
+
import * as React from "react"
|
|
5
|
+
|
|
6
|
+
function ThemeProvider({
|
|
7
|
+
children,
|
|
8
|
+
...props
|
|
9
|
+
}: React.ComponentProps<typeof NextThemesProvider>) {
|
|
10
|
+
return (
|
|
11
|
+
<NextThemesProvider
|
|
12
|
+
attribute="class"
|
|
13
|
+
defaultTheme="system"
|
|
14
|
+
enableSystem
|
|
15
|
+
disableTransitionOnChange
|
|
16
|
+
{...props}
|
|
17
|
+
>
|
|
18
|
+
<ThemeHotkey />
|
|
19
|
+
{children}
|
|
20
|
+
</NextThemesProvider>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function isTypingTarget(target: EventTarget | null) {
|
|
25
|
+
if (!(target instanceof HTMLElement)) {
|
|
26
|
+
return false
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
target.isContentEditable ||
|
|
31
|
+
target.tagName === "INPUT" ||
|
|
32
|
+
target.tagName === "TEXTAREA" ||
|
|
33
|
+
target.tagName === "SELECT"
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function ThemeHotkey() {
|
|
38
|
+
const { resolvedTheme, setTheme } = useTheme()
|
|
39
|
+
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
function onKeyDown(event: KeyboardEvent) {
|
|
42
|
+
if (event.defaultPrevented || event.repeat) {
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (event.metaKey || event.ctrlKey || event.altKey) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (event.key.toLowerCase() !== "d") {
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (isTypingTarget(event.target)) {
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
setTheme(resolvedTheme === "dark" ? "light" : "dark")
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
window.addEventListener("keydown", onKeyDown)
|
|
62
|
+
|
|
63
|
+
return () => {
|
|
64
|
+
window.removeEventListener("keydown", onKeyDown)
|
|
65
|
+
}
|
|
66
|
+
}, [resolvedTheme, setTheme])
|
|
67
|
+
|
|
68
|
+
return null
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { ThemeProvider }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "radix-lyra",
|
|
4
|
+
"rsc": true,
|
|
5
|
+
"tsx": true,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "",
|
|
8
|
+
"css": "../../packages/ui/src/styles/globals.css",
|
|
9
|
+
"baseColor": "neutral",
|
|
10
|
+
"cssVariables": true
|
|
11
|
+
},
|
|
12
|
+
"iconLibrary": "lucide",
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@/components",
|
|
15
|
+
"hooks": "@/hooks",
|
|
16
|
+
"lib": "@/lib",
|
|
17
|
+
"utils": "@workspace/ui/runtime/utils",
|
|
18
|
+
"ui": "@workspace/ui/ui"
|
|
19
|
+
},
|
|
20
|
+
"rtl": true,
|
|
21
|
+
"menuColor": "default",
|
|
22
|
+
"menuAccent": "subtle"
|
|
23
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** @type {import("dependency-cruiser").IConfiguration} */
|
|
2
|
+
module.exports = {
|
|
3
|
+
forbidden: [
|
|
4
|
+
{
|
|
5
|
+
name: "no-circular",
|
|
6
|
+
severity: "error",
|
|
7
|
+
from: {},
|
|
8
|
+
to: {
|
|
9
|
+
circular: true,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "app-does-not-import-upwards",
|
|
14
|
+
severity: "error",
|
|
15
|
+
from: {
|
|
16
|
+
path: "^app/",
|
|
17
|
+
},
|
|
18
|
+
to: {
|
|
19
|
+
path: "^(?!app/|components/|hooks/|lib/)",
|
|
20
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "components-do-not-import-app",
|
|
25
|
+
severity: "error",
|
|
26
|
+
from: {
|
|
27
|
+
path: "^components/",
|
|
28
|
+
},
|
|
29
|
+
to: {
|
|
30
|
+
path: "^(app/|(?!(components/|hooks/|lib/)).+)",
|
|
31
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "hooks-only-import-lib",
|
|
36
|
+
severity: "error",
|
|
37
|
+
from: {
|
|
38
|
+
path: "^hooks/",
|
|
39
|
+
},
|
|
40
|
+
to: {
|
|
41
|
+
path: "^(app/|components/|hooks/|(?!(lib/)).+)",
|
|
42
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "lib-does-not-import-upwards",
|
|
47
|
+
severity: "error",
|
|
48
|
+
from: {
|
|
49
|
+
path: "^lib/",
|
|
50
|
+
},
|
|
51
|
+
to: {
|
|
52
|
+
path: "^(app/|components/|hooks/|(?!(lib/)).+)",
|
|
53
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
options: {
|
|
58
|
+
doNotFollow: {
|
|
59
|
+
path: "node_modules",
|
|
60
|
+
},
|
|
61
|
+
includeOnly: "^(app|components|hooks|lib)",
|
|
62
|
+
tsConfig: {
|
|
63
|
+
fileName: "tsconfig.json",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://unpkg.com/knip@5/schema.json",
|
|
3
|
+
"entry": [
|
|
4
|
+
"app/page.tsx",
|
|
5
|
+
"components/theme-provider.tsx",
|
|
6
|
+
"next.config.mjs",
|
|
7
|
+
"postcss.config.mjs",
|
|
8
|
+
"playwright.config.ts",
|
|
9
|
+
"vitest.config.ts"
|
|
10
|
+
],
|
|
11
|
+
"project": [
|
|
12
|
+
"app/**/*.{ts,tsx}",
|
|
13
|
+
"components/**/*.{ts,tsx}",
|
|
14
|
+
"tests/**/*.{ts,tsx}"
|
|
15
|
+
],
|
|
16
|
+
"ignoreDependencies": ["@workspace/ui", "@tailwindcss/postcss"]
|
|
17
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ci": {
|
|
3
|
+
"collect": {
|
|
4
|
+
"numberOfRuns": 1,
|
|
5
|
+
"url": ["http://127.0.0.1:3000/"],
|
|
6
|
+
"settings": {
|
|
7
|
+
"preset": "desktop",
|
|
8
|
+
"chromeFlags": "--headless --no-sandbox"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"assert": {
|
|
12
|
+
"assertions": {
|
|
13
|
+
"categories:accessibility": ["error", { "minScore": 0.9 }],
|
|
14
|
+
"categories:best-practices": ["error", { "minScore": 0.9 }],
|
|
15
|
+
"categories:performance": ["warn", { "minScore": 0.6 }],
|
|
16
|
+
"categories:seo": "off"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"upload": {
|
|
20
|
+
"target": "temporary-public-storage"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "web",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "next dev --turbopack",
|
|
8
|
+
"build": "next build",
|
|
9
|
+
"start": "next start",
|
|
10
|
+
"lint": "biome check . && depcruise --config dependency-cruiser.cjs . && knip --config knip.json --no-config-hints",
|
|
11
|
+
"format": "biome format --write .",
|
|
12
|
+
"typecheck": "tsc --noEmit",
|
|
13
|
+
"test": "vitest run --config vitest.config.ts",
|
|
14
|
+
"test:e2e": "playwright test",
|
|
15
|
+
"lighthouse": "lhci autorun --config ./lighthouserc.json",
|
|
16
|
+
"ux": "start-server-and-test \"pnpm dev\" http://127.0.0.1:3000 \"pnpm test:e2e && pnpm lighthouse\""
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@workspace/ui": "workspace:*",
|
|
20
|
+
"next": "16.1.6",
|
|
21
|
+
"next-themes": "^0.4.6",
|
|
22
|
+
"react": "^19.2.4",
|
|
23
|
+
"react-dom": "^19.2.4"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@axe-core/playwright": "^4.11.0",
|
|
27
|
+
"@biomejs/biome": "^1.9.4",
|
|
28
|
+
"@lhci/cli": "^0.15.1",
|
|
29
|
+
"@playwright/test": "^1.51.1",
|
|
30
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
31
|
+
"@testing-library/jest-dom": "^6.8.0",
|
|
32
|
+
"@testing-library/react": "^16.3.0",
|
|
33
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
34
|
+
"@types/node": "^25.1.0",
|
|
35
|
+
"@types/react": "^19.2.10",
|
|
36
|
+
"@types/react-dom": "^19.2.3",
|
|
37
|
+
"@workspace/typescript-config": "workspace:*",
|
|
38
|
+
"dependency-cruiser": "^17.1.0",
|
|
39
|
+
"jsdom": "^26.1.0",
|
|
40
|
+
"knip": "^5.44.4",
|
|
41
|
+
"start-server-and-test": "^3.0.2",
|
|
42
|
+
"typescript": "^5.9.3",
|
|
43
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
44
|
+
"vitest": "^3.2.4"
|
|
45
|
+
}
|
|
46
|
+
}
|