# IsiZulu Learning Platform
AI-first IsiZulu learning platform built with Go + React. Content generated from source books using Claude prompts.
## Quick Start
```powershell
# Start the web app (API + Frontend)
& .\scripts\start-dev.ps1
```
Visit: **
http://localhost:5173** (API runs on port 8088)
## Architecture
- **`backend/`**: Go API server with Chi router
- **`frontend/`**: React + Vite client app
- **`books/`**: Source OCR text files for AI processing
- **`content/lessons/`**: AI-generated lesson JSON files
- **`content/source-catalog.json`**: Lesson-to-source mapping
- **`reports/validation-report.json`**: Quality validation notes
## Content Workflow
### 1. Add New Books
Place `.txt` files in `books/` directory.
### 2. Sync & Detect Changes
```powershell
& .\scripts\sync-books.ps1
```
### 3. Generate Lessons with AI
Use `prompts/new-book-ingestion-prompt.md` with Claude to create structured lessons.
### 4. Update Content
- Add new `lesson-NNN.json` files to `content/lessons/`
- Update `content/source-catalog.json`
- Run `& .\scripts\update-source-hashes.ps1`
## API Endpoints
- `GET /api/lessons` — List all lessons
- `GET /api/lessons/{id}` — Get specific lesson
- `POST /api/auth/signup` — User registration
- `POST /api/auth/login` — User authentication
- `GET /api/progress` — Get user progress
- `POST /api/progress` — Update progress
- `GET /api/flashcards` — Get flashcards
- `POST /api/flashcards/review` — Submit flashcard review
## Database
PostgreSQL with schema in `backend/migrations/001_init.sql`:
- `users` — User accounts
- `lesson_progress` — Learning progress tracking
- `flashcard_progress` — Flashcard review history
- `quiz_attempts` — Quiz attempt records
## Prerequisites
- Go 1.22+
- Node.js 20+
- npm 10+
## Deployment
This project includes a Jenkins + Helm deployment setup for Kubernetes.
- `Jenkinsfile` — CI pipeline for building the Docker image, scanning it with Trivy, and deploying with Helm
- `charts/app/` — Helm chart for t …