Complete Sunan Ibn Majah — 4,341 hadiths with full Arabic text and English translations. Offline-first, zero dependencies. CLI + Python library.
Project description
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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
|