## Inspiration

Arabic grammar resources often exist in disconnected forms: long audio playlists, raw transcripts, classical textbooks, and handwritten notes. I wanted one local interface that connected these materials and transformed them into a structured learning path.

The goal was not merely to archive lectures. It was to make hundreds of hours of Arabic instruction easier to study, review, and apply—especially for beginners navigating nahw (grammar), sarf (morphology), and balagha (rhetoric).

## What I Built

Cours d’Arabe is an offline-first learning platform containing:

  • 14 complete courses
  • 792 audio lessons
  • More than 664 hours of instruction
  • 158 pedagogical modules
  • 790 questions with answers
  • Local matn and sharh PDF resources

Each course combines compressed audio, timestamped Deepgram transcripts, structured lessons, exercises, quizzes, and classical reference books.

The interface supports right-to-left Arabic, larger Arabic typography, automatic vowel marks for common terms, clickable transcript segments, and persistent progress through localStorage.

## How I Built It

I created a Python-based content pipeline that inventories Archive.org playlists, validates transcripts, compresses audio to Opus, assembles verified lesson fragments, parses quizzes, links local books, and generates a JSON catalogue consumed by a static HTML/CSS/JavaScript interface.

Raw transcripts remain accessible, but they are not treated as finished lessons. I reconstructed the material into concept-based modules containing objectives, explanations, tables, worked examples, exercises, and verification questions.

Audio compression was essential. Original resources occupied approximately 29.26 GB; Opus compression reduced them to about 6.5 GB while preserving clear speech:

[ \text{Reduction} = \frac{29.26 - 6.5}{29.26}\times 100 \approx 77.8% ]

Automated Python and Playwright tests verify catalogue integrity, missing assets, PDF links, quiz rendering, module quality, Arabic presentation, transcript synchronization, and progress behavior.

## Challenges

The hardest challenge was converting imperfect spoken-language transcripts into reliable pedagogical material. Automatic transcription can introduce errors, while classical Arabic grammar requires precision. I addressed this by combining localized transcript evidence with matn, commentary, OCR sources, explicit source maps, and per-module verification records.

Scale created another challenge: every audio, transcript, module, question, and book reference had to remain correctly linked. Strict validation makes builds fail when expected resources are missing or unverified.

Designing for Arabic also required careful handling of RTL layouts, mixed French-Arabic content, diacritics, readable typography, and stable audio navigation.

Finally, I needed to prevent regenerated content from replacing carefully edited courses. Protected-course rules, immutable backups, verification statuses, and quality tests now guard against regressions.

## What I Learned

I learned that educational software needs more than content aggregation. Useful learning material requires progression, evidence, practice, feedback, and consistent presentation.

I also learned how to build reproducible content pipelines, manage large media collections, validate generated data, test RTL interfaces, and balance automation with human editorial judgment.

Most importantly, I learned that transcripts are raw material—not pedagogy. The project became valuable only when lectures, exercises, books, and review tools were connected into one coherent learning experience.

Built With

Share this project:

Updates