1.6 KiB
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)