An accessibility-focused platform that transforms public posters and announcements into simplified English and Twi to make important information easier to understand and access.
# InfoForAll Ghana Reader
Turns a photo of a public announcement into information people can actually understand and act on.
Upload a poster, flyer, or notice → the text is read off the image → rewritten in plain English →
translated into Twi.
Built for people who find dense official English hard to use: readers who are blind or low-vision,
Deaf or hard of hearing, dyslexic, neurodivergent, older, or simply more comfortable reading Twi.
```
┌──────────┐ image ┌─────────────┐ text ┌────────────────┐ English ┌─────────────┐
│ React UI │ ─────────► │ Extraction │ ────────► │ Simplification │ ──────────► │ Translation │
│ (Vite) │ │ Groq · VLM │ │ Groq · LLM │ │ NLLB, local │
└──────────┘ └─────────────┘ └────────────────┘ └─────────────┘
read plain English Twi
```
| | |
|---|---|
| **Backend** | Python 3.11 · FastAPI · `infoforall-ghana-backend/` |
| **Frontend** | React 19 · TypeScript · Vite · `frontend/` |
| **Reading + simplifying** | Groq API (`qwen/qwen3.6-27b`) — needs a free key |
| **Twi translation** | NLLB-200 fine-tune, runs locally — needs a 2.3 GB download |
| **Database** | None. Every request is stateless; nothing is stored. |
---
## Before you start
| Requirement | Notes |
|---|---|
| **Python 3.11+** | `>=3.11, Skipping this step is fine for working on the UI or the extraction pipeline. Translation requests
> will fail fast with a clear message instead of hanging.
### 5 · Frontend — install and configure
Open a **second terminal**:
```bash
cd frontend
npm install
cp .env.example .env # default already points at localhost:8000
```
---
## Running it
Two terminals, both from the repo root.
**Terminal 1 — backend**
```bash
cd infoforall-ghana-backend
source .venv/bin/activate
uvicorn app.main:app --reload --port 8000
```
**Terminal 2 — frontend**
```bash
cd frontend
npm run dev
```
Then open **http …