Logo Lanfrica

rdjWiss/kabyle-learner

Domain:

natural language processingeducation

Record type:

softwaretools
Creator:
rdj
Host:
# 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 …