# Kabyle Learner
A simple web app for studying and revising the Kabyle language (North Africa), built with React, Vite, TypeScript, and Tailwind CSS.
π **Live site**: kabyle-learner on GitHub Pages
---
## π Features
- π Browse lessons with vocabulary and example phrases
- β
Take interactive quizzes with feedback and score tracking
- β± Timer-based questions
- π Retry quizzes with new random questions
- β Stop quiz anytime
- π Sound effects for correct and wrong answers
- π¨ Clean UI using Tailwind CSS with Amazigh theme colors
- π± Mobile-friendly layout
- π§ Routing with React Router
- π« 404 page for unmatched routes
- π§ͺ Cypress component tests
- βοΈ GitHub Actions CI/CD pipeline
---
## πͺ Tech Stack
- Vite
- React
- TypeScript
- Tailwind CSS v4
- React Router DOM
- Cypress for component testing
- GitHub Actions for CI/CD
---
## π¦ Setup Instructions
### 1. Clone the repo
```bash
git clone
github.com
cd kabyle-learner
```
### 2. Install dependencies
```bash
npm install
```
### 3. Run the development server
```bash
npm run dev
```
The app will be available at: `
localhost`
---
## π§ͺ Running Tests
### Run Cypress Component Tests
```bash
npx cypress open --component
```
You can also run tests headlessly:
```bash
npx cypress run --component
```
Test files live in:
```
cypress/component/**/*.cy.tsx
```
---
## π CI/CD Workflow
This project uses **GitHub Actions** to:
- Run Cypress component tests
- Build the app with Vite
- Deploy to **GitHub Pages** when pushing to `master`
Workflow file: `.github/workflows/deploy.yaml`
---
## π§Ί Project Structure
```
src/
βββ assets/ # Static assets (e.g. sound effects)
βββ components/ # (optional shared components)
βββ data/ # Static lesson data (vocab + examples)
β βββ lessons.ts
βββ pages/
β βββ Home.tsx
β βββ Lessons.tsx
β βββ LessonDetail.tsx
β βββ Quiz.tsx
β βββ NotFound.tsx
βββ App.tsx
βββ main.tsx
βββ index.css β¦