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)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sunan_al_nasai-1.0.1.tar.gz
(1.4 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_al_nasai-1.0.1.tar.gz.
File metadata
- Download URL: sunan_al_nasai-1.0.1.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3193200868322408e8e35ffc702b34816b4dd3dc84efa162bdbd637f5914f49
|
|
| MD5 |
97523691405bb2140c0eb6e9494c89ac
|
|
| BLAKE2b-256 |
9a1b3a3e712498d4b3f9019bab3e8756a1e42bf094433bbf287d8c6f18f0af28
|
File details
Details for the file sunan_al_nasai-1.0.1-py3-none-any.whl.
File metadata
- Download URL: sunan_al_nasai-1.0.1-py3-none-any.whl
- Upload date:
- Size: 1.4 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 |
5ecefe7de643323b7c588171740ba476e4b578b69ec289047d64890bfdbd2341
|
|
| MD5 |
a204121872dec2ac5bb41157893ca36d
|
|
| BLAKE2b-256 |
498a3917ba7bace1180a68e381889fc9663484cab6169ef9732559c166f2e093
|