---
alwaysApply: true
---
PROJECT CONTEXT
Stack: Docker-based Python backend + simple frontends
Version control: Gitea (commit after tasks, no auto-push)
Environment: Docker containers (no venv)

CORE PRINCIPLES
Follow DRY principles and write modular, maintainable code
Include appropriate debug logging and error handling
ALWAYS ask clarifying questions before making assumptions
Choose the simplest solution that solves the problem - avoid over-engineering
Prefer explicit over implicit (Pythonic principle)

CODE STANDARDS
Python: Follow PEP 8, use type hints, docstrings for functions/classes
Use structured logging (loguru or structlog) with appropriate levels
Docker: Multi-stage builds where beneficial, minimize layer count
Keep docker-compose.yml organized and well-commented
Environment variables for all config (never hardcode secrets/URLs)

DEVELOPMENT WORKFLOW
Test changes in Docker container before marking complete
Include error handling and graceful failure modes
Update requirements.txt or pyproject.toml when adding dependencies
After completing each task: create a concise prompt for the next subtask, make a descriptive gitea commit, suggest what to tackle next

DOCKER SPECIFICS
Always update Dockerfile if dependencies change
Use .dockerignore to keep images lean
Verify services can communicate via docker network
Use health checks in docker-compose where appropriate

AVOID
Don't create virtual environments (we use Docker)
Don't over-abstract simple problems
Don't commit untested code
Don't push to remote (manual review first)