NdaMinkoaba — AI-assisted platform for learning, preserving, and transmitting Cameroonian indigenous languages (Ewondo and more), with courses, quizzes, vocabulary, and Bible reading. NestJS backend + Flutter app.
# NdaMinkoaba — Ewondo Learning Smart Platform
A mobile-first language-learning app for **Ewondo**, a Bantu language spoken in Cameroon. Learners progress through **Beginner → Intermediate → Advanced** courses, take quizzes, and earn a generated PDF/QR certificate on completion. Two user-facing roles: **Learner** and **Administrator**.
- **Frontend:** Flutter (`ndaminkoaba_app/`) — go_router, Dio
- **Backend:** NestJS + Prisma + PostgreSQL (`backend-api/`) — JWT auth, role-based access control, server-side quiz grading, PDF/QR certificate generation, an AI tutor ("Nnanga") backed by OpenRouter
## Architecture
```
ndaminkoaba_app/ (Flutter client)
|
| HTTP + JWT bearer token
v
backend-api/ (NestJS REST API, prefix /api)
|
v
PostgreSQL (via Prisma ORM)
```
The API wraps every response as `{ success, data, timestamp }` (or `{ success: false, error: { message, error, statusCode } }` on failure). Auth uses short-lived JWTs (7 days by default); the client attaches `Authorization: Bearer ` automatically once logged in.
## Getting it running locally
### 1. Backend
```bash
cd backend-api
npm install # runs `prisma generate` automatically via postinstall
```
Make sure PostgreSQL is running locally and matches `backend-api/.env`'s `DATABASE_URL` (defaults to `postgresql://postgres:1234@localhost:5432/ewondo_learning` — change the password/db name there if yours differs, then create the database: `createdb ewondo_learning` or via pgAdmin).
```bash
npx prisma migrate deploy # applies the existing migrations in prisma/migrations
npx prisma db seed # creates demo accounts + one PUBLISHED course per level
npm run start:dev #
localhost, Swagger docs at /api/docs
```
Demo accounts created by the seed script (all use password `Passw0rd!`):
| Role | Email | Notes |
|---------|---------------------------|-------|
| Admin | admin@ndaminkoaba.com | Full access to the Administrator app (Da …