Simple Go web app to help memorizers review similar Quran verses (mutashabihat).
- Go (
net/http) - SQLite (relations only)
- server-rendered HTML templates
- local JSON Quran dataset (
data/quran.json)
go run ./cmd/serverServer listens on http://localhost:8080.
Import full dataset from Tanzil into data/quran.json:
go run ./scripts/importValidate dataset integrity:
go run ./scripts/validateValidate translation key format and coverage:
go run ./scripts/validate_translations
go run ./scripts/validate_translations -reportImport English and Indonesian translations:
go run ./scripts/import_translationsThis also generates Indonesian tafsir data at data/tafsir/id.kemenag.json.
It also generates English tafsir data at data/tafsir/en.ibn-kathir.json.
Seed starter relation pairs:
go run ./scripts/seed_relationsGET /api/ayah/{surah}/{ayah}GET /api/ayah/{surah}/{ayah}/relationsPOST /api/relationsGET /api/surah/{surah}/relationsGET /api/juz/{juz}/relations
GET /admin/relationsrelation management page (add/list/edit/delete)- optional relation categories for grouping:
lafzi,maana,siyam,aqidah,adab,other - category labels and usage hints are shown directly on the admin page
- invalid category values are normalized to
Uncategorized - admin routes and
POST /api/relationsrequire HTTP Basic Auth - set credentials via env:
HIFZLINK_ADMIN_USERHIFZLINK_ADMIN_PASS
GET /collectionslist and create personal collectionsGET /collections/{id}view saved items in a collection- save ayah from Ayah page and save pair from Compare page into a selected collection
- duplicate saves show a clear status message (
Already saved in this collection) - collection list/detail shows saved metadata (item type and timestamp)
Add relation example:
curl -X POST http://localhost:8080/api/relations \
-H 'Content-Type: application/json' \
-d '{"ayah1":"60:8","ayah2":"60:9","note":"mutashabihat"}'- CONTRIBUTING.md
- CHANGELOG.md
- LICENSE
- NOTICE.md
- docs/VERSIONING.md
- docs/DESIGN.md
- docs/TRANSLATIONS.md
- docs/MUTASHABIHAT_STRATEGY.md
- docs/STATUS.md
- docs/ROADMAP.md
- docs/TRANSLATION_MIGRATION_2026-03-22.md
- docs/PROJECT.md
- docs/ARCHITECTURE.md
cmd/server/main.goHTTP server + routesinternal/searchQuran dataset loader and ayah lookupinternal/dbSQLite storage for verse relationsinternal/relationsrelation service and ayah parserweb/templatesserver-rendered pagesweb/staticCSSdata/quran.jsonlocal Quran datasetdata/relations.seed.jsonstarter relation pairsscripts/importimports full Quran text + metadata from Tanzilscripts/import_translationsimportsenfrom Quran.com verse-route data (Clear Quran text shown on site),idfromrioastamal/quran-json, and prepares Indonesian + English tafsir datascripts/validatevalidates dataset contractscripts/validate_translationsvalidates translation key format and coverage againstdata/quran.jsonscripts/seed_relationsseeds initial mutashabihat relation examples
