astrology-insights
Version:
Comprehensive Vedic astrology engine for Node.js — Panchang, birth charts (Kundli), Vimshottari Dasha, divisional charts, dosha analysis, and planetary remedies. Swiss Ephemeris precision, validated against Drik Panchang.
669 lines (624 loc) • 18.5 kB
text/typescript
/**
* Baby Name Suggestions Based on Birth Nakshatra
*
* Each nakshatra has 4 padas, each associated with a specific starting syllable.
* Names beginning with the birth nakshatra's pada syllable are considered auspicious.
*/
// ── Types ───────────────────────────────────────────────────────────────────────
export interface NameEntry {
name: string;
gender: 'male' | 'female' | 'unisex';
}
export interface NameSuggestion {
syllable: string;
nakshatra: string;
pada: number;
gender: 'male' | 'female' | 'unisex';
names: NameEntry[];
}
// ── Nakshatra Syllable Map (27 × 4 padas) ──────────────────────────────────────
export const NAKSHATRA_SYLLABLES: Record<string, [string, string, string, string]> = {
'Ashwini': ['Chu', 'Che', 'Cho', 'La'],
'Bharani': ['Li', 'Lu', 'Le', 'Lo'],
'Krittika': ['A', 'I', 'U', 'E'],
'Rohini': ['O', 'Va', 'Vi', 'Vu'],
'Mrigashira': ['Ve', 'Vo', 'Ka', 'Ki'],
'Ardra': ['Ku', 'Gha', 'Ng', 'Chha'],
'Punarvasu': ['Ke', 'Ko', 'Ha', 'Hi'],
'Pushya': ['Hu', 'He', 'Ho', 'Da'],
'Ashlesha': ['Di', 'Du', 'De', 'Do'],
'Magha': ['Ma', 'Mi', 'Mu', 'Me'],
'Purva Phalguni': ['Mo', 'Ta', 'Ti', 'Tu'],
'Uttara Phalguni': ['Te', 'To', 'Pa', 'Pi'],
'Hasta': ['Pu', 'Sha', 'Na', 'Tha'],
'Chitra': ['Pe', 'Po', 'Ra', 'Ri'],
'Swati': ['Ru', 'Re', 'Ro', 'Ta'],
'Vishakha': ['Ti', 'Tu', 'Te', 'To'],
'Anuradha': ['Na', 'Ni', 'Nu', 'Ne'],
'Jyeshtha': ['No', 'Ya', 'Yi', 'Yu'],
'Moola': ['Ye', 'Yo', 'Bha', 'Bhi'],
'Purva Ashadha': ['Bhu', 'Dha', 'Pha', 'Dha'],
'Uttara Ashadha': ['Bhe', 'Bho', 'Ja', 'Ji'],
'Shravana': ['Ju', 'Je', 'Jo', 'Gha'],
'Dhanishtha': ['Ga', 'Gi', 'Gu', 'Ge'],
'Shatabhisha': ['Go', 'Sa', 'Si', 'Su'],
'Purva Bhadrapada': ['Se', 'So', 'Da', 'Di'],
'Uttara Bhadrapada': ['Du', 'Tha', 'Jha', 'Da'],
'Revati': ['De', 'Do', 'Cha', 'Chi'],
};
// ── Name Database by Syllable ───────────────────────────────────────────────────
const NAME_DATABASE: Record<string, NameEntry[]> = {
// Ashwini
'Chu': [
{ name: 'Chudamani', gender: 'male' },
{ name: 'Churamani', gender: 'male' },
{ name: 'Chunda', gender: 'female' },
],
'Che': [
{ name: 'Chetan', gender: 'male' },
{ name: 'Chetna', gender: 'female' },
{ name: 'Chetak', gender: 'male' },
],
'Cho': [
{ name: 'Chola', gender: 'male' },
{ name: 'Choti', gender: 'female' },
{ name: 'Chotan', gender: 'male' },
],
'La': [
{ name: 'Lakshmi', gender: 'female' },
{ name: 'Lakshmikant', gender: 'male' },
{ name: 'Lavanya', gender: 'female' },
{ name: 'Lakhan', gender: 'male' },
{ name: 'Latika', gender: 'female' },
],
// Bharani
'Li': [
{ name: 'Lilavati', gender: 'female' },
{ name: 'Lina', gender: 'female' },
{ name: 'Likhit', gender: 'male' },
],
'Lu': [
{ name: 'Luv', gender: 'male' },
{ name: 'Lubhana', gender: 'female' },
{ name: 'Luvkush', gender: 'male' },
],
'Le': [
{ name: 'Leena', gender: 'female' },
{ name: 'Lekha', gender: 'female' },
{ name: 'Lekhan', gender: 'male' },
],
'Lo': [
{ name: 'Lokesh', gender: 'male' },
{ name: 'Lochana', gender: 'female' },
{ name: 'Lokendra', gender: 'male' },
],
// Krittika
'A': [
{ name: 'Aarav', gender: 'male' },
{ name: 'Aanya', gender: 'female' },
{ name: 'Arjun', gender: 'male' },
{ name: 'Ananya', gender: 'female' },
{ name: 'Aditya', gender: 'male' },
],
'I': [
{ name: 'Ishaan', gender: 'male' },
{ name: 'Isha', gender: 'female' },
{ name: 'Indira', gender: 'female' },
{ name: 'Ishan', gender: 'male' },
],
'U': [
{ name: 'Uma', gender: 'female' },
{ name: 'Uday', gender: 'male' },
{ name: 'Ujjwal', gender: 'male' },
{ name: 'Urvi', gender: 'female' },
],
'E': [
{ name: 'Ekta', gender: 'female' },
{ name: 'Eshaan', gender: 'male' },
{ name: 'Esha', gender: 'female' },
],
// Rohini
'O': [
{ name: 'Om', gender: 'male' },
{ name: 'Omkar', gender: 'male' },
{ name: 'Ojasvi', gender: 'unisex' },
],
'Va': [
{ name: 'Varun', gender: 'male' },
{ name: 'Vandana', gender: 'female' },
{ name: 'Vani', gender: 'female' },
{ name: 'Vasudha', gender: 'female' },
],
'Vi': [
{ name: 'Vivek', gender: 'male' },
{ name: 'Vidya', gender: 'female' },
{ name: 'Vikas', gender: 'male' },
{ name: 'Vimala', gender: 'female' },
{ name: 'Vihaan', gender: 'male' },
],
'Vu': [
{ name: 'Vupendra', gender: 'male' },
{ name: 'Vushali', gender: 'female' },
{ name: 'Vushti', gender: 'female' },
],
// Mrigashira
'Ve': [
{ name: 'Veda', gender: 'female' },
{ name: 'Vedant', gender: 'male' },
{ name: 'Veena', gender: 'female' },
],
'Vo': [
{ name: 'Vora', gender: 'male' },
{ name: 'Votika', gender: 'female' },
],
'Ka': [
{ name: 'Karan', gender: 'male' },
{ name: 'Kavya', gender: 'female' },
{ name: 'Kartik', gender: 'male' },
{ name: 'Kamini', gender: 'female' },
{ name: 'Kabir', gender: 'male' },
],
'Ki': [
{ name: 'Kiran', gender: 'unisex' },
{ name: 'Kirti', gender: 'female' },
{ name: 'Kishor', gender: 'male' },
{ name: 'Kiara', gender: 'female' },
],
// Ardra
'Ku': [
{ name: 'Kunal', gender: 'male' },
{ name: 'Kushal', gender: 'male' },
{ name: 'Kumari', gender: 'female' },
{ name: 'Kundan', gender: 'male' },
],
'Gha': [
{ name: 'Ghanshyam', gender: 'male' },
{ name: 'Ghanendra', gender: 'male' },
{ name: 'Ghazala', gender: 'female' },
],
'Ng': [
{ name: 'Ngawang', gender: 'male' },
{ name: 'Ngozi', gender: 'female' },
],
'Chha': [
{ name: 'Chhavi', gender: 'female' },
{ name: 'Chhaya', gender: 'female' },
{ name: 'Chhatrapal', gender: 'male' },
],
// Punarvasu
'Ke': [
{ name: 'Keshav', gender: 'male' },
{ name: 'Ketaki', gender: 'female' },
{ name: 'Ketan', gender: 'male' },
],
'Ko': [
{ name: 'Komal', gender: 'female' },
{ name: 'Kovid', gender: 'male' },
{ name: 'Kokila', gender: 'female' },
],
'Ha': [
{ name: 'Harsh', gender: 'male' },
{ name: 'Harini', gender: 'female' },
{ name: 'Hardik', gender: 'male' },
{ name: 'Hansa', gender: 'female' },
],
'Hi': [
{ name: 'Hitesh', gender: 'male' },
{ name: 'Hina', gender: 'female' },
{ name: 'Himanshu', gender: 'male' },
{ name: 'Hiral', gender: 'female' },
],
// Pushya
'Hu': [
{ name: 'Husain', gender: 'male' },
{ name: 'Huma', gender: 'female' },
],
'He': [
{ name: 'Hemant', gender: 'male' },
{ name: 'Hema', gender: 'female' },
{ name: 'Heena', gender: 'female' },
],
'Ho': [
{ name: 'Homi', gender: 'male' },
{ name: 'Honey', gender: 'female' },
],
'Da': [
{ name: 'Daksh', gender: 'male' },
{ name: 'Darpana', gender: 'female' },
{ name: 'Darshan', gender: 'male' },
{ name: 'Damini', gender: 'female' },
],
// Ashlesha
'Di': [
{ name: 'Divya', gender: 'female' },
{ name: 'Dinesh', gender: 'male' },
{ name: 'Disha', gender: 'female' },
{ name: 'Dilip', gender: 'male' },
],
'Du': [
{ name: 'Durga', gender: 'female' },
{ name: 'Dushyant', gender: 'male' },
{ name: 'Dulari', gender: 'female' },
],
'De': [
{ name: 'Devika', gender: 'female' },
{ name: 'Dev', gender: 'male' },
{ name: 'Deepak', gender: 'male' },
{ name: 'Deepali', gender: 'female' },
],
'Do': [
{ name: 'Dolly', gender: 'female' },
{ name: 'Dorji', gender: 'male' },
],
// Magha
'Ma': [
{ name: 'Manish', gender: 'male' },
{ name: 'Maya', gender: 'female' },
{ name: 'Manoj', gender: 'male' },
{ name: 'Madhuri', gender: 'female' },
{ name: 'Manas', gender: 'male' },
],
'Mi': [
{ name: 'Mihir', gender: 'male' },
{ name: 'Mira', gender: 'female' },
{ name: 'Mithun', gender: 'male' },
{ name: 'Mitali', gender: 'female' },
],
'Mu': [
{ name: 'Mukesh', gender: 'male' },
{ name: 'Mukta', gender: 'female' },
{ name: 'Murali', gender: 'male' },
],
'Me': [
{ name: 'Meera', gender: 'female' },
{ name: 'Megha', gender: 'female' },
{ name: 'Mehul', gender: 'male' },
],
// Purva Phalguni
'Mo': [
{ name: 'Mohit', gender: 'male' },
{ name: 'Mohini', gender: 'female' },
{ name: 'Mohan', gender: 'male' },
],
'Ta': [
{ name: 'Tanvi', gender: 'female' },
{ name: 'Tarun', gender: 'male' },
{ name: 'Tara', gender: 'female' },
{ name: 'Tanmay', gender: 'male' },
],
'Ti': [
{ name: 'Tilak', gender: 'male' },
{ name: 'Tina', gender: 'female' },
{ name: 'Tirth', gender: 'male' },
],
'Tu': [
{ name: 'Tulsi', gender: 'female' },
{ name: 'Tushar', gender: 'male' },
{ name: 'Tuhina', gender: 'female' },
],
// Uttara Phalguni
'Te': [
{ name: 'Tejas', gender: 'male' },
{ name: 'Tejal', gender: 'female' },
{ name: 'Teerth', gender: 'male' },
],
'To': [
{ name: 'Toral', gender: 'female' },
{ name: 'Tosh', gender: 'male' },
{ name: 'Toshani', gender: 'female' },
],
'Pa': [
{ name: 'Parth', gender: 'male' },
{ name: 'Pallavi', gender: 'female' },
{ name: 'Pankaj', gender: 'male' },
{ name: 'Padma', gender: 'female' },
],
'Pi': [
{ name: 'Piyush', gender: 'male' },
{ name: 'Pinky', gender: 'female' },
{ name: 'Pinak', gender: 'male' },
],
// Hasta
'Pu': [
{ name: 'Punit', gender: 'male' },
{ name: 'Purnima', gender: 'female' },
{ name: 'Pushkar', gender: 'male' },
{ name: 'Punam', gender: 'female' },
],
'Sha': [
{ name: 'Sharad', gender: 'male' },
{ name: 'Shanti', gender: 'female' },
{ name: 'Shankar', gender: 'male' },
{ name: 'Shakti', gender: 'female' },
],
'Na': [
{ name: 'Naresh', gender: 'male' },
{ name: 'Nandini', gender: 'female' },
{ name: 'Naveen', gender: 'male' },
{ name: 'Nalini', gender: 'female' },
],
'Tha': [
{ name: 'Thakor', gender: 'male' },
{ name: 'Thara', gender: 'female' },
{ name: 'Tharun', gender: 'male' },
],
// Chitra
'Pe': [
{ name: 'Pema', gender: 'unisex' },
{ name: 'Petal', gender: 'female' },
],
'Po': [
{ name: 'Pooja', gender: 'female' },
{ name: 'Poonam', gender: 'female' },
{ name: 'Porus', gender: 'male' },
],
'Ra': [
{ name: 'Rahul', gender: 'male' },
{ name: 'Radha', gender: 'female' },
{ name: 'Rajesh', gender: 'male' },
{ name: 'Rani', gender: 'female' },
{ name: 'Ravi', gender: 'male' },
],
'Ri': [
{ name: 'Rishi', gender: 'male' },
{ name: 'Ritika', gender: 'female' },
{ name: 'Rishabh', gender: 'male' },
{ name: 'Riya', gender: 'female' },
],
// Swati
'Ru': [
{ name: 'Ruchi', gender: 'female' },
{ name: 'Rudra', gender: 'male' },
{ name: 'Rupal', gender: 'female' },
],
'Re': [
{ name: 'Rekha', gender: 'female' },
{ name: 'Renu', gender: 'female' },
{ name: 'Reyansh', gender: 'male' },
],
'Ro': [
{ name: 'Rohit', gender: 'male' },
{ name: 'Roshan', gender: 'male' },
{ name: 'Roshni', gender: 'female' },
],
// Vishakha — Ti, Tu, Te, To already defined above
// Anuradha — Na already defined above
'Ni': [
{ name: 'Nikhil', gender: 'male' },
{ name: 'Nisha', gender: 'female' },
{ name: 'Nitin', gender: 'male' },
{ name: 'Nidhi', gender: 'female' },
],
'Nu': [
{ name: 'Nupur', gender: 'female' },
{ name: 'Nutan', gender: 'female' },
],
'Ne': [
{ name: 'Neha', gender: 'female' },
{ name: 'Neeraj', gender: 'male' },
{ name: 'Neelam', gender: 'female' },
],
// Jyeshtha
'No': [
{ name: 'Noel', gender: 'male' },
{ name: 'Noor', gender: 'female' },
],
'Ya': [
{ name: 'Yash', gender: 'male' },
{ name: 'Yamini', gender: 'female' },
{ name: 'Yashoda', gender: 'female' },
{ name: 'Yashwant', gender: 'male' },
],
'Yi': [
{ name: 'Yidesh', gender: 'male' },
{ name: 'Yisha', gender: 'female' },
],
'Yu': [
{ name: 'Yuvraj', gender: 'male' },
{ name: 'Yukti', gender: 'female' },
{ name: 'Yuvika', gender: 'female' },
],
// Moola
'Ye': [
{ name: 'Yeshwant', gender: 'male' },
{ name: 'Yeshoda', gender: 'female' },
],
'Yo': [
{ name: 'Yogesh', gender: 'male' },
{ name: 'Yogita', gender: 'female' },
{ name: 'Yogi', gender: 'male' },
],
'Bha': [
{ name: 'Bharat', gender: 'male' },
{ name: 'Bhavna', gender: 'female' },
{ name: 'Bhavesh', gender: 'male' },
{ name: 'Bharti', gender: 'female' },
],
'Bhi': [
{ name: 'Bhima', gender: 'male' },
{ name: 'Bhishma', gender: 'male' },
],
// Purva Ashadha
'Bhu': [
{ name: 'Bhuvan', gender: 'male' },
{ name: 'Bhumi', gender: 'female' },
{ name: 'Bhushan', gender: 'male' },
],
'Dha': [
{ name: 'Dharmesh', gender: 'male' },
{ name: 'Dhara', gender: 'female' },
{ name: 'Dhananjay', gender: 'male' },
{ name: 'Dhanvi', gender: 'female' },
],
'Pha': [
{ name: 'Phalgun', gender: 'male' },
{ name: 'Phalak', gender: 'female' },
],
// Uttara Ashadha
'Bhe': [
{ name: 'Bheem', gender: 'male' },
{ name: 'Bheshaj', gender: 'male' },
],
'Bho': [
{ name: 'Bholanath', gender: 'male' },
{ name: 'Bhoomika', gender: 'female' },
],
'Ja': [
{ name: 'Jai', gender: 'male' },
{ name: 'Jaya', gender: 'female' },
{ name: 'Janaki', gender: 'female' },
{ name: 'Jayant', gender: 'male' },
],
'Ji': [
{ name: 'Jigar', gender: 'male' },
{ name: 'Jiya', gender: 'female' },
{ name: 'Jitendra', gender: 'male' },
],
// Shravana
'Ju': [
{ name: 'Jugal', gender: 'male' },
{ name: 'Juhi', gender: 'female' },
],
'Je': [
{ name: 'Jeet', gender: 'male' },
{ name: 'Jeenal', gender: 'female' },
],
'Jo': [
{ name: 'Jyoti', gender: 'female' },
{ name: 'Joshit', gender: 'male' },
],
// Dhanishtha
'Ga': [
{ name: 'Ganesh', gender: 'male' },
{ name: 'Garima', gender: 'female' },
{ name: 'Gaurav', gender: 'male' },
{ name: 'Gauri', gender: 'female' },
],
'Gi': [
{ name: 'Girish', gender: 'male' },
{ name: 'Gita', gender: 'female' },
{ name: 'Girdhari', gender: 'male' },
],
'Gu': [
{ name: 'Gunjan', gender: 'female' },
{ name: 'Gulshan', gender: 'male' },
{ name: 'Gulab', gender: 'unisex' },
],
'Ge': [
{ name: 'Geeta', gender: 'female' },
{ name: 'Geet', gender: 'unisex' },
],
// Shatabhisha
'Go': [
{ name: 'Govind', gender: 'male' },
{ name: 'Gopi', gender: 'female' },
{ name: 'Gopal', gender: 'male' },
],
'Sa': [
{ name: 'Sahil', gender: 'male' },
{ name: 'Sarita', gender: 'female' },
{ name: 'Sanjay', gender: 'male' },
{ name: 'Sakshi', gender: 'female' },
{ name: 'Samar', gender: 'male' },
],
'Si': [
{ name: 'Siddharth', gender: 'male' },
{ name: 'Sita', gender: 'female' },
{ name: 'Simran', gender: 'female' },
],
'Su': [
{ name: 'Suresh', gender: 'male' },
{ name: 'Sunita', gender: 'female' },
{ name: 'Sunil', gender: 'male' },
{ name: 'Suman', gender: 'unisex' },
],
// Purva Bhadrapada
'Se': [
{ name: 'Setu', gender: 'male' },
{ name: 'Sena', gender: 'female' },
],
'So': [
{ name: 'Soham', gender: 'male' },
{ name: 'Sonal', gender: 'female' },
{ name: 'Sohail', gender: 'male' },
],
// Uttara Bhadrapada — Du, Tha, Da already defined above
'Jha': [
{ name: 'Jhanvi', gender: 'female' },
{ name: 'Jhanak', gender: 'male' },
],
// Revati — De, Do already defined above
'Cha': [
{ name: 'Chandan', gender: 'male' },
{ name: 'Chandni', gender: 'female' },
{ name: 'Charu', gender: 'female' },
{ name: 'Chaitanya', gender: 'male' },
],
'Chi': [
{ name: 'Chinmay', gender: 'male' },
{ name: 'Chitra', gender: 'female' },
{ name: 'Chirag', gender: 'male' },
],
};
// ── Public API ──────────────────────────────────────────────────────────────────
/**
* Get baby name suggestions for a given nakshatra and pada.
*
* @param nakshatra - One of the 27 nakshatras (e.g. "Ashwini")
* @param pada - Pada number 1-4
* @returns Array of NameSuggestion objects (typically 1 entry for the matched syllable)
*/
export function getNameSuggestions(nakshatra: string, pada: number): NameSuggestion[] {
const syllables = NAKSHATRA_SYLLABLES[nakshatra];
if (!syllables) {
return [];
}
if (pada < 1 || pada > 4) {
return [];
}
const syllable = syllables[pada - 1];
const names = NAME_DATABASE[syllable] ?? [];
// Build results — one per gender group
const maleNames = names.filter(n => n.gender === 'male');
const femaleNames = names.filter(n => n.gender === 'female');
const unisexNames = names.filter(n => n.gender === 'unisex');
const results: NameSuggestion[] = [];
if (maleNames.length > 0) {
results.push({
syllable,
nakshatra,
pada,
gender: 'male',
names: maleNames,
});
}
if (femaleNames.length > 0) {
results.push({
syllable,
nakshatra,
pada,
gender: 'female',
names: femaleNames,
});
}
if (unisexNames.length > 0) {
results.push({
syllable,
nakshatra,
pada,
gender: 'unisex',
names: unisexNames,
});
}
// If no gender-specific grouping found, return a single entry with all names
if (results.length === 0 && names.length > 0) {
results.push({
syllable,
nakshatra,
pada,
gender: 'unisex',
names,
});
}
return results;
}