Skip to content

Commit e237090

Browse files
committed
feat(vedic): gochara, bhava bala and bhav chalit, sidereal frame provenance everywhere, and a widget budget that measures the wire
Three new components. roxy-gochara-table renders POST /vedic-astrology/transit, the singular Vedic operation that was bound to nothing and fell through to roxy-data. Kaksha is drawn as a position within the sign rather than a verdict chip, because what a practitioner reads off it is how long until the reading turns. bindu is null for Rahu and Ketu, which have no Bhinnashtakavarga, so those rows render neutral with no verdict rather than reading as unfavourable. roxy-bhava-bala-table ranks the twelve houses with the three classical components proportional to the strongest bhava, never per row. roxy-bhav-chalit leads with how many grahas change house on the real cusps, and says in words that zero moved is a normal result. Sidereal frame provenance is now on every component that carries it. Fifteen response schemas echo frame and two rendered it, which matters because changing the ayanamsa can move a graha into a different rashi, so an unlabelled chart cannot be reconciled against any other calculator. One shared renderFrameCaption covers all eleven, and bindings.test.ts fails if a frame-carrying component lacks it. yoga-list took its verdict from a regex over evidence prose, which is translated, so the Outranked group collapsed under any non-English lang. It reads suppressedBy now and names the family that silenced it. The widgets budget measured RAW bytes while every other artifact was measured gzipped, and this script is mostly a slug map, which compresses about ten to one. That gap had been deciding product scope: six finished components were withheld from the copy-paste path over bytes nobody downloads. The budget is 4096 gzipped now, sits near 2.7 KB with the full catalogue, and UNBOUND_COMPONENTS is empty. Samples, previews and screenshots recaptured from prod. The yoga-detect sample moves to a chart that actually produces an outranked verdict, since the shared demo person never could, and that change immediately failed axe on a pre-existing contrast bug no scan had ever reached.
1 parent fff13de commit e237090

293 files changed

Lines changed: 3427 additions & 264 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ Use the table below for the formal endpoint to component mapping.
8383
| `<roxy-hora-table>` | Vedic | POST /vedic-astrology/panchang/hora | Day and night planetary hours with ruling planet and window |
8484
| `<roxy-choghadiya-grid>` | Vedic | POST /vedic-astrology/panchang/choghadiya | Day and night Choghadiya muhurta tiles colored by effect |
8585
| `<roxy-heliacal-table>` | Vedic | POST /vedic-astrology/heliacal | Udaya and asta windows for the six visible grahas, the calculation behind Guru Asta and Shukra Asta |
86+
| `<roxy-gochara-table>` | Vedic | POST /vedic-astrology/transit | Vedic gochara with aspects to the natal chart and the Gochara Kaksha reading drawn as a position within the sign |
87+
| `<roxy-bhava-bala-table>` | Vedic | POST /vedic-astrology/bhava-bala | House strength in rupas and virupas, ranked, with Bhavadhipati, Dig and Drishti Bala shown as proportions of the total |
88+
| `<roxy-bhav-chalit-table>` | Vedic | POST /vedic-astrology/bhav-chalit | The Chalit chart against the Rashi chart, leading with how many grahas move and which, plus the unequal bhava spans |
8689
| `<roxy-upagraha-table>` | Vedic | POST /vedic-astrology/upagraha | Time-based and Sun-based upagrahas with rashi, degree, longitude and nakshatra |
8790
| `<roxy-chara-karakas>` | Vedic | POST /vedic-astrology/chara-karakas | Karaka offices in rank order with graha, degree, scheme, and what each is read for |
8891
| `<roxy-arudha-padas>` | Vedic | POST /vedic-astrology/arudha | Twelve padas with bhava, lord, pada rashi, house from Lagna, and the classical exception marked |

README.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ The highest-demand components by domain, in the order you are most likely to shi
364364

365365
### 1. Western astrology (natal chart, daily horoscope, synastry)
366366

367-
The global astrology app market is $6.27B and almost entirely Western. Zodiac dating apps, Co-Star-style natal chart products, daily horoscope features, and lunar-cycle wellness apps all ship these first.
367+
The natal wheel, the daily horoscope and the synastry comparison, which is what most astrology products ship first. Zodiac dating apps, natal chart products, horoscope features and lunar-cycle wellness apps all build on these three.
368368

