sunan-ibn-majah
The complete Sunan Ibn Majah — 4,341 hadiths, full Arabic & English.
Offline-first · zero dependencies · published on both npm and PyPI.
✨ 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.js
import { 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 23
Publishing is automatic via GitHub Actions on every GitHub Release.
📄 License
GNU Affero General Public License v3.0 (AGPL-3.0)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sunan_ibn_majah-1.1.2.tar.gz
(1.2 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sunan_ibn_majah-1.1.2.tar.gz.
File metadata
- Download URL: sunan_ibn_majah-1.1.2.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6e2b86c60f13c50b4a1d769454501f439393ae94ac6b00e485108f48d20c612
|
|
| MD5 |
0a3319447c6b8675f5662bbdccf55cd9
|
|
| BLAKE2b-256 |
c0aca721d5df2181949da96de58657930ab8ea8290dbc078e918baad220bb9d6
|
File details
Details for the file sunan_ibn_majah-1.1.2-py3-none-any.whl.
File metadata
- Download URL: sunan_ibn_majah-1.1.2-py3-none-any.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
828d12914632f22ca34c08dcc638c8cc84375ff87c6893b41e2507145b40bcb7
|
|
| MD5 |
0e1580461d7e345ef805bb767987f186
|
|
| BLAKE2b-256 |
c2de1960a6b29e636daf90cb22853deea100dbf85490d2b63e84aa14c880c6be
|