From 09ca301d519e879a9639f24f2963e118ea6afae5 Mon Sep 17 00:00:00 2001 From: h Date: Thu, 15 Oct 2026 14:07:04 +0200 Subject: [PATCH] feat(*): initial project from templates --- .claude/rules/svelte.md | 23 + .claude/rules/ultracite.md | 123 ++++ .claude/settings.json | 15 + .copier/backend.yml | 16 + .copier/caddy.yml | 5 + .copier/frontend.yml | 9 + .copier/infra.yml | 11 + .env.example | 2 + .gitignore | 9 + .mcp.json | 8 + .pre-commit-config.yaml | 27 + CLAUDE.md | 16 + Makefile | 34 + README.md | 11 + backend/.dockerignore | 7 + backend/.env.example | 13 + backend/.gitignore | 6 + backend/.python-version | 1 + backend/CLAUDE.md | 8 + backend/Dockerfile | 19 + backend/Makefile | 16 + backend/docker-compose.override.yml.example | 13 + backend/docker-compose.yml | 19 + backend/pyproject.toml | 49 ++ backend/scripts/check_imports.py | 41 ++ backend/src/api/__init__.py | 0 backend/src/api/__main__.py | 17 + backend/src/api/app.py | 45 ++ backend/src/api/middlewares/__init__.py | 0 backend/src/api/modules/__init__.py | 0 backend/src/api/routers/__init__.py | 6 + backend/src/api/routers/api/__init__.py | 6 + backend/src/api/routers/api/health.py | 9 + backend/src/api/schemas/__init__.py | 0 backend/src/utils/__init__.py | 4 + backend/src/utils/env.py | 37 + backend/src/utils/imports.py | 6 + backend/src/utils/logging.py | 33 + backend/uv.lock | 691 +++++++++++++++++++ caddy/.env.example | 2 + caddy/.gitignore | 2 + caddy/Caddyfile.example | 14 + caddy/README.md | 3 + caddy/docker-compose.yml | 23 + caddy/site.caddy | 5 + docker-compose.yml | 5 + frontend/.dockerignore | 7 + frontend/.env.example | 2 + frontend/.gitignore | 18 + frontend/.npmrc | 1 + frontend/CLAUDE.md | 6 + frontend/Makefile | 16 + frontend/biome.jsonc | 28 + frontend/bun.lock | 448 ++++++++++++ frontend/docker-compose.override.yml.example | 13 + frontend/docker-compose.yml | 22 + frontend/package.json | 34 + frontend/src/app.d.ts | 13 + frontend/src/app.html | 13 + frontend/src/env.ts | 5 + frontend/src/lib/api/client.ts | 56 ++ frontend/src/lib/index.ts | 2 + frontend/src/routes/+layout.svelte | 7 + frontend/src/routes/+layout.ts | 2 + frontend/src/routes/+page.svelte | 13 + frontend/src/routes/layout.css | 17 + frontend/tsconfig.json | 9 + frontend/vite.config.ts | 34 + renovate.jsonc | 4 + ty.toml | 5 + 70 files changed, 2184 insertions(+) create mode 100644 .claude/rules/svelte.md create mode 100644 .claude/rules/ultracite.md create mode 100644 .claude/settings.json create mode 100644 .copier/backend.yml create mode 100644 .copier/caddy.yml create mode 100644 .copier/frontend.yml create mode 100644 .copier/infra.yml create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .mcp.json create mode 100644 .pre-commit-config.yaml create mode 100644 CLAUDE.md create mode 100644 Makefile create mode 100644 README.md create mode 100644 backend/.dockerignore create mode 100644 backend/.env.example create mode 100644 backend/.gitignore create mode 100644 backend/.python-version create mode 100644 backend/CLAUDE.md create mode 100644 backend/Dockerfile create mode 100644 backend/Makefile create mode 100644 backend/docker-compose.override.yml.example create mode 100644 backend/docker-compose.yml create mode 100644 backend/pyproject.toml create mode 100644 backend/scripts/check_imports.py create mode 100644 backend/src/api/__init__.py create mode 100644 backend/src/api/__main__.py create mode 100644 backend/src/api/app.py create mode 100644 backend/src/api/middlewares/__init__.py create mode 100644 backend/src/api/modules/__init__.py create mode 100644 backend/src/api/routers/__init__.py create mode 100644 backend/src/api/routers/api/__init__.py create mode 100644 backend/src/api/routers/api/health.py create mode 100644 backend/src/api/schemas/__init__.py create mode 100644 backend/src/utils/__init__.py create mode 100644 backend/src/utils/env.py create mode 100644 backend/src/utils/imports.py create mode 100644 backend/src/utils/logging.py create mode 100644 backend/uv.lock create mode 100644 caddy/.env.example create mode 100644 caddy/.gitignore create mode 100644 caddy/Caddyfile.example create mode 100644 caddy/README.md create mode 100644 caddy/docker-compose.yml create mode 100644 caddy/site.caddy create mode 100644 docker-compose.yml create mode 100644 frontend/.dockerignore create mode 100644 frontend/.env.example create mode 100644 frontend/.gitignore create mode 100644 frontend/.npmrc create mode 100644 frontend/CLAUDE.md create mode 100644 frontend/Makefile create mode 100644 frontend/biome.jsonc create mode 100644 frontend/bun.lock create mode 100644 frontend/docker-compose.override.yml.example create mode 100644 frontend/docker-compose.yml create mode 100644 frontend/package.json create mode 100644 frontend/src/app.d.ts create mode 100644 frontend/src/app.html create mode 100644 frontend/src/env.ts create mode 100644 frontend/src/lib/api/client.ts create mode 100644 frontend/src/lib/index.ts create mode 100644 frontend/src/routes/+layout.svelte create mode 100644 frontend/src/routes/+layout.ts create mode 100644 frontend/src/routes/+page.svelte create mode 100644 frontend/src/routes/layout.css create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts create mode 100644 renovate.jsonc create mode 100644 ty.toml diff --git a/.claude/rules/svelte.md b/.claude/rules/svelte.md new file mode 100644 index 0000000..4711cd0 --- /dev/null +++ b/.claude/rules/svelte.md @@ -0,0 +1,23 @@ +You are able to use the Svelte MCP server, where you have access to comprehensive Svelte 5 and SvelteKit documentation. Here's how to use the available tools effectively: + +## Available Svelte MCP Tools: + +### 1. list-sections + +Use this FIRST to discover all available documentation sections. Returns a structured list with titles, use_cases, and paths. +When asked about Svelte or SvelteKit topics, ALWAYS use this tool at the start of the chat to find relevant sections. + +### 2. get-documentation + +Retrieves full documentation content for specific sections. Accepts single or multiple sections. +After calling the list-sections tool, you MUST analyze the returned documentation sections (especially the use_cases field) and then use the get-documentation tool to fetch ALL documentation sections that are relevant for the user's task. + +### 3. svelte-autofixer + +Analyzes Svelte code and returns issues and suggestions. +You MUST use this tool whenever writing Svelte code before sending it to the user. Keep calling it until no issues or suggestions are returned. + +### 4. playground-link + +Generates a Svelte Playground link with the provided code. +After completing the code, ask the user if they want a playground link. Only call this tool after user confirmation and NEVER if code was written to files in their project. diff --git a/.claude/rules/ultracite.md b/.claude/rules/ultracite.md new file mode 100644 index 0000000..05ab812 --- /dev/null +++ b/.claude/rules/ultracite.md @@ -0,0 +1,123 @@ +# Ultracite Code Standards + +This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting. + +## Quick Reference + +- **Format code**: `bun x ultracite fix` +- **Check for issues**: `bun x ultracite check` +- **Diagnose setup**: `bun x ultracite doctor` + +Biome (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable. + +--- + +## Core Principles + +Write code that is **accessible, performant, type-safe, and maintainable**. Focus on clarity and explicit intent over brevity. + +### Type Safety & Explicitness + +- Use explicit types for function parameters and return values when they enhance clarity +- Prefer `unknown` over `any` when the type is genuinely unknown +- Use const assertions (`as const`) for immutable values and literal types +- Leverage TypeScript's type narrowing instead of type assertions +- Use meaningful variable names instead of magic numbers - extract constants with descriptive names + +### Modern JavaScript/TypeScript + +- Use arrow functions for callbacks and short functions +- Prefer `for...of` loops over `.forEach()` and indexed `for` loops +- Use optional chaining (`?.`) and nullish coalescing (`??`) for safer property access +- Prefer template literals over string concatenation +- Use destructuring for object and array assignments +- Use `const` by default, `let` only when reassignment is needed, never `var` + +### Async & Promises + +- Always `await` promises in async functions - don't forget to use the return value +- Use `async/await` syntax instead of promise chains for better readability +- Handle errors appropriately in async code with try-catch blocks +- Don't use async functions as Promise executors + +### React & JSX + +- Use function components over class components +- Call hooks at the top level only, never conditionally +- Specify all dependencies in hook dependency arrays correctly +- Use the `key` prop for elements in iterables (prefer unique IDs over array indices) +- Nest children between opening and closing tags instead of passing as props +- Don't define components inside other components +- Use semantic HTML and ARIA attributes for accessibility: + - Provide meaningful alt text for images + - Use proper heading hierarchy + - Add labels for form inputs + - Include keyboard event handlers alongside mouse events + - Use semantic elements (`