Still in beta. For feedback, email me at aramb@aramb.dev

Application Changelog

Track the latest updates and improvements.

Merge pull request #19 from aramb-dev/nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 119a4a2

Details:

feat(vocabulary): implement component-based architecture for vocabulary pages

Merge branch 'main' into nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 92d4dcc

docs: add vocabulary page tasks to TODO list

Committed on by Abdur Rahman Bilal

Commit: 43523f2

feat(layout): add prop to control sidebar visibility

Committed on by Abdur Rahman Bilal

Commit: 880eeec

Details:

Introduces a `showSidebar` prop to the `Layout` component, which defaults to true.

This allows parent components to programmatically hide the sidebar, providing more flexibility for pages that may not require it. The visibility logic is now centralized in a `sidebarVisible` variable for clarity.

feat(routing): add custom 404 page and API catch-all route

Committed on by Abdur Rahman Bilal

Commit: f7ac175

Details:

Implement comprehensive 404 error handling for both the user-facing application and the API.

- A new custom 404 page (`src/app/not-found.tsx`) is introduced to provide a better user experience for non-existent pages.
- The previous API 404 handling (`src/app/api/not-found.tsx`) is replaced with a more robust catch-all API route (`src/app/api/[...slug]/route.ts`). This ensures that any request method (GET, POST, etc.) to an undefined API endpoint receives a standardized JSON 404 response.

fix(api): correctly handle promise-based route params

Committed on by Abdur Rahman Bilal

Commit: 52fe63a

Details:

Updates vocabulary API route handlers to be compatible with changes in Next.js where route segment parameters are wrapped in a Promise.

The GET functions in the vocabulary routes are now `async` and `await` the `params` object to correctly resolve and access the `bookId` and `lessonId`. This fixes a TypeScript type error and ensures the routes function as expected.

docs(llms): add vocabulary API documentation

Committed on by Abdur Rahman Bilal

Commit: be71408

Details:

This commit updates the LLM context file to include documentation for the newly added vocabulary API.

It details the new global, per-book, and per-lesson vocabulary endpoints. The `VocabularyItem` data structure is also defined to provide schema context for the models.

feat(api): add vocabulary API endpoints

Committed on by Abdur Rahman Bilal

Commit: 4ee0353

Details:

Adds three new API endpoints for retrieving vocabulary data:

- `GET /api/vocabulary`: Fetches all vocabulary across all books, with optional filtering by book and lesson.
- `GET /api/books/{bookId}/vocabulary`: Retrieves all vocabulary for a specific book.
- `GET /api/books/{bookId}/lessons/{lessonId}/vocabulary`: Retrieves vocabulary for a specific lesson within a book.

The root API documentation at `/api` has also been updated to reflect these new routes and the `VocabularyItem` data structure.

chore(docs): remove obsolete planning and design documents

Committed on by Abdur Rahman Bilal

Commit: c4eda09

Details:

These planning documents are no longer relevant as the features and refactors they describe have been implemented. Keeping them in the repository creates unnecessary clutter.