369369
```tsx
370370
import { createRoxy } from '@roxyapi/sdk';
@@ -394,7 +394,7 @@ const { data: synastry } = await roxy.astrology.calculateSynastry({
394394

395395
### 2. Vedic astrology (kundli, panchang, dasha, dosha, KP, ashtakavarga, divisional)
396396

397-
The depth moat. India astrology market: $163M in 2024, projected $1.8B by 2030 (49% CAGR). Kundli, panchang, dasha, dosha, KP horary, and divisional charts (D9 Navamsa, D10 Dasamsa) are the highest-traffic Vedic queries for every matrimonial platform, kundli generator, muhurat app, and professional reader.
397+
The deepest domain in the catalog. Kundli, panchang, dasha, dosha, KP horary, ashtakavarga and the divisional charts (D9 Navamsa, D10 Dasamsa) are what matrimonial platforms, kundli generators, muhurat apps and professional readers need, and each one has a component rather than a raw payload.
398398

399399
```tsx
400400
import {
@@ -450,7 +450,7 @@ const { data: d9 } = await roxy.vedicAstrology.generateDivisionalChart({
450450

451451
### 3. Numerology (life path, full chart, personal year)
452452

453-
Commodity content with durable demand. `life path number calculator` is among the highest-volume spiritual searches globally. Works without birth time. Easiest domain to integrate.
453+
Life path, the full chart, and the personal year. The easiest domain to integrate: a name and a birth date are enough, with no birth time and no coordinates.
454454

455455
```tsx
456456
import { RoxyNumerologyCard } from '@roxyapi/ui-react';
@@ -476,7 +476,7 @@ const { data: pyear } = await roxy.numerology.calculatePersonalYear({
476476

477477
### 4. Tarot (daily card, three-card, Celtic Cross)
478478

479-
High search volume, evergreen. The tarot card database is the highest per-endpoint call count in the catalog because apps fetch once and cache.
479+
Draw a single daily card, a three-card spread, or a full Celtic Cross. The card database is stable reference data, so fetch it once and cache it rather than calling per render.
480480

481481
```tsx
482482
import { RoxyTarotCard, RoxyTarotSpread } from '@roxyapi/ui-react';
@@ -500,7 +500,7 @@ const { data: cc } = await roxy.tarot.castCelticCross({
500500

501501
### 5. Human Design (bodygraph)
502502

503-
The breakout 2026 self-knowledge category, computed from the same ephemeris as Western astrology plus the I Ching gate wheel and chakra-style centers. Self-discovery apps, dating and compatibility products, and AI coaching bots ship the full bodygraph first. No coordinates needed; Human Design uses the birth instant, not the observer location.
503+
A self-knowledge system computed from the same ephemeris as Western astrology, laid over the I Ching gate wheel and nine chakra-style centers. Self-discovery apps, dating and compatibility products, and AI coaching bots render the full bodygraph. No coordinates needed; Human Design uses the birth instant, not the observer location.
504504

505505
The response is a reading, not a set of labels: the type, strategy, authority, profile, and definition each arrive with the text that explains them, every defined channel and every center carry their own interpretation, and each of the activations carries a gate meaning and the meaning of its line. `<RoxyBodygraph>` lays that out for you. The chart and the identity read at a glance, and every body of prose sits behind a disclosure, so one component renders a complete reading without becoming a wall of text.
506506

@@ -527,7 +527,7 @@ const { data: bodygraph } = await roxy.humanDesign.generateBodygraph({
527527

528528
### 6. Forecast (transits, cross-domain timeline)
529529

530-
The first cross-domain, stateless forecast in the catalog: one call merges Western transits, Vedic Vimshottari dasha boundaries, and biorhythm critical days into a single significance-scored, time-ordered timeline. Forecast feeds, transit alerts, and timing tools are the buyers. Acquire on the high-volume `astrology transits` search, convert on the cross-domain timeline no competitor ships. No coordinates needed.
530+
One stateless call merges Western transits, Vedic Vimshottari dasha boundaries, and biorhythm critical days into a single significance-scored, time-ordered timeline. Built for forecast feeds, transit alerts, and timing tools. No coordinates needed.
531531

532532
```tsx
533533
import { RoxyForecastTimeline } from '@roxyapi/ui-react';
@@ -552,7 +552,7 @@ const { data: timeline } = await roxy.forecast.generateTimeline({
552552

553553
### 7. Biorhythm (daily, forecast)
554554

555-
Zero competition domain. Steady search volume with the top Google result being a static calculator page. Pure land-grab for wellness, productivity, sports, and couples apps.
555+
Physical, emotional and intellectual cycles from a birth date alone, as a daily reading or a forward forecast with the critical days marked. Fits wellness, productivity, sports and couples apps.
556556

557557
```tsx
558558
import { RoxyBiorhythmChart } from '@roxyapi/ui-react';
@@ -573,7 +573,7 @@ const { data: forecast } = await roxy.biorhythm.getForecast({
573573

574574
### 8. I Ching (cast a reading, hexagram lookup)
575575

576-
Meditation apps, decision-making tools, and wisdom chatbots. `i ching API` and `hexagram API` are the keywords.
576+
Cast a reading with its changing lines and the hexagram it transforms into, or look up any of the 64 figures directly. Fits meditation apps, decision-making tools and wisdom chatbots.
577577

578578
```tsx
579579
import { RoxyHexagram } from '@roxyapi/ui-react';
@@ -652,6 +652,9 @@ The self-fetch form renders spec-driven inputs (a zodiac tile picker, a boolean
652652
| `<roxy-hora-table>` | Vedic | POST /vedic-astrology/panchang/hora | Day and night planetary hours with ruling planet and window |
653653
| `<roxy-choghadiya-grid>` | Vedic | POST /vedic-astrology/panchang/choghadiya | Day and night Choghadiya muhurta tiles colored by effect |
654654
| `<roxy-heliacal-table>` | Vedic | POST /vedic-astrology/heliacal | Udaya and asta windows for the six visible grahas, the calculation behind Guru Asta and Shukra Asta |
655+
| `<roxy-gochara-table>` | Vedic | POST /vedic-astrology/transit | Vedic gochara with aspects to the natal chart and the Gochara Kaksha reading drawn as a position within the sign |
656+
| `<roxy-bhava-bala-table>` | Vedic | POST /vedic-astrology/bhava-bala | House strength in rupas and virupas, ranked, with Bhavadhipati, Dig and Drishti Bala shown as proportions of the total |
657+
| `<roxy-bhav-chalit-table>` | Vedic | POST /vedic-astrology/bhav-chalit | The Chalit chart against the Rashi chart, leading with how many grahas move and which, plus the unequal bhava spans |
655658
| `<roxy-upagraha-table>` | Vedic | POST /vedic-astrology/upagraha | Time-based and Sun-based upagrahas with rashi, degree, longitude and nakshatra |
656659
| `<roxy-chara-karakas>` | Vedic | POST /vedic-astrology/chara-karakas | Karaka offices in rank order with graha, degree, scheme, and what each is read for |
657660
| `<roxy-arudha-padas>` | Vedic | POST /vedic-astrology/arudha | Twelve padas with bhava, lord, pada rashi, house from Lagna, and the classical exception marked |

apps/docs/components-manifest.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,50 @@ window.ROXY_UI_DEMOS = [
503503
seoLine: 'Heliacal rising and setting: the Guru Asta and Shukra Asta windows',
504504
sdkCall: ` const { data } = await roxy.vedicAstrology.getHeliacalVisibility({
505505
body: { date: '${PERSON1.date}', latitude: ${PERSON1.latitude}, longitude: ${PERSON1.longitude}, timezone: ${PERSON1.timezone} },
506+
});`,
507+
}),
508+
entry({
509+
id: 'gochara',
510+
tag: 'roxy-gochara-table',
511+
seoLine: 'Vedic gochara transits with the Ashtakavarga kaksha verdict',
512+
sdkCall: ` const { data } = await roxy.vedicAstrology.calculateTransit({
513+
body: {
514+
birthDate: '${PERSON1.date}',
515+
birthTime: '${PERSON1.time}',
516+
transitDate: '2026-02-03',
517+
transitTime: '12:00:00',
518+
latitude: ${PERSON1.latitude},
519+
longitude: ${PERSON1.longitude},
520+
timezone: '${PERSON1.timezone}',
521+
},
522+
});`,
523+
}),
524+
entry({
525+
id: 'bhava-bala',
526+
tag: 'roxy-bhava-bala-table',
527+
seoLine: 'Bhava Bala: the twelve houses ranked by classical strength',
528+
sdkCall: ` const { data } = await roxy.vedicAstrology.calculateBhavaBala({
529+
body: {
530+
date: '${PERSON1.date}',
531+
time: '${PERSON1.time}',
532+
latitude: ${PERSON1.latitude},
533+
longitude: ${PERSON1.longitude},
534+
timezone: '${PERSON1.timezone}',
535+
},
536+
});`,
537+
}),
538+
entry({
539+
id: 'bhav-chalit',
540+
tag: 'roxy-bhav-chalit-table',
541+
seoLine: 'Bhav Chalit: which grahas change house on the real cusps',
542+
sdkCall: ` const { data } = await roxy.vedicAstrology.calculateBhavChalit({
543+
body: {
544+
date: '${PERSON1.date}',
545+
time: '${PERSON1.time}',
546+
latitude: ${PERSON1.latitude},
547+
longitude: ${PERSON1.longitude},
548+
timezone: '${PERSON1.timezone}',
549+
},
506550
});`,
507551
}),
508552
entry({
@@ -540,8 +584,12 @@ window.ROXY_UI_DEMOS = [
540584
tag: 'roxy-yoga-list',
541585
heading: 'Yoga detection',
542586
seoLine: 'Yoga detection with present, outranked and absent verdicts',
587+
// The only card not on PERSON1: the outranked verdict needs a chart where a
588+
// stronger family silences a yoga that did match its rule. Keep this date in
589+
// step with the yoga-detect request in scripts/refresh-samples.ts, or the
590+
// snippet stops producing the result beside it.
543591
sdkCall: ` const { data } = await roxy.vedicAstrology.detectYogas({
544-
body: ${JSON.stringify({ date: PERSON1.date, time: PERSON1.time, latitude: PERSON1.latitude, longitude: PERSON1.longitude }, null, 2).replace(/\n/g, '\n ')},
592+
body: ${JSON.stringify({ date: '1941-04-26', time: PERSON1.time, latitude: PERSON1.latitude, longitude: PERSON1.longitude }, null, 2).replace(/\n/g, '\n ')},
545593
});`,
546594
}),
547595
entry({
26 KB
Loading

apps/docs/manifest.js

Lines changed: 82 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)