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,13 @@
|
|
|
1
|
+
# Included Skills
|
|
2
|
+
|
|
3
|
+
The web app ships with design and frontend reference skills in `apps/web/skills-lock.json`.
|
|
4
|
+
|
|
5
|
+
- `frontend-design`
|
|
6
|
+
- `shadcn`
|
|
7
|
+
- `vercel-composition-patterns`
|
|
8
|
+
- `vercel-react-best-practices`
|
|
9
|
+
- `vercel-react-native-skills`
|
|
10
|
+
- `vercel-react-view-transitions`
|
|
11
|
+
- `web-design-guidelines`
|
|
12
|
+
|
|
13
|
+
Treat these as scaffolded defaults for UI and interaction work.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Repeated Work
|
|
2
|
+
|
|
3
|
+
## Doc Gardening
|
|
4
|
+
|
|
5
|
+
The knowledge base needs periodic manual gardening.
|
|
6
|
+
|
|
7
|
+
Repeat this work when template behavior, architecture rules, onboarding flow, or public commands change:
|
|
8
|
+
|
|
9
|
+
- review `AGENTS.md` and `ARCHITECTURE.md`
|
|
10
|
+
- review `docs/design-docs/`, `docs/product-specs/`, and `docs/references/`
|
|
11
|
+
- move stale execution plans from `active/` to `completed/`
|
|
12
|
+
- update `tech-debt-tracker.md` when cleanup work is discovered
|
|
13
|
+
- remove outdated or irrelevant references that no longer match the stack
|
|
14
|
+
|
|
15
|
+
This work is intentionally documented here rather than automated in CI.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# New User Onboarding
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
A freshly scaffolded project should prove both the web app and FastAPI service are wired correctly with minimal setup.
|
|
6
|
+
|
|
7
|
+
## Default Experience
|
|
8
|
+
|
|
9
|
+
- the home page renders immediately
|
|
10
|
+
- the shared button component is already usable
|
|
11
|
+
- the API exposes a minimal JSON health surface
|
|
12
|
+
- the next customization step is obvious
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
This reference should contain only design-system facts for the shared UI package.
|
|
2
|
+
|
|
3
|
+
Current baseline:
|
|
4
|
+
- UI system: `shadcn`
|
|
5
|
+
- style preset: `radix-lyra`
|
|
6
|
+
- Tailwind base color: `neutral`
|
|
7
|
+
- CSS variables: enabled
|
|
8
|
+
- icon library: `lucide`
|
|
9
|
+
- theme tokens live in `packages/ui/src/styles/globals.css`
|
|
10
|
+
- the starter includes light and dark theme tokens using OKLCH color values
|
|
11
|
+
- the radius scale is derived from `--radius: 0.625rem`
|
|
12
|
+
|
|
13
|
+
Update this file when the component style, token set, icon set, or theming rules change.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
set shell := ["bash", "-cu"]
|
|
2
|
+
|
|
3
|
+
install:
|
|
4
|
+
mise install
|
|
5
|
+
pnpm install --frozen-lockfile
|
|
6
|
+
(cd apps/api && uv sync --group dev)
|
|
7
|
+
pnpm exec playwright install chromium
|
|
8
|
+
|
|
9
|
+
lint:
|
|
10
|
+
pnpm --filter web lint
|
|
11
|
+
pnpm --dir packages/ui exec depcruise --config dependency-cruiser.cjs src
|
|
12
|
+
pnpm --filter api lint
|
|
13
|
+
|
|
14
|
+
typecheck:
|
|
15
|
+
pnpm --filter web typecheck
|
|
16
|
+
pnpm --filter api typecheck
|
|
17
|
+
|
|
18
|
+
test:
|
|
19
|
+
pnpm --filter web test
|
|
20
|
+
pnpm --filter api test
|
|
21
|
+
|
|
22
|
+
ux:
|
|
23
|
+
pnpm --filter web ux
|
|
24
|
+
|
|
25
|
+
supply-chain:
|
|
26
|
+
gitleaks dir . --config .gitleaks.toml
|
|
27
|
+
osv-scanner scan source -r .
|
|
28
|
+
pnpm audit --audit-level=high
|
|
29
|
+
pnpm --filter api supply-chain
|
|
30
|
+
|
|
31
|
+
ci: lint typecheck test ux supply-chain
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "next-fastapi-monorepo",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "turbo build",
|
|
7
|
+
"dev": "turbo dev --filter=web --filter=api",
|
|
8
|
+
"lint": "just lint",
|
|
9
|
+
"format": "pnpm --filter web format",
|
|
10
|
+
"typecheck": "just typecheck",
|
|
11
|
+
"test": "just test",
|
|
12
|
+
"ux": "just ux",
|
|
13
|
+
"supply-chain": "just supply-chain",
|
|
14
|
+
"ci": "just ci"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@axe-core/playwright": "^4.11.0",
|
|
18
|
+
"@biomejs/biome": "^1.9.4",
|
|
19
|
+
"@lhci/cli": "^0.15.1",
|
|
20
|
+
"@playwright/test": "^1.51.1",
|
|
21
|
+
"@testing-library/jest-dom": "^6.8.0",
|
|
22
|
+
"@testing-library/react": "^16.3.0",
|
|
23
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
24
|
+
"@workspace/eslint-config": "workspace:*",
|
|
25
|
+
"@workspace/typescript-config": "workspace:*",
|
|
26
|
+
"dependency-cruiser": "^17.1.0",
|
|
27
|
+
"jsdom": "^26.1.0",
|
|
28
|
+
"knip": "^5.44.4",
|
|
29
|
+
"prettier": "^3.8.1",
|
|
30
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
31
|
+
"start-server-and-test": "^3.0.2",
|
|
32
|
+
"turbo": "^2.8.17",
|
|
33
|
+
"typescript": "5.9.3",
|
|
34
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
35
|
+
"vitest": "^3.2.4"
|
|
36
|
+
},
|
|
37
|
+
"packageManager": "pnpm@9.15.9",
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=20"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import js from "@eslint/js"
|
|
2
|
+
import eslintConfigPrettier from "eslint-config-prettier"
|
|
3
|
+
import onlyWarn from "eslint-plugin-only-warn"
|
|
4
|
+
import turboPlugin from "eslint-plugin-turbo"
|
|
5
|
+
import tseslint from "typescript-eslint"
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A shared ESLint configuration for the repository.
|
|
9
|
+
*
|
|
10
|
+
* @type {import("eslint").Linter.Config}
|
|
11
|
+
* */
|
|
12
|
+
export const config = [
|
|
13
|
+
js.configs.recommended,
|
|
14
|
+
eslintConfigPrettier,
|
|
15
|
+
...tseslint.configs.recommended,
|
|
16
|
+
{
|
|
17
|
+
plugins: {
|
|
18
|
+
turbo: turboPlugin,
|
|
19
|
+
},
|
|
20
|
+
rules: {
|
|
21
|
+
"turbo/no-undeclared-env-vars": "warn",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
plugins: {
|
|
26
|
+
onlyWarn,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
ignores: ["dist/**", ".next/**", "**/.turbo/**", "**/coverage/**"],
|
|
31
|
+
},
|
|
32
|
+
]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import js from "@eslint/js"
|
|
2
|
+
import pluginNext from "@next/eslint-plugin-next"
|
|
3
|
+
import eslintConfigPrettier from "eslint-config-prettier"
|
|
4
|
+
import pluginReact from "eslint-plugin-react"
|
|
5
|
+
import pluginReactHooks from "eslint-plugin-react-hooks"
|
|
6
|
+
import globals from "globals"
|
|
7
|
+
import tseslint from "typescript-eslint"
|
|
8
|
+
|
|
9
|
+
import { config as baseConfig } from "./base.js"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A custom ESLint configuration for libraries that use Next.js.
|
|
13
|
+
*
|
|
14
|
+
* @type {import("eslint").Linter.Config}
|
|
15
|
+
* */
|
|
16
|
+
export const nextJsConfig = [
|
|
17
|
+
...baseConfig,
|
|
18
|
+
js.configs.recommended,
|
|
19
|
+
eslintConfigPrettier,
|
|
20
|
+
...tseslint.configs.recommended,
|
|
21
|
+
{
|
|
22
|
+
...pluginReact.configs.flat.recommended,
|
|
23
|
+
languageOptions: {
|
|
24
|
+
...pluginReact.configs.flat.recommended.languageOptions,
|
|
25
|
+
globals: {
|
|
26
|
+
...globals.serviceworker,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
plugins: {
|
|
32
|
+
"@next/next": pluginNext,
|
|
33
|
+
},
|
|
34
|
+
rules: {
|
|
35
|
+
...pluginNext.configs.recommended.rules,
|
|
36
|
+
...pluginNext.configs["core-web-vitals"].rules,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
plugins: {
|
|
41
|
+
"react-hooks": pluginReactHooks,
|
|
42
|
+
},
|
|
43
|
+
settings: { react: { version: "detect" } },
|
|
44
|
+
rules: {
|
|
45
|
+
...pluginReactHooks.configs.recommended.rules,
|
|
46
|
+
// React scope no longer necessary with new JSX transform.
|
|
47
|
+
"react/react-in-jsx-scope": "off",
|
|
48
|
+
"react/prop-types": "off",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@workspace/eslint-config",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": true,
|
|
6
|
+
"exports": {
|
|
7
|
+
"./base": "./base.js",
|
|
8
|
+
"./next-js": "./next.js",
|
|
9
|
+
"./react-internal": "./react-internal.js"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@eslint/js": "^9.39.2",
|
|
13
|
+
"@next/eslint-plugin-next": "^16.1.6",
|
|
14
|
+
"@typescript-eslint/eslint-plugin": "^8.54.0",
|
|
15
|
+
"@typescript-eslint/parser": "^8.54.0",
|
|
16
|
+
"eslint": "^9.39.2",
|
|
17
|
+
"eslint-config-prettier": "^10.1.8",
|
|
18
|
+
"eslint-plugin-only-warn": "^1.1.0",
|
|
19
|
+
"eslint-plugin-react": "^7.37.5",
|
|
20
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
21
|
+
"eslint-plugin-turbo": "^2.8.1",
|
|
22
|
+
"globals": "^17.2.0",
|
|
23
|
+
"typescript": "^5.9.3",
|
|
24
|
+
"typescript-eslint": "^8.54.0"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import js from "@eslint/js"
|
|
2
|
+
import eslintConfigPrettier from "eslint-config-prettier"
|
|
3
|
+
import pluginReact from "eslint-plugin-react"
|
|
4
|
+
import pluginReactHooks from "eslint-plugin-react-hooks"
|
|
5
|
+
import globals from "globals"
|
|
6
|
+
import tseslint from "typescript-eslint"
|
|
7
|
+
|
|
8
|
+
import { config as baseConfig } from "./base.js"
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A custom ESLint configuration for libraries that use React.
|
|
12
|
+
*
|
|
13
|
+
* @type {import("eslint").Linter.Config} */
|
|
14
|
+
export const config = [
|
|
15
|
+
...baseConfig,
|
|
16
|
+
js.configs.recommended,
|
|
17
|
+
eslintConfigPrettier,
|
|
18
|
+
...tseslint.configs.recommended,
|
|
19
|
+
pluginReact.configs.flat.recommended,
|
|
20
|
+
{
|
|
21
|
+
languageOptions: {
|
|
22
|
+
...pluginReact.configs.flat.recommended.languageOptions,
|
|
23
|
+
globals: {
|
|
24
|
+
...globals.serviceworker,
|
|
25
|
+
...globals.browser,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
plugins: {
|
|
31
|
+
"react-hooks": pluginReactHooks,
|
|
32
|
+
},
|
|
33
|
+
settings: { react: { version: "detect" } },
|
|
34
|
+
rules: {
|
|
35
|
+
...pluginReactHooks.configs.recommended.rules,
|
|
36
|
+
// React scope no longer necessary with new JSX transform.
|
|
37
|
+
"react/react-in-jsx-scope": "off",
|
|
38
|
+
"react/prop-types": "off",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"display": "Default",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"declarationMap": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"incremental": false,
|
|
9
|
+
"isolatedModules": true,
|
|
10
|
+
"lib": ["es2022", "DOM", "DOM.Iterable"],
|
|
11
|
+
"module": "NodeNext",
|
|
12
|
+
"moduleDetection": "force",
|
|
13
|
+
"moduleResolution": "NodeNext",
|
|
14
|
+
"noUncheckedIndexedAccess": true,
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"skipLibCheck": true,
|
|
17
|
+
"strict": true,
|
|
18
|
+
"target": "ES2022"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"display": "Next.js",
|
|
4
|
+
"extends": "./base.json",
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"plugins": [{ "name": "next" }],
|
|
7
|
+
"module": "ESNext",
|
|
8
|
+
"moduleResolution": "Bundler",
|
|
9
|
+
"allowJs": true,
|
|
10
|
+
"jsx": "preserve",
|
|
11
|
+
"noEmit": true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -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": "src/styles/globals.css",
|
|
9
|
+
"baseColor": "neutral",
|
|
10
|
+
"cssVariables": true
|
|
11
|
+
},
|
|
12
|
+
"iconLibrary": "lucide",
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@workspace/ui/ui",
|
|
15
|
+
"utils": "@workspace/ui/runtime/utils",
|
|
16
|
+
"hooks": "@workspace/ui/runtime/hooks",
|
|
17
|
+
"lib": "@workspace/ui/runtime",
|
|
18
|
+
"ui": "@workspace/ui/ui"
|
|
19
|
+
},
|
|
20
|
+
"rtl": true,
|
|
21
|
+
"menuColor": "default",
|
|
22
|
+
"menuAccent": "subtle"
|
|
23
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
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: "types-do-not-import-upwards",
|
|
14
|
+
severity: "error",
|
|
15
|
+
from: {
|
|
16
|
+
path: "^src/types/",
|
|
17
|
+
},
|
|
18
|
+
to: {
|
|
19
|
+
path: "^src/(config|repo|service|runtime|providers|ui|utils)/",
|
|
20
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "config-does-not-import-upwards",
|
|
25
|
+
severity: "error",
|
|
26
|
+
from: {
|
|
27
|
+
path: "^src/config/",
|
|
28
|
+
},
|
|
29
|
+
to: {
|
|
30
|
+
path: "^src/(repo|service|runtime|providers|ui|utils)/",
|
|
31
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "repo-does-not-import-upwards",
|
|
36
|
+
severity: "error",
|
|
37
|
+
from: {
|
|
38
|
+
path: "^src/repo/",
|
|
39
|
+
},
|
|
40
|
+
to: {
|
|
41
|
+
path: "^src/(service|runtime|providers|ui|utils)/",
|
|
42
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "service-does-not-import-upwards",
|
|
47
|
+
severity: "error",
|
|
48
|
+
from: {
|
|
49
|
+
path: "^src/service/",
|
|
50
|
+
},
|
|
51
|
+
to: {
|
|
52
|
+
path: "^src/(runtime|ui|utils)/",
|
|
53
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "runtime-does-not-import-ui",
|
|
58
|
+
severity: "error",
|
|
59
|
+
from: {
|
|
60
|
+
path: "^src/runtime/",
|
|
61
|
+
},
|
|
62
|
+
to: {
|
|
63
|
+
path: "^src/(providers|ui|utils)/",
|
|
64
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "providers-only-import-types-and-utils",
|
|
69
|
+
severity: "error",
|
|
70
|
+
from: {
|
|
71
|
+
path: "^src/providers/",
|
|
72
|
+
},
|
|
73
|
+
to: {
|
|
74
|
+
path: "^src/(config|repo|service|runtime|ui)/",
|
|
75
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "utils-do-not-import-domain",
|
|
80
|
+
severity: "error",
|
|
81
|
+
from: {
|
|
82
|
+
path: "^src/utils/",
|
|
83
|
+
},
|
|
84
|
+
to: {
|
|
85
|
+
path: "^src/(types|config|repo|service|runtime|providers|ui)/",
|
|
86
|
+
dependencyTypesNot: ["npm", "npm-dev", "core"],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
options: {
|
|
91
|
+
doNotFollow: {
|
|
92
|
+
path: "node_modules",
|
|
93
|
+
},
|
|
94
|
+
includeOnly:
|
|
95
|
+
"^(src/types|src/config|src/repo|src/service|src/runtime|src/providers|src/ui|src/utils)",
|
|
96
|
+
tsConfig: {
|
|
97
|
+
fileName: "tsconfig.json",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@workspace/ui",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"lint": "eslint",
|
|
8
|
+
"format": "prettier --write \"**/*.{ts,tsx}\"",
|
|
9
|
+
"typecheck": "tsc --noEmit"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"class-variance-authority": "^0.7.1",
|
|
13
|
+
"clsx": "^2.1.1",
|
|
14
|
+
"lucide-react": "^1.8.0",
|
|
15
|
+
"next-themes": "^0.4.6",
|
|
16
|
+
"radix-ui": "^1.4.3",
|
|
17
|
+
"react": "^19.2.4",
|
|
18
|
+
"react-dom": "^19.2.4",
|
|
19
|
+
"shadcn": "^4.2.0",
|
|
20
|
+
"tailwind-merge": "^3.5.0",
|
|
21
|
+
"tw-animate-css": "^1.4.0",
|
|
22
|
+
"zod": "^3.25.76"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
26
|
+
"@turbo/gen": "^2.8.1",
|
|
27
|
+
"@types/node": "^25.1.0",
|
|
28
|
+
"@types/react": "^19.2.10",
|
|
29
|
+
"@types/react-dom": "^19.2.3",
|
|
30
|
+
"@workspace/eslint-config": "workspace:*",
|
|
31
|
+
"@workspace/typescript-config": "workspace:*",
|
|
32
|
+
"eslint": "^9.39.2",
|
|
33
|
+
"tailwindcss": "^4.1.18",
|
|
34
|
+
"typescript": "^5.9.3"
|
|
35
|
+
},
|
|
36
|
+
"exports": {
|
|
37
|
+
"./globals.css": "./src/styles/globals.css",
|
|
38
|
+
"./postcss.config": "./postcss.config.mjs",
|
|
39
|
+
"./types/*": "./src/types/*.ts",
|
|
40
|
+
"./config/*": "./src/config/*.ts",
|
|
41
|
+
"./repo/*": "./src/repo/*.ts",
|
|
42
|
+
"./service/*": "./src/service/*.ts",
|
|
43
|
+
"./runtime/*": "./src/runtime/*.ts",
|
|
44
|
+
"./runtime/hooks/*": "./src/runtime/hooks/*.ts",
|
|
45
|
+
"./providers/*": "./src/providers/*.ts",
|
|
46
|
+
"./utils/*": "./src/utils/*.ts",
|
|
47
|
+
"./ui/*": "./src/ui/*.tsx"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|