Files
coding-agent-rules/tech-stack.md
2025-10-04 16:16:05 -04:00

38 lines
1.6 KiB
Markdown

---
trigger: always_on
---
# Tech Stack
This project is a monorepo with a React Native (frontend) and FastAPI (backend) stack, deployed via Docker Compose and validated by Gitea Actions.
## Backend (FastAPI)
- Language: Python 3.11+
- Framework: FastAPI
- ASGI Server: Uvicorn
- Schemas: Pydantic v2 (source of truth for request/response)
- HTTP Client: httpx (for outbound integrations)
- Packaging/Deps: uv + pyproject.toml
- Lint/Format: ruff (format + lint)
- Type Checking: mypy (progressively strict)
- Testing: pytest + coverage (100% required)
- Logging: structured JSON in prod; human-readable in dev; correlation IDs
- Docs: OpenAPI at `/docs`, kept current with examples
- Optional: SQL (SQLAlchemy + async driver) if/when persistence is needed
## Frontend (React Native)
- Runtime: React Native (Expo for dev)
- Language: TypeScript (strict mode)
- UI/Navigation: React Navigation (or Expo Router), reusable components in `frontend/components/`
- Networking: fetch or axios with a centralized service layer in `frontend/services/`
- State/Server cache: lightweight hooks; introduce React Query if needed later
- Testing: Jest + React Native Testing Library; MSW for network mocking
- Lint/Format: ESLint + Prettier
- Node: 20 LTS
- Note: RN production builds via EAS (outside Compose). Compose primarily supports local dev integration.
## DevOps & Tooling
- Containerization: Docker Compose (`deploy/compose.yml`)
- CI: Gitea Actions in `.gitea/workflows/`
- Backend: ruff, mypy, pytest with coverage≥100%
- Frontend: eslint, jest with coverage thresholds (≥90% or match backend at 100% if desired)