Kijiji Quest — magical African learning adventure for children aged 6-12
# Kijiji Quest
A magical African learning adventure for children aged 6–12. Kijiji Quest is an interactive, scroll-driven educational website where children explore Mathematics, Science, Technology, Language, Creativity, and African culture through a cinematic 3D world.
## Features
- **Scroll-controlled 3D world** — React Three Fiber camera paths driven by GSAP ScrollTrigger and Lenis smooth scrolling
- **Nine cinematic scenes** — From cloud arrival to sunset finale
- **Original characters** — Nuru, Kito, Bobo, and Tamu
- **Bilingual support** — English and Kiswahili via next-intl
- **Child-safe design** — No public chat, muted sound by default, encouraging progress UI
- **Responsive fallbacks** — Reduced 3D on mobile and prefers-reduced-motion support
- **Demo dashboards** — Child and parent dashboard mockups with sample data
## Tech Stack
- Next.js 16 (App Router)
- TypeScript
- Tailwind CSS 4
- React Three Fiber + Three.js + Drei
- GSAP ScrollTrigger
- Framer Motion
- Zustand
- Lenis
- Howler.js
- Supabase (optional)
- next-intl
- Vitest
## Getting Started
```bash
cd kijiji-quest
npm install
cp .env.example .env.local
npm run dev
```
Open
localhost.
## Environment Variables
Copy `.env.example` to `.env.local`:
| Variable | Description |
|----------|-------------|
| `NEXT_PUBLIC_SUPABASE_URL` | Supabase project URL (optional) |
| `NEXT_PUBLIC_SUPABASE_ANON_KEY` | Supabase anon key (optional) |
| `NEXT_PUBLIC_SITE_URL` | Site URL for auth redirects |
The app runs in **demo mode** without Supabase. Auth forms redirect to the child dashboard.
## Scripts
```bash
npm run dev # Development server
npm run build # Production build
npm run start # Start production server
npm run lint # ESLint
npm run test # Run Vitest tests
```
## Project Structure
```
src/
├── app/[locale]/ # Localized routes
├── components/
│ ├── 3d/ # R3F world, camera, characters
│ ├── scenes/ # Homepage sce …