Complete Sunan al-Nasa'i — 5,768 hadiths with full Arabic text and English translations. Offline-first, zero dependencies. CLI + Python library.
Project description
sunan-al-nasai
The complete Sunan al-Nasa'i — 5,768 hadiths, full Arabic & English.
Offline-first · zero dependencies · published on both npm and PyPI.
✨ Features
| Feature | Details | |
|---|---|---|
| 📚 | Complete Collection | All 5,768 authentic hadiths from Sunan al-Nasa'i |
| 🌐 | 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 Arabic/English/both flags |
| ⚛️ | React Hook | One command generates useNasai() |
| 🐍 | Python | Identical API — same camelCase method names |
| 📘 | TypeScript | Full type definitions included |
🚀 Installation
npm install sunan-al-nasai # JS local
npm install -g sunan-al-nasai # JS global CLI
pip install sunan-al-nasai # Python
🟨 JavaScript / Node.js
const nasai = require('sunan-al-nasai'); // CJS
import nasai from 'sunan-al-nasai'; // ESM
nasai.get(1)
nasai.getByChapter(1)
nasai.search('prayer')
nasai.search('prayer', 5)
nasai.getRandom()
nasai[0]
nasai.length
nasai.metadata
nasai.chapters
nasai.find(h => h.id === 23)
nasai.filter(h => h.chapterId === 1)
nasai.slice(0, 10)
⚛️ React
cd my-react-app
nasai --react # generates src/hooks/useNasai.js
import { useNasai } from '../hooks/useNasai';
function HadithOfTheDay() {
const nasai = useNasai();
if (!nasai) return <p>Loading...</p>;
const h = nasai.getRandom();
return <div><strong>{h.english.narrator}</strong><p>{h.english.text}</p></div>;
}
🐍 Python
from sunan_al_nasai import Nasai
nasai = Nasai()
nasai.get(1)
nasai.getByChapter(1)
nasai.search("prayer")
nasai.search("prayer", limit=5)
nasai.getRandom()
nasai[0]
nasai.length
nasai.find(lambda h: h.id == 23)
nasai.filter(lambda h: h.chapterId == 1)
nasai.slice(0, 10)
# Custom path
nasai = Nasai(data_path="/path/to/nasai.json")
🖥️ CLI
nasai 1
nasai 2345 -a # Arabic only
nasai 2345 -b # Arabic + English
nasai 23 34 # Hadith 34 within chapter 23
nasai --search "prayer"
nasai --search "fasting" --all
nasai --chapter 1
nasai --random
nasai --react
nasai --version
📂 Structure
sunan-al-nasai/
├── data/
│ ├── nasai.json ← source of truth (replace with real data)
│ ├── nasai.json.gz ← generated (shipped in packages)
│ └── chapters/ ← generated (gitignored)
├── bin/index.js ← CLI
├── src/ ← JS source
├── types/index.d.ts
├── python/sunan_al_nasai/ ← Python package
├── scripts/build.mjs
├── examples/
├── docs/
└── tests/
🔧 Development
# 1. Place your real nasai.json in data/
node scripts/build.mjs
# 2. Test locally (no internet needed)
python -m build --no-isolation --wheel
python -m zipfile -l dist\sunan_al_nasai-1.0.0-py3-none-any.whl | findstr "nasai.json.gz"
pip install dist\sunan_al_nasai-1.0.0-py3-none-any.whl --force-reinstall
nasai 23
# 3. Release (triggers GitHub Actions → auto-publishes to npm + PyPI)
git add .
git commit -m "v1.0.0 — initial release"
git push origin main
gh release create v1.0.0 --title "v1.0.0" --notes "initial 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_al_nasai-1.0.0.tar.gz.
File metadata
- Download URL: sunan_al_nasai-1.0.0.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0e3c1191255547d4b574ea4daa0afae69e92b9b8c7a3dbf677fa4568dddb3b0
|
|
| MD5 |
962b0070ba663c8b0d0fca8e4d54272f
|
|
| BLAKE2b-256 |
0e7248292c219631399eb1406b3012c9838e0f59ddca3c1433c40553d6681fdc
|
File details
Details for the file sunan_al_nasai-1.0.0-py3-none-any.whl.
File metadata
- Download URL: sunan_al_nasai-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83d1f1a09caa7b9d0e8cb7a6f6a6f921cffc3bc0b27c6002f8b7a808db41fed1
|
|
| MD5 |
f285a579cbb2f62e56e1b3c6232fc6cd
|
|
| BLAKE2b-256 |
6034018c22749046b3aa8af20be472b8f1289a91b6a239308575f8322efd3d0b
|