AI-powered podcast generation platform for empowering women in Guinea.
| Layer | Technology |
|---|---|
| Frontend | Next.js 15 (React 19) |
| Backend | FastAPI (Python) |
| Database | PostgreSQL + SQLAlchemy |
| Background Jobs | FastAPI BackgroundTasks |
| File Storage | Local disk (swappable to S3) |
| LLM | OpenAI / Anthropic (pluggable) |
| TTS | OpenAI TTS (pluggable) |
- Python 3.11+
- Node.js 18+
- PostgreSQL
# Run the setup script
chmod +x scripts/setup.sh
./scripts/setup.sh
# Create the database
createdb voices_of_strength
# Configure API keys
# Edit backend/.env with your OpenAI/Anthropic API keys
# Run database migrations
cd backend
source venv/bin/activate
alembic revision --autogenerate -m "initial"
alembic upgrade head
cd ..
# Start development servers
chmod +x scripts/dev.sh
./scripts/dev.sh- Frontend: http://localhost:3000
- Backend API: http://localhost:8000/docs
- Create Episode — Define topic, type (profile/theme), language (FR/EN), length
- Add Sources — Paste text, upload PDF, add URL, or YouTube link
- Generate Research — AI creates a structured brief from sources
- Review Research — Human reviews the brief (required gate)
- Generate Transcript — AI creates a podcast transcript
- Edit & Approve Transcript — Human edits and approves (required gate)
- Generate Audio — TTS converts approved transcript to audio
- Generate Assets — AI creates title options, summary, and show notes
The workflow enforces three human review checkpoints:
- After research generation — review before transcript
- After transcript generation — edit and approve before audio
- After audio generation — review before generating supporting assets
backend/
app/
models/ # SQLAlchemy models
schemas/ # Pydantic request/response schemas
routers/ # FastAPI route handlers
services/ # Business logic
providers/ # LLM, TTS, extraction abstractions
prompts/ # Prompt templates
jobs/ # Background job runners
storage/ # File storage abstraction
frontend/
src/
app/ # Next.js pages
lib/ # API client
types/ # TypeScript types
components/ # Shared components
scripts/ # Setup and dev scripts
| Feature | Options |
|---|---|
| Episode Type | Profile (inspiring woman) / Theme (topic-based) |
| Language | French / English |
| Length | 5 min / 10 min / 20 min |
| Sources | Text, PDF, URL, YouTube |
LLM and TTS providers are abstracted behind interfaces in backend/app/providers/. Change providers by updating environment variables — no code changes needed.
All generated content is designed to be:
- Warm and empowering
- Culturally respectful and relevant to Guinea
- Practical and actionable
- Grounded in verified source material
- Clear about what is sourced vs. generated