Initial commit
This commit is contained in:
38
tech-stack.md
Normal file
38
tech-stack.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
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)
|
||||
Reference in New Issue
Block a user