Language teaching marketplace platform for Tunisia
# FindYourTeacher
A language teaching marketplace for Tunisia. Teachers create profiles, manage availability and groups. Students browse teachers, book discovery calls, and join group classes.
## Architecture
```
FindYourTeacher/
├── backend/ # NestJS 10 REST API
├── frontend/ # Next.js 14 App Router
└── README.md
```
**Backend** — NestJS with Prisma ORM, PostgreSQL (Neon serverless), JWT auth with refresh token rotation, class-validator DTOs, role-based guards.
**Frontend** — Next.js 14 App Router, Tailwind CSS, next-intl (FR/EN), TanStack Query, axios with auto token refresh.
## Features
- **Authentication** — Register/login as student or teacher, JWT access + refresh tokens, httpOnly cookie rotation with reuse detection
- **Teacher profiles** — Bio, languages taught, audience types, availability slots
- **Discovery calls** — Students book short placement calls from teacher availability. Teachers confirm, mark done, or cancel. Teachers see student phone/email for contact. Sidebar badges show pending (red) and confirmed (yellow) counts
- **Groups** — Teachers create language groups (level, audience, max students, price). Students browse and request to join. Teachers approve or remove members. Sidebar badge for pending requests
- **Sessions & Video** — Teachers schedule sessions for groups. Jitsi Meet embedded video rooms. Teachers start/end/cancel sessions
- **Session Credits** — Students buy 1-4 session credits per group via Flouci payment gateway. Credits consumed when teacher ends a session. Sandbox mode for development
- **Recommendations** — Students leave optional star rating + comment for teachers. Rating-only reviews auto-approved. Comments require admin approval. Students can edit their review
- **Admin Dashboard** — Admin role can approve or reject recommendation comments
- **Public browse** — Search teachers by name, filter by language/audience. Filter groups by language/level/audience. Paginated results
- **Navigation** — Student …