nepali-date-engine
v1.0.0
Published
A robust, standalone, open-source Nepali Date (BS) and Panchang engine with 100+ years of data.
Maintainers
Readme
Nepali Date Engine (nepali-date-engine)
A robust, standalone, and highly accurate Nepali Date (Bikram Sambat) and Panchang library for Node.js and the browser.
Features
- Zero Dependencies: Pure TypeScript implementation. No external runtime calls.
- Extended Range: Accurate conversion from 1970 BS to 2090 BS (1913 AD - 2033 AD).
- Full Panchang: High-precision astronomical calculations for:
- Tithi (Lunar Day)
- Nakshatra (Lunar Mansion)
- Yoga
- Karana
- Sunrise / Sunset (Approximate)
- High Accuracy:
- Validated against 100+ years of calendar data.
- Smart Corrections: Includes a manual override system to align Tithis with official government calendars when astronomical calculations differ.
- Rich Holiday Database: Built-in database of Nepali holidays from 1970 BS to 2074 BS.
- Localization: Full support for Nepali (Devanagari) digits and names.
Installation
npm install nepali-date-engine🚀 HTTP API & Self-Hosting
This engine also comes with a built-in REST API server (compatible with Vercel).
Quick Start:
# Start the dev server
npm run dev
# Test
curl http://localhost:3000/todayFor detailed deployment instructions (NPM, GitHub, Vercel), see DEPLOY.md.
Usage
Basic Conversion
import { getNepaliDate } from 'nepali-date-engine';
const date = new Date('2026-01-21');
const nepali = getNepaliDate(date);
console.log(nepali.bs);
// { year: 2082, month: 10, day: 8, dayOfWeek: 4, yearNp: '२०८२', ... }
console.log(nepali.tithi);
// { name: 'Chaturthi', paksha: 'Shukla', nakshatra: { ... }, ... }Checking Holidays
if (nepali.holiday?.isHoliday) {
console.log(`Today is ${nepali.holiday.name?.en}`);
// Output: "Today is Sonam Lhosar"
}API Reference
getNepaliDate(date: Date): NepaliDateDetail
Returns a comprehensive object containing:
ad: Original JS Date.bs: Converted Bikram Sambat date (Year, Month, Day, Weekday).tithi: Astronomical details (Tithi, Paksha, Nakshatra, Yoga, Karana).holiday: Holiday information if applicable.
adToBs(date: Date): BsDate
Stand-alone function for AD to BS conversion.
bsToAd(bsDate: BsDate): Date
Stand-alone function for BS to AD conversion.
Dataset
This engine uses a merged dataset validated against multiple sources:
- 1970-1999 BS: Sourced from historical calendar archives.
- 2000-2090 BS: Verified against standard conversion libraries.
- Holidays: Includes a bundled, Offline-ready database of holidays spanning 50+ years.
Contributing
We welcome contributions! Please see CONTRIBUTING.md for details on how to get started.
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
💖 Sponsors
We love our sponsors! If you'd like to support the project, please check out our Sponsorship Page.
☕ Support
If you find this tool helpful, consider supporting: Support on Ko-fi
