AstroWay/api v2.295.7 · hu
minden rendszer működik rendben

Hogyan építsünk asztrológiai alkalmazást: fejlesztőknek szóló teljes útmutató

Lépésről lépésre haladó útmutató az asztrológiai alkalmazás létrehozásához nulláról - API kiválasztása, architektúra, első natális diagram, szinasztria és tranzitok hozzáadása, telepítés.

🕓 Feljegyzés 2026-04-14-től, frissítve 2026-05-09. TS / Python / PHP SDK most a nyilvános regiszterekben él - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist). Részletek a changelog-ban.

Szeretnél asztrológiai alkalmazást készíteni. Honnan kezd? Ebben a útmutatóban - megoldás és kód: az API választásától a működő termék telepítéséig.

Mielőtt kódot írnál, döntsd el: számítás a kliensen vagy a szerveren?

Kliens (például Swiss Ephemeris WASM a böngészőben):

  • Előnyök: kérésenkénti költség nélkül, offline működik, teljes kontroll
  • Hátrányok: ~2 MB WASM minden felhasználónak, bonyolult licencelés (a Swiss Ephemeris kereskedelmi használata korlátozott), te magad tartod karban a számítási kódot

Szerver API (AstroWay, Prokerala stb.):

  • Előnyök: kliens függőségek nélkül, kis bundle méret, gyors mobilon, licencbeli fájdalom nélkül
  • Hátrányok: költség kreditekben kérésenként, késleltetés a “hideg” kéréseknél

A legtöbb alkalmazásnál a szerver API nyer. A mobil felhasználók nem várnak 2 MB WASM-re; a licencelési finomságokkal nem érdemes bajlódni; a modern API-k ingyenesen cache-elik az azonos kéréseket (AstroWay 5 perces cache-t használ a X-Cache: HIT fejlécével).

Mi számít:

  • Pontosság: keresd a Swiss Ephemeris “a motor alatt” (±1 szögmásodperc). Ha az API ezt nem mondja ki, kérdezd meg.
  • Fedezet: natal + szinasztéria + tranzitok: minimum. Progressziók és visszatérések – a következő szint. Ritka technikák (rektifikáció, Human Design) – ez a differenciáló.
  • SDK minőség: típusos TypeScript és Python SDK-k órákat takarítanak meg.
  • Árazási modell: a credit-based jobban skálázható, mint a per-request, vegyes terhelés esetén.

Ehhez a tutorialhoz a AstroWay API-t választjuk, mert mind a négyet tartalmazza (777 endpoint, Swiss Ephemeris, típusos SDK, credit-based).

Soha ne hívd közvetlenül az asztrológiai API-t a böngészőből – a API-kulcsod kiszivárog. Mindig a saját backendeden keresztül.

Terminál
mkdir my-astrology-app
cd my-astrology-app
npm init -y
npm install express @astroway/sdk zod
npm install -D typescript @types/express @types/node tsx

Hozz létre egy src/server.ts-t:

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.compute({
...parsed.data,
houseSystem: 'P',
});
res.json(chart);
} catch (err) {
res.status(500).json({ error: String(err) });
}
});
app.listen(3000, () => console.log('http://localhost:3000'));

Futtasd:

Terminál
ASTROWAY_API_KEY=aw_test_... npx tsx src/server.ts

Ellenőrzés curl-lel:

Terminál
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}'

Megkapod a teljes JSON-natal kártyát.

Bármely keretrendszer megfelel. Például – React egyszerű űrlappal:

import { useState } from 'react';
type Chart = {
planets: { name: string; longitude: number; isRetrograde: boolean }[];
aspects: { planet1: string; planet2: string; type: { name: string }; orb: number }[];
};
// Planets come with ecliptic longitude, not a sign: the sign is that longitude
// divided by 30. Work it out on your side, it is cheaper than another call.
const SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo',
'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces'];
const signOf = (longitude: number) => SIGNS[Math.floor(longitude / 30) % 12];
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="Timezone offset (e.g. 3)" required />
<input name="lat" type="number" step="0.0001" placeholder="Latitude" required />
<input name="lng" type="number" step="0.0001" placeholder="Longitude" required />
<button>Build chart</button>
</form>
{chart && (
<div>
<h2>Planets</h2>
<ul>
{chart.planets.map(p => (
<li key={p.name}>{p.name}: {signOf(p.longitude)} {(p.longitude % 30).toFixed(2)}°{p.isRetrograde ? ' R' : ''}</li>
))}
</ul>
<h2>Aspects</h2>
<ul>
{chart.aspects.map((a, i) => (
<li key={i}>{a.planet1} {a.type.name} {a.planet2} (orb {a.orb.toFixed(2)}°)</li>
))}
</ul>
</div>
)}
</div>
);
}

