Nigeria citizen accountability news, public spending tracker & corroborated civic briefs
# WSFU (Who Swear For Us) 🇳🇬
> **Nigeria-focused citizen accountability, news, and government spending platform.**
> Built on React/Vite + FastAPI + Supabase (PostgreSQL + `pgvector`), featuring automated RSS aggregation, AI-assisted summarization, FAAC government spending tracking across all 36 States and 774 LGAs, Promise Meters, and FOI Request Generators.
---
## 📁 Project Architecture
```text
wsfu/
├── backend/ # FastAPI Backend & Background Workers
│ ├── app/
│ │ ├── api/v1/endpoints/ # Feed, FAAC spending, Promises, FOI routes
│ │ ├── core/ # Settings, Logging, Config
│ │ ├── db/ # Supabase Client Manager
│ │ └── services/ # Trafilatura Extractor, RSS Ingestor, Gemini AI Summarizer
│ ├── requirements.txt
│ ├── Dockerfile
│ └── main.py
├── supabase/ # Database Schemas & Migrations
│ └── migrations/
│ ├── 001_initial_schema.sql # Core tables & pgvector
│ ├── 002_rls_policies.sql # Row Level Security
│ ├── 003_seed_sources.sql # News sources (Punch, Premium Times, etc.)
│ └── 004_seed_nigeria_geo.sql # 36 States + 774 LGAs composite keys
├── web/ # React 18 + Vite + Tailwind CSS + TypeScript
│ ├── src/
│ │ ├── components/ # Header, NewsCard, FAACExplorer, PromiseTracker, FOIGenerator
│ │ ├── lib/ # API client & Supabase client
│ │ └── types/ # TypeScript interfaces
│ ├── package.json
│ └── vite.config.ts
├── scripts/ # Seeder scripts
│ └── seed_nigeria_data.py
├── .env.example
└── docker-compose.yml
```
---
## 🚀 Quick Start Guide
### 1. Database Setup (Supabase)
1. Open your Supabase Dashboard.
2. Go to **SQL Editor** $\rightarrow$ **New Query**.
3. You can run the consolidated script in one click:
- `supabase/migrations/ALL_IN_ONE_MIGRATION.sql` *(Includes 001 - 010: Core Schema, 36 States + 774 …