The following files have been removed:
- `page-props-migration-plan.md`
- `vocabulary-refactor-plan.md`
- `vocabulary-schema-design.md`
- `vocabulary-schema-modification-plan.md

feat(vocabulary): add 'coming soon' state for vocabulary books

Committed on by Abdur Rahman Bilal

Commit: 634ac64

Details:

Introduces a new `isPublished` flag to the `BookVocabulary` schema to control the visibility and accessibility of vocabulary books. This allows for books to be listed in the UI but marked as "Coming Soon" until their content is complete.

- Adds `isPublished?: boolean` to the `BookVocabulary` interface, defaulting to `true` for backward compatibility.
- Updates the vocabulary page to conditionally render book cards based on the `isPublished` flag.
- Unpublished books are styled as disabled, display a "Coming Soon" badge, and are not clickable.
- Sets Madinah Book 2 and the newly added Book 3 to `isPublished: false`.
- Adds a planning document outlining the schema modification.

feat(data): refactor and update book 1 lesson data

Committed on by Abdur-Rahmān Bilāl

Commit: 91ad845

Details:

feat(data): refactor and update book 1 lesson data

feat(data): refactor and update book 1 lesson data

Committed on by Abdur Rahman Bilal

Commit: 9808688

Details:

This commit refactors the structure of `book1.ts` and applies numerous content corrections and additions to the lesson data.

The dynamic vocabulary merging logic has been removed to simplify the data file. Lesson content is now self-contained, with vocabulary to be handled by a separate mechanism.

Key content updates include:
- Correction of various grammar rule explanations and lesson introductions for clarity and accuracy (e.g., in lessons 5, 6, 8, 14, 23).
- Fixed the Arabic title for Lesson 8 from "Lesson 18" to "Lesson 8".
- Added a new grammar rule (`كِتَابُ مَنْ هَذَا؟`) to Lesson 5.

BREAKING CHANGE: The `vocabulary` property has been removed from lesson objects within `book1Data`. Any component that previously accessed `lesson.vocabulary` will need to be updated.

Merge pull request #17 from aramb-dev/nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 86b2095

Details:

feat(vocab): Comprehensive Vocabulary Data and System Refactor

chore: update ultracite config and remove pre-commit hook

Committed on by Abdur Rahman Bilal

Commit: f274527

chore: add typescript formatter settings in VS Code config

Committed on by Abdur Rahman Bilal

Commit: c4cd63d

chore(build): exclude book2 and book3 from compilation

Committed on by Abdur Rahman Bilal

Commit: 3d9c347

Details:

Excludes the `src/data/vocab/book2` and `src/data/vocab/book3` directories from the TypeScript compilation process. This is a temporary measure while these vocabulary sets are under development.

chore: ignore book2 and book3 vocab directories from eslint

Committed on by Abdur Rahman Bilal

Commit: 79a38f8

refactor(vocab): use 'masjid' instead of 'mosque' for consistency

Committed on by Abdur Rahman Bilal

Commit: 6cfa32a

Details:

This change replaces all instances of "mosque" and "mosques" with "masjid" and "masjids" respectively in English translations and definitions across all vocabulary and lesson data.

Using the transliterated term "masjid" is more consistent with the learning context and helps reinforce the Arabic vocabulary for students.

refactor(vocab): standardize language keys to 'ar' and 'en'

Committed on by Abdur Rahman Bilal

Commit: 38f747c

Details:

This commit updates the vocabulary data structures to use the more concise ISO 639-1 language codes ('ar', 'en') instead of the full names ('arabic', 'english').

This change is applied consistently across all vocabulary data files and the core `VocabularyList` and `BookVocabulary` type definitions. The `organizeItemsIntoLists` function has also been updated to reflect this new standard.

BREAKING CHANGE: The keys for localized strings in vocabulary data objects have been changed from 'arabic' and 'english' to 'ar' and 'en' respectively. Any code consuming this data must be updated to use the new keys.

refactor(vocab): make page components async to await params

Committed on by Abdur Rahman Bilal

Commit: 303a4a5

Details:

The `params` prop in Next.js page components can be a promise. This change updates the vocabulary pages to be async components, allowing them to `await` the resolved `params` before they are used to fetch data.

feat(api): add books and lessons API endpoints with documentation

Committed on by Abdur-Rahmān Bilāl

Commit: 0225fea

Details:

feat(api): add books and lessons API endpoints with documentation

fix: ensuring that book.lessons.length is greater than 0 before performing the division to prevent potential division by zero errors

Committed on by Abdur-Rahmān Bilāl

Commit: 1feeea5

Details:

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

Merge branch 'main' into nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 42d3621

feat(docs): add comprehensive api documentation page

Committed on by Abdur Rahman Bilal

Commit: cc1d8b1

Details:

Implement a new API documentation page with detailed endpoint descriptions, response schemas, and usage examples. The page includes sections for books, lessons, and metadata endpoints, along with data structure definitions and LLM integration guidance.

fix(api): handle async params in book rule-count route

Committed on by Abdur Rahman Bilal

Commit: b923b55

Details:

Ensure params are properly awaited before destructuring to prevent runtime errors

fix(api): await params promise in book metadata route

Committed on by Abdur Rahman Bilal

Commit: dd21e3e

fix(api): handle async params in lesson-titles route

Committed on by Abdur Rahman Bilal

Commit: adaebf8

feat: add bing site verfication

Committed on by Abdur-Rahmān Bilāl

Commit: 54d058f

feat: add google site verification

Committed on by Abdur-Rahmān Bilāl

Commit: b9e0efb

Merge pull request #15 from aramb-dev/nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 99dd7c1

Details:

Fix beta banner positioning and improve lesson excerpt display

Merge branch 'main' into nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 0fbf29d

style(books): improve code readability by formatting text truncation logic

Committed on by Abdur Rahman Bilal

Commit: 4688974

Details:

Refactor text truncation conditions to be more readable by breaking them into multiple lines. Also update TODO.md by marking completed tasks and improving formatting.

style(books): improve text display in book lesson cards

Committed on by Abdur Rahman Bilal

Commit: da00fbb

Details:

Increase line clamp and adjust text styling for better readability of lesson introductions in both Arabic and English

Merge pull request #14 from aramb-dev/nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: 81dbe18

Details:

feat(content): add comprehensive content for Madinah Book 3

feat(content): add comprehensive content for Madinah Book 3

Committed on by Abdur-Rahmān Bilāl

Commit: 03fe08b

Details:

This commit populates Madinah Book 3 with its complete set of lessons
and grammatical rules, making the book fully accessible within the
application. Previously, Book 3 was marked as "coming soon" with
placeholder content.

- Added:
    - Full content for 34 lessons, including lesson IDs, bilingual
      (Arabic/English) titles, and bilingual introductions.
    - Detailed grammatical rules for each lesson, featuring rule names,
      Arabic text, and English explanations.
    - Citations to source material page numbers within rule explanations
      for easy reference (e.g., `[cite: 123]`).
- Changed:
    - The main `title` and `description` for Book 3 to use fully
      diacritized Arabic and updated English text.
    - The `available` status of Book 3 to `true`.
- Removed:
    - The `comingSoon` flag for Book 3.
    - The placeholder "Coming Soon" lesson data.

Merge pull request #13 from aramb-dev/nextjs

Committed on by Abdur-Rahmān Bilāl

Commit: ddf67e4

Details:

feat(layout): add beta feedback banner to root layout

Update src/app/layout.tsx

Committed on by Abdur-Rahmān Bilāl

Commit: 4eabee6

Details:

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

fix(data): Correct syntax and typo in book3.ts

Committed on by Abdur-Rahmān Bilāl

Commit: 8f26e57

Details:

- Corrected a syntax error in `src/data/book3.ts` around line 605 caused by a problematic single quote within the string `name: 'عَسَى ('Asā - Perhaps/It may be)',`.
- Addressed a typo in `src/data/book3.ts` around line 27, correcting 'الْمُdَرِّسَ' to 'الْمُدَرِّسَ' in an explanation string.

These changes resolve a JavaScript syntax error and a content typo, ensuring data integrity for Book 3.