🕓 पोस्ट 2026-04-14, अंतिम अपडेट 2026-05-09. TS / Python / PHP SDK अब सार्वजनिक रजिस्ट्री में हैं —
@astroway/sdk(npm),astroway(PyPI),astroway/sdk(Packagist)। विवरण changelog में देखें।
क्या तू एक एस्ट्रोलॉजी ऐप बनाना चाहता है? शुरुआत कहाँ से करें? इस गाइड में तू समाधान और कोड दोनों पाएगा: API चुनने से लेकर अपने प्रोडक्ट को डिप्लॉय करने तक।
आर्किटेक्चर संबंधी सवाल
Section titled “आर्किटेक्चर संबंधी सवाल”कोड लिखने से पहले तय कर: क्या कैलकुलेशन क्लाइंट-साइड होगा या सर्वर-साइड?
क्लाइंट-साइड (उदाहरण: ब्राउज़र में Swiss Ephemeris WASM):
- फ़ायदे: प्रति अनुरोध लागत नहीं, ऑफलाइन काम करता है, पूरा नियंत्रण
- नुकसान: हर यूज़र के लिए ~2 MB WASM, लाइसेंसिंग जटिल (Swiss Ephemeris का व्यावसायिक इस्तेमाल प्रतिबंधित है), तू खुद कैलकुलेशन कोड का रखरखाव करेगा
सर्वर-साइड API (AstroWay, Prokerala आदि):
- फ़ायदे: क्लाइंट-साइड निर्भरताएँ नहीं, ऐप का छोटा बंडल, मोबाइल पर तेज़, लाइसेंस संबंधी परेशानियाँ नहीं
- नुकसान: प्रति अनुरोध क्रेडिट में लागत, “कोल्ड” अनुरोधों में देरी
ज़्यादातर ऐप्स के लिए सर्वर-साइड API बेहतर विकल्प है। मोबाइल यूज़र्स 2 MB WASM के लिए इंतज़ार नहीं करेंगे; लाइसेंस संबंधी झंझटों से बचना चाहिए; और आधुनिक API मुफ़्त में समान अनुरोधों को कैश करते हैं (AstroWay 5-मिनट का कैश X-Cache: HIT हेडर के साथ प्रदान करता है)।
API चुनना
Section titled “API चुनना”क्या महत्वपूर्ण है:
- सटीकता — ऐसी API ढूंढ जो Swiss Ephemeris का इस्तेमाल करती हो (±1 आर्क सेकंड)। अगर API सीधे इसकी जानकारी नहीं देती, तो पूछताछ कर।
- कवरेज — जन्म कुंडली + सिनास्ट्री + ट्रांज़िट न्यूनतम होना चाहिए। प्रोग्रेशन और रिटर्न अगला स्तर है। दुर्लभ तकनीकें (रेक्टिफिकेशन, ह्यूमन डिज़ाइन) एक अलग पहचान होती हैं।
- SDK की गुणवत्ता — टाइप किए गए TypeScript और Python SDK समय बचाते हैं।
- टैरिफ मॉडल — प्रति अनुरोध की बजाय क्रेडिट-बेस्ड मॉडल मिश्रित लोड पर बेहतर स्केल करता है।
इस ट्यूटोरियल के लिए हम AstroWay API का इस्तेमाल करेंगे क्योंकि इसमें चारों विशेषताएँ हैं (723 एंडपॉइंट, Swiss Ephemeris, टाइप किए गए SDK, क्रेडिट-बेस्ड)।
चरण 1: बैकएंड सेटअप करें
Section titled “चरण 1: बैकएंड सेटअप करें”कभी भी एस्ट्रोलॉजी API को सीधे ब्राउज़र से कॉल मत कर — तेरा API की लीक हो जाएगी। हमेशा अपने बैकएंड के माध्यम से कॉल करें।
mkdir my-astrology-appcd my-astrology-appnpm init -ynpm install express @astroway/sdk zodnpm install -D typescript @types/express @types/node tsxsrc/server.ts बनाएं:
import express from 'express';import { Astroway } from '@astroway/sdk';import { z } from 'zod';
const app = express();app.use(express.json());
const client = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY!,});
const BirthInput = z.object({ date: z.string(), time: z.string(), timezoneOffset: z.number(), latitude: z.number(), longitude: z.number(),});
app.post('/api/chart', async (req, res) => { const parsed = BirthInput.safeParse(req.body); if (!parsed.success) return res.status(400).json({ error: parsed.error });
try { const chart = await client.chart({ ...parsed.data, houseSystem: 'P', }); res.json(chart); } catch (err) { res.status(500).json({ error: String(err) }); }});
app.listen(3000, () => console.log('http://localhost:3000'));चलाएं:
ASTROWAY_API_KEY=aw_test_... npx tsx src/server.tscurl से जांचें:
curl -X POST http://localhost:3000/api/chart \ -H "Content-Type: application/json" \ -d '{"date":"1990-07-14","time":"14:30:00","timezoneOffset":3,"latitude":50.4501,"longitude":30.5234}'तुम्हें पूरी JSON जन्म कुंडली मिल जाएगी।
चरण 2: फ्रंटएंड
Section titled “चरण 2: फ्रंटएंड”कोई भी फ्रेमवर्क काम करेगा। उदाहरण के लिए, साधारण फॉर्म के साथ React:
import { useState } from 'react';
type Chart = { planets: { name: string; longitude: number; sign: string; house: number }[]; aspects: { planet1: string; planet2: string; type: string; orb: number }[];};
export function NatalForm() { const [chart, setChart] = useState<Chart | null>(null);
async function handleSubmit(formData: FormData) { const body = Object.fromEntries(formData.entries()); const res = await fetch('/api/chart', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ date: body.date, time: body.time + ':00', timezoneOffset: Number(body.tz), latitude: Number(body.lat), longitude: Number(body.lng), }), }); setChart(await res.json()); }
return ( <div> <form action={handleSubmit}> <input name="date" type="date" required /> <input name="time" type="time" required /> <input name="tz" type="number" placeholder="टाइमज़ोन ऑफसेट (उदाहरण: 3)" required /> <input name="lat" type="number" step="0.0001" placeholder="अक्षांश" required /> <input name="lng" type="number" step="0.0001" placeholder="देशांतर" required /> <button>कुंडली बनाएं</button> </form>
{chart && ( <div> <h2>ग्रह</h2> <ul> {chart.planets.map(p => ( <li key={p.name}>{p.name}: {p.sign} (गृह {p.house})</li> ))} </ul> <h2>एस्पेक्ट</h2> <ul> {chart.aspects.map((a, i) => ( <li key={i}>{a.planet1} {a.type} {a.planet2} (ऑर्ब {a.orb.toFixed(2)}°)</li> ))} </ul> </div> )} </div> );}चरण 3: सिनास्ट्री
Section titled “चरण 3: सिनास्ट्री”संगतता अगली स्पष्ट सुविधा है। src/server.ts में जोड़ें:
const SynastryInput = z.object({ chart1: BirthInput, chart2: BirthInput,});
app.post('/api/synastry', async (req, res) => { const parsed = SynastryInput.safeParse(req.body); if (!parsed.success) return res.status(400).json({ error: parsed.error });
const result = await client.synastry(parsed.data); res.json({ score: result.compatibility.score, label: result.compatibility.label, aspects: result.crossAspects, });});बस हो गया। एक एंडपॉइंट, प्रति कॉल 50 क्रेडिट, 0–100 तक का स्कोर और क्रॉस-एस्पेक्ट लौटाता है।
चरण 4: दैनिक राशिफल
Section titled “चरण 4: दैनिक राशिफल”कंटेंट एंगेजमेंट के लिए दैनिक राशिफल ज़रूरी है। AstroWay वास्तविक ट्रांज़िट डेटा से उन्हें जनरेट करता है:
app.post('/api/horoscope/daily', async (req, res) => { const parsed = BirthInput.safeParse(req.body); if (!parsed.success) return res.status(400).json({ error: parsed.error });
const horoscope = await client.horoscopeDaily(parsed.data); res.json({ text: horoscope.text, disclaimer: horoscope.disclaimer, // UI में ज़रूर दिखाएं! });});महत्वपूर्ण: AI-जेनरेटेड कंटेंट में एक disclaimer होता है जिसे तू यूज़र्स को दिखाने के लिए बाध्य है (टर्म्स ऑफ सर्विस के अनुसार)। इसे हटाना मत।
चरण 5: कैशिंग
Section titled “चरण 5: कैशिंग”दैनिक राशिफल एक ही जन्म तिथि और समान जन्म कुंडली वाले सभी यूज़र्स के लिए समान होते हैं। आक्रामक तरीके से कैश करें:
import { LRUCache } from 'lru-cache';
const cache = new LRUCache<string, any>({ max: 1000, ttl: 86400 * 1000 });
app.post('/api/horoscope/daily', async (req, res) => { const key = JSON.stringify(req.body); const cached = cache.get(key); if (cached) return res.json(cached);
const horoscope = await client.horoscopeDaily(req.body); cache.set(key, horoscope); res.json(horoscope);});AstroWay में भी अंतर्निहित 5-मिनट का सर्वर-साइड कैशिंग (X-Cache: HIT) है, लेकिन लंबे समय तक रहने वाले कंटेंट के लिए खुद का कैश ज़रूरी है।
चरण 6: डिप्लॉयमेंट
Section titled “चरण 6: डिप्लॉयमेंट”कोई भी प्लेटफ़ॉर्म काम करेगा। जल्दी शुरुआत के लिए Vercel या Railway:
# vercel.json{ "functions": { "src/server.ts": { "runtime": "@vercel/node" } } }प्लेटफ़ॉर्म के डैशबोर्ड में ASTROWAY_API_KEY env वेरिएबल सेट करें।
बजट की योजना बनाएं
Section titled “बजट की योजना बनाएं”अगर तू यहाँ तक पहुँच गया है, तो लॉन्च से पहले मासिक क्रेडिट खपत का अनुमान लगा ले:
क्रेडिट/माह = DAU × (औसत_कुंडलियाँ_प्रति_यूज़र × 20 + औसत_सिनास्ट्री × 50 + औसत_राशिफल × 20) × 30100 DAU के लिए, प्रति यूज़र प्रति दिन 1 कुंडली + 1 राशिफल + 0.3 सिनास्ट्री के साथ:
100 × (20 + 20 + 0.3 × 50) × 30 = 165,000 क्रेडिट / माहयह Starter प्लान है जो $19/माह (200K क्रेडिट) का है।
आगे क्या?
Section titled “आगे क्या?”उन्नत सुविधाएँ जिन्हें तू बढ़ने के साथ जोड़ सकता है:
- ट्रांज़िट ओवरले —
/v1/transitsवर्तमान ग्रह स्थितियाँ जन्म कुंडली पर दिखाता है - प्रोग्रेशन —
/v1/progressionsमनोवैज्ञानिक विकास के चाप के लिए - सोलर रिटर्न —
/v1/solar-return“जन्मदिन से एक साल का पूर्वानुमान” - ह्यूमन डिज़ाइन — Human Design API एक नया फ़ंक्शनल डोमेन खोलता है
- एस्ट्रोकार्टोग्राफी —
/v1/acgदिखाता है कि यूज़र को कहाँ रहना चाहिए
हर सुविधा शून्य से शुरू करने में मुश्किल है, लेकिन AstroWay के साथ यह सिर्फ एक API कॉल है।
शुरुआत करें
Section titled “शुरुआत करें”- मुफ़्त API की प्राप्ति करें — 10,000 क्रेडिट / माह
- पूरा API रेफरेंस — सभी 723 एंडपॉइंट
- जन्म कुंडली API — कुंडली एंडपॉइंट का विस्तृत दस्तावेज़
वही Swiss Ephemeris जो Solar Fire में है — बस 4 लाइनों के कोड में।
कार्ड के बिना मुफ्त कुंजी। पहले भुगतान तक 5,000 कॉल प्रति माह।