A full-stack mobile application for tracking field-level financial transactions, budgets, and programmatic targets, built for World Vision Zambia.
# Field Finance Tracker (FFT)
A full-stack mobile application for tracking field-level financial transactions, budgets, and programmatic targets — built for **World Vision Zambia**.
## Overview
FFT empowers field teams to manage finances from a mobile device:
- **Development Facilitators (DF)** submit expenses and monitor budgets
- **Finance Officers** review, approve, reject, or request corrections on expenses
- **DME Officers** track programmatic targets and review activity entries
- **Supervisors** monitor budget utilisation across the portfolio
## Tech Stack
| Layer | Technology |
|---|---|
| Backend | Python 3.12+, FastAPI, SQLModel ORM, SQLite |
| Frontend | React Native (Expo), TypeScript, Expo Router |
| Auth | JWT with bcrypt password hashing |
| Design | Custom humanitarian-themed design system |
## Project Structure
```
├── backend/ # FastAPI REST API
│ ├── main.py # App entry point
│ ├── Model/ # SQLModel entities and enums
│ ├── Controller/ # Route handlers
│ ├── Service/ # Business logic layer
│ ├── Respositories/ # Data access layer
│ ├── Middleware/ # JWT auth and RBAC guards
│ └── Config/ # Database, settings, seed data
│
├── frontend/ # React Native (Expo) mobile app
│ ├── app/ # Expo Router screens (role-based)
│ ├── components/ # Shared UI components
│ ├── context/ # Auth state management
│ ├── theme/ # Design system tokens
│ ├── shared/ # Common types, hooks, utils
│ └── Service/ # API client
│
└── uv.lock # Python dependency lock file
```
## Quick Start
### Backend
```bash
cd backend
pip install -r requirements.txt
python main.py
```
The API runs at `
localhost`. Interactive docs at `/docs` (Swagger) or `/redoc` (ReDoc). Demo data is seeded automatically on first run.
### Frontend
```bash
cd frontend
npm install
npm start
```
Scan the Expo QR code with your device, or press ` …