Building a Nakshatra Calculator App with Vedic Astrology API
Create a birth star calculator showing pada, deity, characteristics, and compatibility. Complete guide with React Native code examples.
Building a Nakshatra Calculator App with Vedic Astrology API
Nakshatras (lunar mansions) are fundamental to Vedic astrology - they determine your birth star, pada, ruling deity, and personality traits. This guide shows you how to build a nakshatra calculator using the RoxyAPI Vedic Astrology API with birth star identification, compatibility matching, and remedial recommendations.
What Are Nakshatras?
The 27 nakshatras divide the zodiac into 13°20' segments, each with unique characteristics:
- Moon's Nakshatra = Your birth star (janma nakshatra)
- 4 Padas = Each nakshatra divided into 4 quarters (3°20' each)
- Ruling Lords = Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury (cycling)
- Deities = Specific gods/goddesses governing each nakshatra
- Compatibility = Nakshatra matching for marriage (koot system)
Famous nakshatras: Ashwini (healers), Rohini (beauty), Bharani (transformation), Pushya (nourishment).
API Response Structure
The Vedic Astrology API includes nakshatra data in planetary positions:
const response = await fetch(
'https://roxyapi.com/api/v2/vedic-astrology/planetary-positions',
{
method: 'POST',
headers: {
'X-API-Key': 'your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
date: '1990-07-04',
time: '10:30:00',
latitude: 28.6139,
longitude: 77.2090,
timezone: 5.5
})
}
);
const data = await response.json();
const moonNakshatra = data.Moon.nakshatra;
Response structure:
{
"Moon": {
"nakshatra": {
"name": "Anuradha",
"key": 16,
"pada": 1,
"deity": "Mitra (god of friendship)",
"symbol": "Lotus",
"characteristics": "Anuradha natives are disciplined, loyal, and cooperative. They have a knack for leadership and teamwork.",
"ratio": 0.162,
"left": 11.16
}
}
}
Key fields:
name: Nakshatra namekey: Number (0-26, with Ashwini = 0)pada: Quarter position (1-4)deity: Ruling deitycharacteristics: Personality traitsratio: Completion percentage within nakshatraleft: Degrees remaining in current nakshatra
Building the Calculator
Complete React component:
import { useState } from 'react';
function NakshatraCalculator() {
const [nakshatra, setNakshatra] = useState(null);
const [loading, setLoading] = useState(false);
async function calculate(birthData) {
setLoading(true);
const res = await fetch('/api/vedic-astrology/planetary-positions', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(birthData)
});
const data = await res.json();
setNakshatra(data.Moon.nakshatra);
setLoading(false);
}
return (
<div className="nakshatra-calculator">
<h1>Birth Star Calculator</h1>
<BirthForm onSubmit={calculate} />
{loading && <p>Calculating...</p>}
{nakshatra && (
<div className="result">
<h2>Your Birth Star: {nakshatra.name}</h2>
<div className="details">
<p><strong>Pada:</strong> {nakshatra.pada}/4</p>
<p><strong>Deity:</strong> {nakshatra.deity}</p>
<p><strong>Symbol:</strong> {nakshatra.symbol}</p>
</div>
<div className="characteristics">
<h3>Personality Traits</h3>
<p>{nakshatra.characteristics}</p>
</div>
<div className="progress">
<p>Position: {(nakshatra.ratio * 100).toFixed(1)}% through {nakshatra.name}</p>
<div className="bar">
<div style={{ width: `${nakshatra.ratio * 100}%` }} />
</div>
</div>
</div>
)}
</div>
);
}
Nakshatra Compatibility
Check compatibility between two nakshatras for marriage:
const COMPATIBILITY_MATRIX = {
0: [9, 18], // Ashwini compatible with Magha, Moola
16: [6, 25], // Anuradha compatible with Ardra, Purva Bhadrapada
// ... full matrix
};
function checkCompatibility(nakshatra1, nakshatra2) {
const compatible = COMPATIBILITY_MATRIX[nakshatra1.key];
if (compatible?.includes(nakshatra2.key)) {
return {
compatible: true,
score: 8,
message: `${nakshatra1.name} and ${nakshatra2.name} are highly compatible!`
};
}
// Calculate koot points (out of 36)
const kootScore = calculateAshtakoot(nakshatra1.key, nakshatra2.key);
return {
compatible: kootScore >= 18,
score: kootScore,
message: kootScore >= 18 ? 'Good match' : 'Challenging compatibility'
};
}
Nakshatra Remedies
Provide personalized remedies based on birth star:
const REMEDIES = {
'Ashwini': {
mantra: 'Om Ashwini Kumaraya Namaha',
gemstone: "Cat's Eye",
color: 'Red',
fastingDay: 'Tuesday',
deity: 'Ashwini Kumaras',
practices: 'Early morning meditation, healing practices'
},
'Anuradha': {
mantra: 'Om Mitraya Namaha',
gemstone: 'Blue Sapphire',
color: 'Red',
fastingDay: 'Saturday',
deity: 'Mitra',
practices: 'Team-building activities, charity work'
}
};
function RemediesCard({ nakshatra }) {
const remedy = REMEDIES[nakshatra.name];
return (
<div className="remedies">
<h3>Remedial Measures for {nakshatra.name}</h3>
<ul>
<li><strong>Mantra:</strong> {remedy.mantra}</li>
<li><strong>Gemstone:</strong> {remedy.gemstone}</li>
<li><strong>Lucky Color:</strong> {remedy.color}</li>
<li><strong>Fasting Day:</strong> {remedy.fastingDay}</li>
<li><strong>Practices:</strong> {remedy.practices}</li>
</ul>
</div>
);
}
All 27 Nakshatras List
Create a browsable nakshatra directory:
const NAKSHATRAS = [
{ key: 0, name: 'Ashwini', lord: 'Ketu', element: 'Earth' },
{ key: 1, name: 'Bharani', lord: 'Venus', element: 'Earth' },
{ key: 2, name: 'Krittika', lord: 'Sun', element: 'Fire' },
{ key: 3, name: 'Rohini', lord: 'Moon', element: 'Earth' },
{ key: 4, name: 'Mrigashira', lord: 'Mars', element: 'Earth' },
{ key: 5, name: 'Ardra', lord: 'Rahu', element: 'Water' },
{ key: 6, name: 'Punarvasu', lord: 'Jupiter', element: 'Air' },
// ... all 27
];
function NakshatraList({ onSelect }) {
return (
<div className="nakshatra-grid">
{NAKSHATRAS.map(n => (
<div key={n.key} onClick={() => onSelect(n)} className="card">
<h4>{n.name}</h4>
<p>Lord: {n.lord}</p>
<span className="badge">{n.element}</span>
</div>
))}
</div>
);
}
Pada Analysis
Each pada has different characteristics:
function getPadaDetails(nakshatra) {
const padaInfo = {
1: { navamsa: 'Aries', traits: 'Initiative, leadership' },
2: { navamsa: 'Taurus', traits: 'Stability, material focus' },
3: { navamsa: 'Gemini', traits: 'Communication, intellect' },
4: { navamsa: 'Cancer', traits: 'Emotional, nurturing' }
};
const pada = padaInfo[nakshatra.pada];
return {
pada: nakshatra.pada,
navamsa: pada.navamsa,
traits: pada.traits,
description: `Born in ${nakshatra.name} pada ${nakshatra.pada} (${pada.navamsa} navamsa)`
};
}
Mobile App Features
React Native implementation:
function NakshatraApp() {
const [result, setResult] = useState(null);
async function calculateBirthStar(birthData) {
const positions = await vedicAPI.getPlanetaryPositions(birthData);
const moonNakshatra = positions.Moon.nakshatra;
// Store in AsyncStorage for quick access
await AsyncStorage.setItem('birth_star', JSON.stringify(moonNakshatra));
setResult({
nakshatra: moonNakshatra,
pada: getPadaDetails(moonNakshatra),
remedies: REMEDIES[moonNakshatra.name]
});
}
return (
<SafeAreaView>
<ScrollView>
<BirthForm onSubmit={calculateBirthStar} />
{result && (
<>
<NakshatraCard nakshatra={result.nakshatra} />
<PadaDetails pada={result.pada} />
<RemediesCard remedies={result.remedies} />
<CompatibilityChecker currentNakshatra={result.nakshatra} />
</>
)}
</ScrollView>
</SafeAreaView>
);
}
Use Cases
- Birth Star Identification - Personal astrology profiles
- Name Selection - Choose names based on nakshatra sound syllables
- Muhurat Selection - Find auspicious nakshatras for events
- Marriage Matching - Nakshatra compatibility for matrimonial platforms
- Daily Predictions - Transit nakshatra effects
- Educational Apps - Learn about 27 nakshatras
Advanced Features
Transit Analysis:
async function getCurrentNakshatra() {
const now = new Date();
const positions = await vedicAPI.getPlanetaryPositions({
date: now.toISOString().split('T')[0],
time: now.toTimeString().split(':').slice(0, 3).join(':'),
latitude: userLocation.lat,
longitude: userLocation.lng,
timezone: getTimezoneOffset()
});
return positions.Moon.nakshatra;
}
// Use for daily nakshatra widget
const todaysNakshatra = await getCurrentNakshatra();
Conclusion
The RoxyAPI Vedic Astrology API provides complete nakshatra data including pada, deity, characteristics, and exact positioning - everything needed to build professional birth star calculators. The Moon's nakshatra in the planetary positions response gives instant access to one of the most important Vedic astrology data points.
Ready to build your nakshatra calculator? Get your API key and explore the complete documentation.