A little clarity.
The whole system.
Explore the decisions behind the astrology platform.
Start with the vocabulary. Follow the sky into the system.
A different word might open a door.
No documents match “”.
Try a topic like charts, transits, or ephemeris.
Foundations
The language of the sky, from the ground up. Start here.
-
01
3 min read
Astrology vocabulary, bottom up
The Sun can be in one sign and a different house. Two charts can give it different sign labels without moving it across the sky. A point called a “planet” may turn out to be…
-
02
27 min read
Layer 0 — The sky and the clock
This layer defines the astronomy underneath every chart: how an instant is labelled, how a direction on the sky is described, and from which point the measurement is made. A…
-
03
10 min read
Binder and architecture terms
This page defines the software vocabulary used by the Astro Binder, the part of the system that turns a request for "positions at this instant and place" into checked,…
-
04
22 min read
Glossary A–Z
Use this page as a way back into the lessons. Each row gives a one-sentence definition and links to the section that explains the term in full, with the reasons and examples…
-
05
22 min read
Layer 2 — Signs, houses and angles
This layer separates two twelve-part divisions that are easy to confuse. Signs divide the zodiac and depend only on a body's longitude. Houses divide the local sky of one…
-
06
10 min read
Layer 1 — The zodiac and the ayanamsa
This layer defines the circle that astrology uses to name positions, and the two ways of choosing where that circle starts. Two charts can put the same Sun in different signs…
-
07
17 min read
Layer 6 — The Vedic stack
This layer defines the vocabulary of Jyotish, the Indian astrological tradition. Each entry opens with a definition, explains why the concept exists, works one example with…
-
08
18 min read
Layer 3 — Bodies
This layer defines the objects whose positions a chart records. Not every chart symbol stands for a physical planet: the Sun is a star, the Moon is a satellite, and a lunar…
-
09
10 min read
Layer 4 — Aspects
This layer defines the relationships a chart draws between two positions. Two planets can occupy different signs and still be related by a recognised angle. The terms below…
-
10
16 min read
Layer 5 — Charts and time techniques
This layer defines the kinds of chart an astrologer can build and the techniques used to time events from them. Each entry opens with a definition, explains why the technique…
-
11
2 min read
Sources and how to read them
A short explanation can make a new idea approachable. When you want to go further, the source should match the question: a coordinate reference explains geometry, a…
-
12
9 min read
Layer 7 — Delivery and rendering
This layer names the ways calculated chart data reaches a reader: drawings, tables, animations, programmatic interfaces and files. None of these views changes the sky used in…
-
13
10 min read
Data examples
The lessons explain the ideas; these sketches explore how to carry them in data. Read a record as a set of related facts, then connect its fields back to the sky, chart or…
Ephemeris
The astronomy beneath every calculation.
-
14
2 min read
Ephemeris
Designs for the astronomy layer behind every astrology calculation. An ephemeris is a table or engine that gives the positions of the Sun, Moon and planets at chosen…
-
15
6 min read
Astro Binder — Package Architecture
Astro Binder is the astronomy assembly inside @astrology/ephemeris. Routing, normalization and Swiss/NASA providers are internal modules. Applications normally use…
-
16
3 min read
Swiss Ephemeris adapter — workspace module
The Swiss Ephemeris adapter translates the Swiss engine into the shared contract. The reusable @astrology/ephemeris package implements the standalone…
-
17
6 min read
Swiss adapter module implementation
The implemented slice uses the astronomy contract package and the internal Swiss module of ephemeris: adapter-contract and swiss-ephemeris-adapter. The former HTTP host,…
-
18
5 min read
NASA Adapter — High-Level Design
The NASA adapter is the only component that knows JPL Horizons. It builds a query, guards the call, verifies the response signature, parses the text table into typed values…
-
19
9 min read
NASA adapter module design
This is the module-level design of the @astrology/ephemeris workspace package. It maps the HLD onto the @astrology/astronomy-contracts, the same way the Swiss implementation…
-
20
5 min read
Provider Router — High-Level Design
The router turns a canonical request into exactly one provider decision: a provider, a reason and a cache key, or a typed error when nothing can serve. It holds no results…
-
21
4 min read
Canonical Normalizer — High-Level Design
The normalizer converts one provider answer into the canonical contract: canonical identifiers, units and frame, exactly one zodiac conversion, one rounding point and a…
-
22
4 min read
Astrology Semantics — High-Level Design
The module turns canonical astronomy into signs (twelve 30° divisions of the zodiac), nakshatras (27 lunar mansions), padas (nakshatra quarters), motion, aspects and houses.…
-
23
5 min read
Drift Validator — High-Level Design
Drift is a growing disagreement between the primary engine and an independent reference. The drift validator recomputes sampled cases with Swiss Ephemeris and JPL Horizons,…
-
24
4 min read
Calculation Facade — High-Level Design
The facade is the single entry point for every calculation: cache, one provider, normalisation, enrichment and provenance. It computes no astronomy and no astrology.
-
25
4 min read
Result Cache — High-Level Design
The cache stores normalised provider results for an exact request, with the provenance that produced them. A hit returns the same canonical values without a provider call.
-
26
4 min read
Provenance Store — High-Level Design
Provenance is the evidence of how a value was produced. Each response yields one immutable audit record: the provider, engine version, ephemeris files, flags and precision…
Astrology
Turning chart facts into a coherent system.
-
27
3 min read
Astrology
Designs for the chart layer above the ephemeris: how canonical positions become natal charts, divisional charts (vargas), dashas (planetary period timelines), panchang (the…
-
28
8 min read
Package structure and application integration
The workspace has eight reusable packages and one validation tool. A package represents a domain boundary or an application assembly boundary. Calculators, profiles,…
-
29
8 min read
Astrology development plan
The current package structure is authoritative. Eight reusable workspace packages cover astronomy contracts, astrology primitives, Ephemeris, Composer, Vedic, Western,…
-
30
6 min read
Composer module specifications
The current package structure defines the workspace boundaries. The modules below share their owning domain's package manifest and build. Their factories and helper exports…
-
31
8 min read
Chart Composer tasks
Modules share the Composer domain package. Read the module specifications and current package boundaries for source ownership and public APIs. See the overall assignment and…
-
32
23 min read
Astro Composer — High-Level Design
Implementation tasks: Composer development plan, with HLD references, dependencies and acceptance criteria. The Compose package specifications define the independent shared…
-
33
9 min read
Panchang Engine — High-Level Design
The panchang engine turns one local day into five limbs — tithi (lunar day), vara (weekday), nakshatra (lunar mansion), yoga and karana (half-tithi) — each with exact start…
-
34
9 min read
Transit Engine — High-Level Design
The transit engine compares a moving sky against an immutable reference chart: gochara (transit) positions from the natal Moon, Sade Sati phases and ashtakavarga scores,…
-
35
9 min read
Matching Engine — High-Level Design
The matching engine evaluates ashtakoota (eight-factor compatibility) for two charts: eight kootas, thirty-six points, the doshas (faults) they imply and the cancellation…
-
36
6 min read
Chart Core — High-Level Design
Chart core turns one binder snapshot plus one profile into the D1 chart: frame, houses, bodies and planet judgements. It is the only engine that picks the chart frame, and…
-
37
7 min read
Varga Engine — High-Level Design
The varga engine maps one sidereal D1 (natal chart) longitude into each of the sixteen Shodasavarga signs, then builds the varga frame from the same mapping. It is pure…
-
38
8 min read
Dasha Engine — High-Level Design
The dasha engine turns the Moon's position at birth into a Vimshottari timeline: mahadasha, antardasha and pratyantardasha (first-, second- and third-level planetary periods)…
-
39
25 min read
Astro Composer — Research and Convention Register
Current capability/precision corrections are recorded in the HLD alignment review. Figures and older endpoint proposals remain historical references; they do not override the…
-
40
8 min read
Vedic module specifications
The current package structure defines the workspace boundaries. The modules below share their owning domain's package manifest and build. Their factories and helper exports…
-
41
12 min read
Vedic engine tasks
Modules share the Vedic domain package. Read the module specifications and current package boundaries for source ownership and public APIs. Authority: Vedic HLD; detailed…
-
42
6 min read
Vedic Engine — High-Level Design
Implementation tasks: Vedic development plan, with HLD references, dependencies and acceptance criteria per task. The Vedic package specifications split the logical engine…
-
43
18 min read
Vedic Strength Systems — Specification (V-06)
This document defines the strength systems the Vedic engine may later calculate, the inputs each factor needs, and which of those inputs Composer can already supply. It is…
-
44
7 min read
Muhurta Pack `yatra@1` — Specification (V-13)
A muhurta is an auspicious time window chosen for a purpose. The first muhurta purpose pack selects daytime windows for starting a journey (yatra). It is a pure filter over…
-
45
5 min read
Yoga/Dosha Pack `parashari-core@1` — Specification (V-12)
The first named pack of yogas (named planetary combinations) and doshas (named afflictions). It deliberately holds three rules, each written in the evaluator's existing…
-
46
7 min read
Western module specifications
The current package structure defines the workspace boundaries. The modules below share their owning domain's package manifest and build. Their factories and helper exports…
-
47
8 min read
Western engine tasks
Modules share the Western domain package. Read the module specifications and current package boundaries for source ownership and public APIs. Authority: Western HLD. See…
-
48
6 min read
Western Engine — High-Level Design
Implementation tasks: Western development plan, with HLD references, dependencies and acceptance criteria per task. The Western package specifications define independently…
-
49
4 min read
Western dependency adapters
The Western packages are built ahead of a frozen Compose implementation by narrowing every upstream contact to a Western-owned shape. An adapter copies values into that…
-
50
5 min read
Western technique conventions (W-05)
W-06–W-10 each implement one named convention. This directory fixes exactly one variant per technique, names the variants that stay unsupported, and lists the Composer facts…
-
51
9 min read
Composite Method `midpoint@1` — Specification (W-05)
A composite chart is a relationship chart: one derived chart built from two admitted reference charts. Two construction families exist and are not interchangeable:
-
52
8 min read
Secondary Progressions `secondary-day-for-year@1` — Specification (W-05)
A progression maps a target date to a calculation instant, then asks Composer for real astronomy at that instant. Nothing is extrapolated from the birth chart: the progressed…
-
53
11 min read
Solar Return `solar@1` — Specification (W-05)
A return is the instant a body reaches a target ecliptic longitude again, followed by the chart for that instant. Two separate jobs live here: a bounded root search through…
-
54
8 min read
Solar-Arc Directions `solar-arc-naibod@1` — Specification (W-05)
Solar-arc directions move every point of a reference chart by one shared arc and compare the moved points with the original chart. The technique is a static transformation…
-
55
7 min read
Harmonic Chart `harmonic-n@1` — Specification (W-05)
A harmonic chart multiplies every ecliptic longitude by an integer factor. It is the smallest transformation in the engine and the easiest one to mislabel: the output is…
-
56
7 min read
HLD alignment and correction review
The HLDs support shared chart assembly above Binder and separate Vedic/Western calculation ownership. Every planned calculation family maps to an existing component or…
Research
The landscape, the patterns, and the possibilities.
-
57
1 min read
Research
Market and domain research behind the ephemeris and astrology designs. Neither document describes shipped behaviour; both inform product and vocabulary decisions.
-
58
3 min read
Astrology App Competitor Analysis Research
1. report.md — Market bifurcation, three paths, Kotlin positioning 2. notes/consumerapps.md — Pricing, features, platforms, USPs (15 apps) 3. notes/professionalapis.md —…
-
59
5 min read
Mapping the Astrology App Competitive Landscape
Western apps dominate U.S. revenue through social features and live-reading upsells; Vedic apps hold India with 70M+ downloads and consultation marketplaces. With calculation…
-
60
6 min read
Competitive Landscape — Visual Guide
Four charts show what competitors ship, where that depth lives, what they charge and which engine sits underneath.
-
61
12 min read
Astrology Platform Feature Comparison Matrix
-
62
12 min read
Consumer Astrology Apps Competitor Analysis
1. Revenue/download precision: Sensor Tower and data.ai need paid subscriptions; estimates vary. 2. Astra: the 2025 download leader, but little public information. 3.…
-
63
13 min read
Professional Astrology APIs and Platforms — Competitor Analysis
-
64
14 min read
Vedic Astrology Platforms — Competitive Research
Sources: - AstroSage features: Google Play listing - ClickAstro languages: ClickAstro horoscope page - Drik Panchang: App description, Settings - Parashara's Light: Feature…
Packages
Domain boundaries, application setup, and calculation modules.
-
65
1 min read
Package and module guides
See the architecture and dependency HLD for runtime ownership and every direct production workspace dependency.
-
66
2 min read
adapter-contract module
Consumer workspace packages declare "@astrology/astronomy-contracts": "workspace:" in their dependencies. Build the contract before its consumers with pnpm build:ephemeris,…
-
67
4 min read
astrology-semantics module
// adapter is any EphemerisAdapter; the facade owns execution and response assembly. const normalized = new NormalizingAdapter(adapter); const positions = await…
-
68
3 min read
canonical-normalizer module
const astronomy = new NormalizingAdapter(new SwissAdapter()); const result = await astronomy.positions({ instant: '2000-01-01T12:00:00Z', bodies: ['sun', 'moon'], zodiac:…
-
69
4 min read
provider-router module
const swiss = new SwissAdapter(); const capabilities = await swiss.capabilities(); const router = new ProviderRouter([{ capabilities }]); const adapters = new…
-
70
3 min read
swiss-ephemeris-adapter module
The shared logger emits operation summaries at debug, explicit capability probe completion at info, and worker capacity/provider failures at warn. Events are emitted in the…
-
71
2 min read
nasa-adapter module
The shared logger records completed operations at debug and failures at warn, with error codes and body counts only. Requests, coordinates and response text are never logged.
-
72
6 min read
ephemeris-binder module
Declare "@astrology/ephemeris/node": "workspace:" in the consumer's dependencies. Run pnpm setup:ephemeris once to provision the pinned Swiss files, then pnpm build:ephemeris.
-
73
2 min read
chart-core module
Assembles supplied astronomical facts into a reference frame, house placements and body rosters.
-
74
7 min read
Reading the Chart Composer
Chart Composer turns completed astronomical reads into neutral chart facts. It serves both the Vedic and Western engines; those engines add their own judgments afterward.
-
75
2 min read
contracts module
The shared TypeScript vocabulary for chart inputs, snapshots, geometry and injected ports.
-
76
2 min read
context module
Validates explicit chart choices and decides when acquired facts or chart coordinates are compatible.
-
77
2 min read
evidence module
Creates deterministic calculation identities and retains distinct contributing source records.
-
78
2 min read
geometry module
Evaluates aspect contacts (named angular relationships between points) and directed house overlays through the existing semantics helpers.
-
79
2 min read
probes module
See the reading guide for the session's state and reading order.
-
80
3 min read
composer module
The public shared facade composes neutral snapshots for either engine. It contains no tradition rules and never imports or constructs Binder or a provider. Host code resolves…
-
81
1 min read
ashtakavarga module
Natal Bhinna and Sarva Ashtakavarga, the bindu (point) tables that score how strongly each sign is supported by the planets. Public imports use the package root. See the…
-
82
2 min read
chart-judgments module
D1 dignity, combustion and planetary war (two planets closer than one degree, one declared the winner) over Composer facts. Public imports use the package root. See the…
-
83
1 min read
contracts module
Shared Vedic identities, result envelopes, feature contract and upstream ports. Public imports use the package root. See the package specification and task plan (V-16).
-
84
1 min read
dasha module
Vimshottari (Vimshottari dasha, the 120-year cycle of nine planetary periods) birth balance, nested timeline and active-period lookup. Public imports use the package root.…
-
85
1 min read
drishti module
Policy-aware Vedic graha drishti relationships: the whole-sign aspects a planet casts by counting signs from its own. Public imports use the package root. See the package…
-
86
2 min read
engine module
Public Vedic coordinator, dependency planning and evidence. Public imports use the package root. See the package specification and task plan (V-15).
-
87
2 min read
host module
Registers Vedic calculation modules with createVedicEngine and exposes the result as one transport-neutral service for an HTTP layer. See the host assembly order (steps 3–5).
-
88
2 min read
matching module
Ashtakoota matching, the eight-factor (koota) compatibility score out of 36, over two sets of Moon facts. Public imports use the package root. See the package specification…
-
89
1 min read
muhurta module
Purpose-pack muhurta (auspicious time window) selection over calculated panchang days. Public imports use the package root. See the package specification and task plan (V-13,…
-
90
2 min read
panchang module
Sunrise-anchored five limbs of the panchang, the Vedic calendar day, with solved boundary instants. Public imports use the package root. See the package specification and…
-
91
1 min read
profiles module
Internal Vedic convention selection. Public service types are exported from the package root. See the package specification and task plan (V-01).
-
92
1 min read
rulebooks module
Rulebook registry, bundle integrity and version admission. Public imports use the package root. See the package specification and task plan (V-17).
-
93
3 min read
strengths module
Audited strength factors with explicit completeness. Public imports use the package root. See the package specification and task plan (V-06, V-19).
-
94
2 min read
transit module
Gochara (Vedic transits counted from the natal Moon sign), vedha, Sade Sati and solved transit windows. Public imports use the package root. See the package specification and…
-
95
2 min read
upstream module
Adapter and binder layer that connects upstream astronomy ports as they become available. Public imports use the package root. See the package specification and task plan.
-
96
1 min read
varga module
D1-to-divisional mapping, varga frames (divisional charts that split each sign into equal or unequal parts) and vargottama (same sign in D1 and D9). Public imports use the…
-
97
1 min read
yoga-dosha module
Named yoga/dosha rule packs (planetary combinations and afflictions) over supplied facts. Public imports use the package root. See the package specification and task plan…
-
98
2 min read
composite module
Implements composite@1/midpoint, the composite chart built from the midpoints of two charts: shorter-arc body/ASC (Ascendant, the rising degree)/MC (Midheaven, the…
-
99
3 min read
contracts module
Western domain contract shared by the engine and its technique packages. Public imports use the package root. See the package specification and task W-12.
-
100
1 min read
directions module
Implements directions@1/solar-arc-naibod, a solar arc direction that moves every point by the same arc. calculateSolarArc({ reference, targetInstant }, rules) advances…
-
101
4 min read
engine module
Western coordinator: profile and rulebook resolution, upstream binding, technique planning and the result envelope. Public imports use the package root. See the package…
-
102
1 min read
harmonics module
Implements harmonics@1/harmonic-n, the harmonic chart. transformHarmonic(snapshot, factor, rules) multiplies body, ASC (Ascendant) and MC (Midheaven) longitudes by an elected…
-
103
2 min read
host module
The service exposes the coordinator's capabilities, compose, chart and operation methods, plus the registered technique names and profile/rulebook identities. Requests still…
-
104
3 min read
natal module
Pure Western natal judgments over admitted chart facts: element/modality distribution, house emphasis, rulership, essential dignity and aspect/sign patterns. Public imports…
-
105
3 min read
profiles module
Versioned Western convention catalog plus the adapter that turns a resolved profile and request values into the shared Composer chart request. Public imports use the package…
-
106
2 min read
progressions module
Implements progressions@1/secondary-day-for-year, the secondary progression that equates one day after birth with one year of life. mapProgressionContext({ reference,…
-
107
2 min read
returns module
Implements returns@1/solar, the solar return: search for the reference Sun longitude, then cast a chart at a unique solved instant under an explicit location policy. Lunar,…
-
108
2 min read
rulebooks module
Western rulebook admission: manifest validation, content-hash integrity and typed technique lookup. Public imports use the package root. See the package specification and…
-
109
2 min read
synastry module
Implements synastry, the comparison of two people's charts. Compares two already-admitted Composer snapshots using an injected GeometryPort. The ordered source/target pair…
-
110
4 min read
transit module
Implements transits, the comparison of current sky positions with a reference chart. Compares elected moving/reference body pairs using Composer geometry. The natal reference…
-
111
2 min read
upstream module
Adapter and binder layer that connects upstream astronomy and geometry ports as they become available. Public imports use the package root. See the package specification and…
-
112
2 min read
binder-client module
Wrap an already initialized Binder with createBinderReader(binder). Binder is imported only as a type. Host code owns provider construction, resolution of Terrestrial Time…
-
113
1 min read
host module
Shared host assembly for both tradition services: wraps an initialized Binder with createBinderReader and builds one Composer with explicit probe limits (steps 1–2 of the…
-
114
4 min read
logger module
const applicationLogging: LoggingPlugin = { name: 'application-profile', configure: ({ environment }) => ({ level: environment.APPPROFILE === 'production' ? 'warn' : 'info',…
-
115
4 min read
drift-validator module
// Supply dedicated uncached EphemerisAdapter instances from the background worker host. // A future NASA/Horizons adapter can implement the existing contract. const…
-
116
2 min read
@astrology/api-service
Transport-neutral service layer behind the HTTP API. It holds every operation the Express controllers expose, so code in the same process can call them directly with no HTTP…