sunan-ibn-majah
v1.1.2
Published
Complete Sunan Ibn Majah. Offline-first, zero dependencies. CLI + Node + React/Vue/Vite.
Maintainers
Readme
✨ Features
| | Feature | Details |
|---|---|---|
| 📚 | Complete Collection | All 4,341 hadiths from Sunan Ibn Majah |
| 🌐 | Bilingual | Full Arabic text + English translation |
| ⚡ | Offline-first | Data bundled — no CDN needed |
| 🔧 | Zero Dependencies | Nothing extra to install |
| 🔍 | Full-text Search | Search English text and narrator names |
| 🖥️ | CLI | Terminal access with -a/-b Arabic flags + --info, --chapters |
| ⚛️ | React Hook | One command generates useMajah() |
| 🐍 | Python | Identical API — same camelCase method names |
| 📘 | TypeScript | Full type definitions included |
🚀 Installation
npm install sunan-ibn-majah # JS local
npm install -g sunan-ibn-majah # JS global CLI
pip install sunan-ibn-majah # Python🟨 JavaScript / Node.js
const majah = require('sunan-ibn-majah'); // CJS
import majah from 'sunan-ibn-majah'; // ESM
majah.get(1)
majah.getByChapter(1)
majah.search('prayer')
majah.search('prayer', 5)
majah.getRandom()
majah[0]
majah.length
majah.metadata
majah.chapters⚛️ React
cd my-react-app
majah --react # generates src/hooks/useMajah.jsimport { useMajah } from '../hooks/useMajah';
function HadithOfTheDay() {
const majah = useMajah();
if (!majah) return <p>Loading...</p>;
const h = majah.getRandom();
return <div><strong>{h.english.narrator}</strong><p>{h.english.text}</p></div>;
}🐍 Python
from sunan_ibn_majah import Majah
majah = Majah()
majah.get(1)
majah.getByChapter(1)
majah.search("prayer")
majah.search("prayer", limit=5)
majah.getRandom()
majah[0]
majah.length
majah.find(lambda h: h.id == 23)
majah.filter(lambda h: h.chapterId == 1)
majah.slice(0, 10)
# Custom path
majah = Majah(data_path="/path/to/majah.json")🖥️ CLI
majah 1 # Hadith by ID
majah 2345 -a # Arabic only
majah 2345 -b # Arabic + English
majah 23 3 # 3rd hadith of chapter 23
majah --search "prayer"
majah --search "fasting" --all
majah --chapter 1
majah --chapters # List all chapters
majah --random
majah --info # Book metadata
majah --react
majah --version📂 Structure
sunan-ibn-majah/
├── data/
│ ├── majah.json ← source of truth
│ ├── majah.json.gz ← generated (shipped in packages)
│ └── chapters/ ← generated (gitignored)
├── bin/index.js ← CLI
├── src/ ← JS source
├── types/index.d.ts
├── python/sunan_ibn_majah/ ← Python package
├── scripts/build.mjs
├── examples/
├── docs/
└── tests/🔧 Development
# Place your real majah.json in data/
node scripts/build.mjs
# Test locally
python -m build --wheel
python -m zipfile -l dist\sunan_ibn_majah-1.1.0-py3-none-any.whl | findstr "majah.json.gz"
pip install dist\sunan_ibn_majah-1.1.0-py3-none-any.whl --force-reinstall
majah 23Publishing is automatic via GitHub Actions on every GitHub Release.
📄 License
GNU Affero General Public License v3.0 (AGPL-3.0)
Made with ❤️ for the Muslim community · Seeking knowledge together
