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

1.6 KiB

trigger
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)