# Amani Circle
Amani Circle is an offline-first, multilingual PeaceTech web app for anonymous community reporting, responder workflows, and privacy-safe public transparency through aggregated trends.
## Monorepo Structure
- `frontend/` - React + Vite + TypeScript + Tailwind
- `backend/` - FastAPI with SQLite MVP persistence
- `.github/workflows/` - GitHub Actions CI and frontend GitHub Pages deployment
- `AGENTS.md` - repository-wide implementation rules
## Product Principles
- Anonymous reporting by default.
- Rough location first; current/exact location is optional and consent-based.
- Public transparency uses aggregate data only.
- Accessibility and disability inclusion follow WCAG 2.2 AA as the baseline.
- Mobile-first, low-bandwidth, plain-language flows.
- English fallback with French, Arabic, Portuguese, and Kiswahili configured.
## Frontend Setup
```bash
cd frontend
npm install
npm run dev
```
Build check:
```bash
cd frontend
npm run lint
npm run build
npm test
```
The frontend currently includes:
- mobile-first Community, Follow up, Responder, and Public views
- global quick-exit action
- accessible multi-step community report flow
- optional contact details after a safety warning
- optional current location after explicit consent
- search-first rough location entry through the backend location proxy, with manual fallback
- IndexedDB draft storage for the active report
- IndexedDB queued submissions with pending, syncing, failed, and sent states
- minimal local receipts after queued sync, including case ID and follow-up code
- case status lookup with case ID and follow-up code
- short readable case IDs with copy actions for case ID and follow-up code
- required reporter explanation when choosing the Other category
- responder report list, filters, status update, and assignment notifications
- responder category review and reclassification for triage/public aggregate quality
- responder-created article and meeting drafts with admin approval before …