Kompatibilitás – a következő nyilvánvaló funkció. Add hozzá a src/server.ts-hez:

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.compute(parsed.data);
res.json({
score: result.compatibility.score,
label: result.compatibility.label,
aspects: result.crossAspects,
});
});

Ennyi. Egy endpoint, 50 kredit hívásonként, visszaad egy 0–100 skálájú pontszámot és cross-aspects-okat.

A tartalom-elköteleződéshez a napi horoszkópok – kötelező. AstroWay a valós tranzit adatokból generálja őket:

// The daily horoscope is keyed by sign and date, not by the birth chart.
const DailyInput = z.object({
sign: z.enum(['aries', 'taurus', 'gemini', 'cancer', 'leo', 'virgo',
'libra', 'scorpio', 'sagittarius', 'capricorn', 'aquarius', 'pisces']),
date: z.string(),
});
app.post('/api/horoscope/daily', async (req, res) => {
const parsed = DailyInput.safeParse(req.body);
if (!parsed.success) return res.status(400).json({ error: parsed.error });
const horoscope = await client.horoscope.daily({ ...parsed.data, language: 'uk' });
res.json({
text: horoscope.horoscope,
disclaimer: horoscope.disclaimer, // must be shown in the UI!
});
});

Fontos: Az AI által generált tartalom tartalmaz egy disclaimer-t, amelyet kötelező megjeleníteni a felhasználóknak (a Szolgáltatási Feltételek szerint). Ne távolítsd el.

A napi horoszkópok minden felhasználó számára ugyanazok, ha ugyanaz a születési nap és hasonló natal kártyáik vannak. Cache-eld agresszívan:

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.horoscope.daily(req.body);
cache.set(key, horoscope);
res.json(horoscope);
});

Az AstroWay-nak is van beépített 5 perces szerver cache-e (X-Cache: HIT), de a hosszú élettartamú tartalomhoz saját cache szükséges.

Bármely platform megfelel. Gyors induláshoz – Vercel vagy Railway:

Terminál
# vercel.json
{ "functions": { "src/server.ts": { "runtime": "@vercel/node" } } }

A platform panelen állítsd be az env ASTROWAY_API_KEY-t.

Ha idáig eljutottál – becsüld meg a havi kredit fogyasztást a launch előtt:

credits/month = DAU × (avg_charts_per_user × 20
+ avg_synastries × 50
+ avg_horoscopes × 20) × 30

100 DAU esetén 1 kártya + 1 horoszkóp + 0,3 szinasztéria felhasználónként naponta:

100 × (20 + 20 + 0.3 × 50) × 30 = 165,000 credits/month

Ez a Starter terv $19/hó (200K kredit) áron.

Fejlesztett funkciók, amiket érdemes hozzáadni a növekedés során:

  • Tranzit overlay: /v1/transits mutatja a bolygók aktuális pozícióit a natal kártyán
  • Progressziók: /v1/progressions a pszichológiai fejlődés íveihez
  • Solar return: /v1/solar-return a “születésnapi éves előrejelzés” számára
  • Human Design: Human Design API egy teljesen új funkcionális domaint nyit meg
  • Asztrokartográfia: /v1/acg térképezi, hol érdemes a felhasználónak élni

Minden funkció nehéz nulláról megvalósítani, de – egy API hívás AstroWay-val.

MakSeong · AstroWay

Az AstroWay API-t fejlesztem: a Swiss Ephemerist tiszta REST-be csomagolom és írok a unalmas részletekről, amelyek valójában fontosak.

// építs erre

Ugyanaz a Swiss Ephemeris, mint a Solar Fire-ben - 4 sor kóddal.

Ingyenes kulcs bankkártya nélkül. Havi 5 000 hívás a fizetésig.

További bejegyzések összes bejegyzés →

Ephemeris 2026-07-19

Hogyan tartjuk kézben a pontosságot: CI a swetest és a NASA ellen

Egy asztrológiai API pontossága egyetlen efemerisz-refaktorálástól is könnyen leromlik. Bemutatjuk a védelmet: egyetlen Swiss Ephemeris mag az alkalmazásnak és az API-nak, több száz befagyasztott snapshot referenciaképleteken, és minden PR háromszögelése a swetest CGI, a Kerykeion, a Prokerala és a NASA fogyatkozáskatalógusa ellen.

Engineering 2026-07-15

Három hivatalos SDK: TypeScript, Python, PHP a nyers curl helyett

A nyers HTTP működik, de a típusos kliens órákat spórol meg: útvonalak automatikus kiegészítése, kérés és válasz típusai, beépített újrapróbálkozás 408/409/429/5xx hibákra, és Stainless-stílusú hierarchia. Bemutatjuk a három hivatalos SDK-t - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - és hogy hogyan generálódtak egyetlen OpenAPI-szerződésből.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.