Deliver a stable, contributor-friendly open source Quran murojaah tool focused on mutashabihat review.
- [done] add handler/unit tests for:
- ayah endpoints with
langmodes - relation endpoints and duplicate handling
- translation loader and fallback behavior
- [done] add data checks:
- translation file key-format validation command
- optional translation coverage report per language
- [done] improve error UX:
- friendly not-found page for invalid ayah references
- clear form validation messages in search flow
- [done] relation management UI:
- [done] simple add relation form page (server-rendered)
- [done] optional delete relation action (safe confirmation)
- [done] edit relation action
- [done] compare enhancements:
- [done] visual diff emphasis for repeated/changed words (non-destructive highlighting)
- [done] related pairs section on compare page — shows all pairs sharing either ayah, replaces next/prev sequential navigation
- [done] browsing improvements:
- [done] surah index page with relation counts
- [done] juz index page with relation counts
- [done] ayah-relation search page (search-first, not full dump) — supports ayah ref, surah number, surah name
- [done] category filter on search page
- server-side pagination — deferred: dataset is manually curated and unlikely to grow large enough to need it; revisit if relation count exceeds ~500
- faceted filters beyond category (
surah,juz,has_note, date range) — deferred: search page covers the core use case - surah-range/juz filter on relation lists — deferred
- recent-first ordering on relation lists — deferred
- [done] personal workflow:
- [done] bookmark/save ayah and relation pairs
- [done] saved collections (custom groups) for murojaah sessions
- [done] user dashboard page (quick resume, recent collections, recent saved items)
- [done] public-facing UI:
- [done] landing page redesigned as SaaS-style public page (hero, story, diff example, features, how-it-works, browse CTA)
- [done] topbar restructured: Dashboard hidden until auth is implemented; Search links to /search
- [done] style.css split into focused files (base, topbar, components, admin, pages)
- [done] responsive button system (.btn, .btn-sm, .btn-outline, .btn-danger) with touch targets
- [done] full mobile layout pass: hero centering, search row stacking, diff example collapse
- account support — deferred to post-MVP:
- login/auth for user-specific saved data
- local-first fallback mode when auth is disabled
- session and access control hardening
- [done] expand
relations.seed.jsoninto a curated starter set of well-known mutashabihat pairs (67 pairs across all categories) - [done] define relation taxonomy for mutashabihat curation:
- confusion-pattern categories (single field, admin-selectable):
lafzi— near-identical wording, almost word-for-wordword_swap— one or more words differ between otherwise identical versesaddition_omission— one verse has an extra word or phrase the other lacksorder_change— same words in different sequenceending_variation— verses identical except for the final word or phrasepronoun_shift— differs only in pronoun (هو/هم, كم/كن, etc.)other— does not fit cleanly into any above pattern
- multi-tag support and secondary thematic tags — deferred: single confusion-pattern field is sufficient for current dataset size
- [done] document curation workflow for contributors (
docs/CURATION.md)
- CI pipeline — deferred:
- run
go test ./... - run dataset/translation validation scripts
- release flow: [done]
- tag-based releases
- changelog discipline for user-visible changes
- contributor onboarding: [done]
- screenshots and architecture diagram in docs
- issue templates for bug/feature/data reports
- quiz mode for memorization practice
- word-level similarity helper tooling
- optional cloud sync/public relation dataset
Work in this sequence:
- Reliability tests and validation tooling
- Relation management UI
- Compare and browse UX improvements
- CI/release automation
- Advanced memorization features