# Smart Darija — صوتك كيبني المستقبل
**Live:**
smart-darija.vercel.app
An open-source community platform for collecting voice recordings in Moroccan Darija — to build the dataset that Darija AI has been missing.
---
## Why
Darija is spoken by 40+ million Moroccans but is nearly invisible in AI. Existing datasets are too small, too noisy, or don't reflect how Moroccans actually speak — mixing Darija with French and English in the same sentence. This project exists to fix that, one recording at a time.
---
## What it does
- Presents users with Darija sentences (pure Darija, Darija+French, Darija+English, or all three mixed)
- Records audio directly in the browser, encodes it to **16kHz mono WAV** client-side
- Uploads recordings to Supabase Storage
- Lets the community flag sentences that feel unnatural or incorrect
- Admin dashboard to review recordings, manage sentences, and export data
- Multilingual UI: Arabic (RTL), French, English
- Anonymous sessions — no sign-up required
---
## Tech stack
| Layer | Tech |
|-------|------|
| Framework | Next.js 16 (App Router) |
| UI | Tailwind CSS v4, Framer Motion, GSAP, Lucide |
| Database | Supabase (PostgreSQL) |
| Storage | Supabase Storage (`audio` bucket) |
| Audio encoding | Web Audio API (`OfflineAudioContext`) — browser-side WAV encoding, no server dependencies |
| Deployment | Vercel |
---
## Dataset format
All recordings are stored as **WAV, 16kHz, mono, PCM int16** — the standard format for training speech recognition models (Whisper, wav2vec2, etc.).
Sentences are tagged with:
- `lang_mix` — `darija`, `darija_french`, `darija_english`, or `darija_french_english`
- `topic` — work, family, food, transport, health, education, etc.
- `has_phone_number` / `has_id_number` — for digit-reading sentences
---
## Database schema
```sql
sentences (id, text, lang_mix, topic, has_phone_number, has_id_number, recording_count, is_removed)
recordings (id, sentence_id, audio_url, session_id, created_at …