# Speak Arabi - Egyptian Arabic Vocabulary Learning App
A simple web application for learning Egyptian Arabic vocabulary with flashcards and spaced repetition.
## Features
- **Word Bank**: Create, edit, and delete words with Arabic script, transliteration, and English meanings
- **Categories**: Organize words into custom categories
- **Audio Pronunciation**: Upload and play audio pronunciations for words
- **Flashcard Learning**: Practice words with interactive flashcards
- **Spaced Repetition Review**: Anki-style review system with SM-2 algorithm
## Tech Stack
- **Framework**: Next.js 16 (App Router)
- **Language**: TypeScript
- **Database**: Supabase (PostgreSQL)
- **Media Storage**: Cloudinary (for audio)
- **Styling**: Tailwind CSS + shadcn/ui
- **Validation**: Zod + React Hook Form
## Prerequisites
- Node.js 18+ and npm
- Supabase account and project
- Cloudinary account (for audio uploads)
## Setup Instructions
### 1. Install Dependencies
```bash
npm install
```
### 2. Environment Variables
Create a `.env.local` file in the root directory:
```env
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# Cloudinary Configuration (optional, for audio uploads)
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
```
### 3. Database Setup
1. Create a new Supabase project
2. Run the migration files in order:
- `supabase/migrations/001_initial_schema.sql` - Creates base tables
- `supabase/migrations/003_simplify_remove_auth.sql` - Removes user authentication
The migration creates the following tables:
- `categories` - Word categories
- `words` - Vocabulary words
- `word_categories` - Many-to-many relationship between words and categories
- `review_sessions` - Spaced repetition data
### 4. Run Development Server
```bash
npm run dev
```
Open
localhost in your browser.
## Projec …