Initialize Sneaky Klaus project with: - uv package management and pyproject.toml - Flask application structure (app.py, config.py) - SQLAlchemy models for Admin and Exchange - Alembic database migrations - Pre-commit hooks configuration - Development tooling (pytest, ruff, mypy) Initial structure follows design documents in docs/: - src/app.py: Application factory with Flask extensions - src/config.py: Environment-based configuration - src/models/: Admin and Exchange models - migrations/: Alembic migration setup 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1.6 KiB
1.6 KiB
Sneaky Klaus
A self-hosted Secret Santa organization application.
Project Documentation
docs/PROJECT_OVERVIEW.md- Product vision and scopedocs/BACKLOG.md- User stories with acceptance criteriadocs/decisions/- Architecture Decision Recordsdocs/designs/vX.Y.Z/- Design documents (versioned)
Workflow
This project uses a two-agent workflow coordinated by the main agent:
- Architect (
.claude/agents/architect.md) - Designs systems, produces ADRs and design docs - Developer (
.claude/agents/developer.md) - Implements features from designs using TDD
Flow: User Story → Architect designs → User approves → Developer implements
The main agent coordinates between subagents. If the developer needs architectural clarification, route through the main agent to the architect.
Tech Stack
| Component | Technology |
|---|---|
| Backend | Flask (Python) |
| Database | SQLite |
| Resend | |
| Deployment | Docker |
| Package Manager | uv |
| Testing | pytest (80% coverage target) |
| Linting/Formatting | Ruff |
| Type Checking | mypy |
Commands
uv sync # Install dependencies
uv run flask run # Run development server
uv run pytest # Run tests
uv run ruff check . # Lint
uv run ruff format . # Format
uv run mypy src # Type check
Git Workflow
Trunk-based development with short-lived branches:
feature/<story-id>-description- New featuresfix/<description>- Bug fixeschore/<description>- Maintenance
Merge to main when complete. Delete branch after merge.