ZamZam TV — Hausa streaming platform (backend + website + mobile)
# ZAMZAM TV
Production-grade Hausa streaming platform (OTT/SVOD) — **zamzamtv.com**.
Target markets: Nigeria, Niger, Ghana, Cameroon — expanding to the worldwide Hausa audience.
**Start here:** `docs/PROJECT_OVERVIEW.md`, then
`docs/HANDOFF.md`. The `/docs` directory is the official source of truth.
## Repository layout
```
services/ledger frozen append-only financial ledger + idempotent payments
services/platform main application: database schema (Phase 1) + auth (Phase 2)
apps/ (upcoming) website, admin dashboard, mobile — Flutter
docs architecture, decisions, roadmap, handoff, changelog
```
## Tech stack
| Layer | Technology |
| --- | --- |
| Backend | NestJS, TypeScript, PostgreSQL, Redis, Docker |
| Website / Admin | Flutter Web |
| Mobile | Flutter (Android, iOS) |
| Auth | JWT RS256, rotating refresh tokens, RBAC, Argon2id |
| Payments | Paystack, Flutterwave (posting into the frozen ledger) |
| Video | Cloudflare Stream (video), Cloudflare R2 (images) — backend stores metadata only |
| Deployment | Docker, GitHub Actions, Linux VPS |
## Verify what exists
```bash
# Auth unit tests (offline, no DB needed) — 64 tests
cd services/platform && npm install && npm run test:auth
# Ledger unit tests — 4 tests
cd services/ledger && npm install && npm test
# Schema validator (requires Python 3)
cd services/platform && npm run validate
# Integration tests (require Docker Postgres)
cd services/platform && npm run db:up && npm run db:apply && npm run test:integration
```
See `CHANGELOG.md` for history and
`docs/DEVELOPMENT_ROADMAP.md` for the phase plan.