πŸ•‰ PanchangamHindu Almanac
Charon Universe
Almanac of Moons & Meridians
Saved
Local now Europe/Oslo
--:--:-- β€”
ShukravaraΒ·Vaishakha Shukla PratipadaΒ·Samvat 2083 Friday, 8 May 2026 Β· Singapore
Shukla Paksha Uttarayana Grishma Ritu

Day & Night Singapore Β· UTC+8

πŸŒ… πŸŒ‡ β˜€ πŸŒ– πŸŒ’
πŸŒ…
Sunrise
06:13
πŸŒ‡
Sunset
19:10
πŸŒ–
Moonrise
07:02
πŸŒ’
Moonset
19:48

Pancha Angas Five Limbs

TithiLunar day
Pratipada upto 09:42 next day
NakshatraAsterism
Krittika Β· Pada 3 upto 22:18
YogaSolar–lunar
Siddha upto 14:55
KaranaHalf-tithi
Bava upto 23:30
VaraWeekday
Shukravara Venus Β· Friday
PakshaLunar fortnight
Shukla Waxing moon

Rashi Signs

Chandra RashiVrishabha ♉
Surya RashiMesha β™ˆ
Nakshatra LordSun
πŸŒ’
Waxing Crescent
3% illuminated

Muhurtas Auspicious & Inauspicious Timings

Loading…
β€”

Grahas Planetary Positions Β· Sidereal

Special Yogas Today Auspicious combinations

Loading…

Lagna Chart North Indian Β· Diamond Style

1 2 3 4 5 6 7 8 9 10 11 12 Asc Karka 14Β°22β€² Ch Su Ve Meβ„ž Ma Ju Sa Ra Ke
Friday Β· 8 May 2026 Β· 06:13 Β· Singapore (1Β°17β€²N, 103Β°51β€²E)

Planet Positions Sidereal Β· Lahiri Ayanamsa

PlanetRashiDegreeState
Loading planetary positions…

Active Yogas

Gajakesari Budhaditya Malavya Shasha
May 2026 Β· Vaishakha
Festival Ekadashi / Vrat Today

Current Ghati & Pal Live since sunrise

34 Gh 22 Pal
1 Ghati β‰ˆ 24 minΒ·1 Pal β‰ˆ 24 sec
Live

Vedic Calendar Current cycle

Samvatsara60-year cycleKrodhi
AyanaSolar half-yearUttarayana
RituSeasonGrishma (Summer)
MasaLunar monthVaishakha
PakshaFortnightShukla (Waxing)
Vikram SamvatEra2083
Shaka SamvatEra1948

Gregorian ↔ Vedic Converter Date conversion

β†’
Vaishakha Shukla Pratipada Samvat 2083 Β· Shukravara

Conversion uses Amanta system with sunrise reckoning. Tithi at chosen date's sunrise.

Tithi Progress Pratipada

62% elapsed
Started 06:35 yest. Ends 09:42 next

Tithi length varies with the Moon's instantaneous angular speed relative to the Sun β€” from ~20 to 27 hours. Anchored at local sunrise.

System Architecture

End-to-end view of how a date + lat/lon request flows from the user, through the API gateway and compute layer, down to public-domain ephemeris sources, and back as a Panchang JSON document.

Request & Data FlowUser β†’ Frontend β†’ API β†’ Compute β†’ Sources

CLIENT Web App / PWA React Β· SW cache EDGE API Gateway REST Β· CDN Β· Auth COMPUTE Panchang Engine Tithi Β· Nakshatra Β· Yoga EPHEMERIS Swiss Ephemeris Sun / Moon Ξ» GET /panchang date,lat,lon JD, Ξ»_sun, Ξ»_moon CACHE Redis Β· 24h TTL check miss β†’ compute PUBLIC-DOMAIN DATA SOURCES NASA JPL Horizons Planet positions Β· cross-check USNO Sunrise / Sunset SPA algorithm Meeus Algorithms JD, Ξ”T, Ayanamsa Festival Rules JSON Regional Β· public-domain STORE PostgreSQL SEARCH Tantivy / OpenSearch DAILY CRON Β· 00:30 UTC Pre-warm next 30 days

Tech StackLayer by layer

Frontend
React 18 TypeScript Vite Service Worker
API
Node Β· Fastify OpenAPI 3.1 JWT Rate-limit
Compute
Python Β· FastAPI pyswisseph astropy NumPy
Storage
PostgreSQL 16 PostGIS Redis 7 S3 (ephemeris bins)
Search
OpenSearch Devanagari analyzer
Infra
Docker k8s / Fly.io GitHub Actions Cloudflare CDN

Component Treesrc/

apps/web/
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ Today.tsx          # Panchang dashboard
β”‚   β”œβ”€β”€ Detail.tsx         # Tithi / Nakshatra detail
β”‚   β”œβ”€β”€ Calendar.tsx       # Monthly festivals
β”‚   β”œβ”€β”€ Kundali.tsx        # Lagna chart
β”‚   └── Search.tsx
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ PanchaAngas.tsx     # 5-limbs card
β”‚   β”œβ”€β”€ DayArc.tsx          # Sun/moon arc SVG
β”‚   β”œβ”€β”€ MuhurtaGrid.tsx
β”‚   β”œβ”€β”€ PlanetStrip.tsx
β”‚   β”œβ”€β”€ NorthChart.tsx      # Diamond SVG
β”‚   └── FestivalCard.tsx
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ api.ts             # typed client
β”‚   β”œβ”€β”€ geo.ts             # geolocation + tz
β”‚   └── i18n.ts            # sa/hi/en/ta/te/ml
└── main.tsx

services/compute/
β”œβ”€β”€ engine.py          # orchestrator
β”œβ”€β”€ panchang/
β”‚   β”œβ”€β”€ tithi.py
β”‚   β”œβ”€β”€ nakshatra.py
β”‚   β”œβ”€β”€ yoga.py
β”‚   β”œβ”€β”€ karana.py
β”‚   └── muhurta.py
β”œβ”€β”€ astro/
β”‚   β”œβ”€β”€ swisseph_wrapper.py
β”‚   β”œβ”€β”€ sunrise.py       # USNO SPA
β”‚   └── ayanamsa.py      # Lahiri default
└── festivals/
    β”œβ”€β”€ rules.json
    └── resolver.py

Data Pipeline & Computation

Every value rendered in the Panchang tab is computed at request time from four open sources. No commercial almanac text is ingested β€” only longitudes, sunrise times, and public-domain rules.

Swiss Ephemeris
astro.com/swisseph Β· v2.10
Role
Primary source for Sun & Moon ecliptic longitudes, planetary positions, ayanamsa.
License
AGPL / Open-source mode
Access
pyswisseph binding Β· binary .se1 files on local disk
Cadence
Sub-millisecond at request time
Output
Ξ»_sun, Ξ»_moon (sidereal, Lahiri), planet longitudes & speeds
NASA JPL Horizons
ssd.jpl.nasa.gov/horizons
Role
Cross-validation of planetary positions; high-precision DE441 ephemeris reference.
License
U.S. Govt Β· Public domain
Access
REST API Β· batched nightly for next 30 days
Cadence
Nightly cron Β· cached
Output
RA/Dec β†’ ecliptic Ξ»/Ξ² Β· used to flag SE drift > 0.01Β°
USNO Sunrise/Sunset
aa.usno.navy.mil Β· SPA algorithm
Role
Local sunrise, sunset, twilight times β€” anchor for tithi/nakshatra at sunrise.
License
U.S. Govt Β· Public domain
Access
Re-implemented from published SPA paper (Reda & Andreas, NREL)
Cadence
Computed per request from lat/lon/date
Output
Sunrise, sunset, solar noon, civil twilight
Meeus Algorithms
Astronomical Algorithms Β· 1998
Role
Julian Date conversion, Ξ”T, Lahiri ayanamsa, lunar phase calculation.
License
Public-domain formulas
Access
Implemented inline in astro/meeus.py
Cadence
Inline at request time
Output
JD ↔ Gregorian, Ξ”T correction, ayanamsa offset

Computation RulesStandard open formulas

Tithi
⌊ (Ξ»_moon βˆ’ Ξ»_sun) mod 360 / 12 βŒ‹ + 1
1…30 Β· 1–15 Shukla, 16–30 Krishna
Nakshatra
⌊ Ξ»_moon / 13.3333 βŒ‹ + 1
27 asterisms Β· pada = (Ξ» mod 13.333) / 3.333
Yoga
⌊ (Ξ»_sun + Ξ»_moon) mod 360 / 13.3333 βŒ‹ + 1
27 yogas Β· sum-based solar–lunar
Karana
tithi Γ— 2 βˆ’ {0 if first half else 1}
60 half-tithi segments Β· 11 names cycled
Paksha
tithi ≀ 15 ? Shukla : Krishna
Waxing or waning fortnight
Rahu Kalam
day_length / 8 Β· weekday_offset
Standard weekday table Β· 7 fixed slots
Abhijit
solar_noon Β± 24 min
~48-min window centred on local noon
Amrit Kalam
f(nakshatra_pada, weekday)
From Vedic Nakshatra lookup table

engine.py Β· main loopPseudocode

def compute_panchang(date, lat, lon, tz): jd = meeus.jd_from_date(date, tz) sunrise = spa.sunrise(jd, lat, lon) # USNO SPA # Anchor: tithi at sunrise (Indian convention) jd_anchor = meeus.jd_from_datetime(sunrise) ayan = meeus.lahiri_ayanamsa(jd_anchor) # Swiss Ephemeris β€” sidereal longitudes lam_sun = swe.calc_ut(jd_anchor, swe.SUN)[0] - ayan lam_moon = swe.calc_ut(jd_anchor, swe.MOON)[0] - ayan tithi = int(((lam_moon - lam_sun) % 360) / 12) + 1 naksh = int(lam_moon / 13.3333) + 1 yoga = int(((lam_sun + lam_moon) % 360) / 13.3333) + 1 karana = karana_from_tithi(tithi, half=half_of_tithi(lam_sun, lam_moon)) # Festivals β€” pure rule resolver, no copyrighted text fests = festivals.resolve(tithi, naksh, masa, paksha, region) return PanchangDay(...)

Ingestion & CronDaily 00:30 UTC pre-warm

1
Trigger
k8s CronJob fires
00:30 UTC daily
β†’
2
Fetch JPL
Pull next 30 days planetary positions
~12s Β· 9 bodies
β†’
3
Compute
SE + Meeus run for top-50 cities
~90s parallel
β†’
4
Validate
SE vs JPL diff < 0.01Β° gate
< 1s Β· alert on fail
5
Cache warm
Write to Redis Β· 24h TTL keyed by date+lat+lon bucket
~5s
β†’
6
Index
OpenSearch festivals + tithi/nakshatra fields refreshed
~3s
β†’
7
Notify
Push Ekadashi / festival reminders to subscribed users
batched

Database Schema

PostgreSQL 16 β€” normalised reference tables for tithi/nakshatra/yoga/karana, a wide panchang_day fact table for fast dashboard reads, and a rules-based festival_rules resolver. PostGIS for location.

API & Sample Responses

REST Β· OpenAPI 3.1 Β· all timestamps ISO-8601 in UTC with local-offset preserved. Click any endpoint to expand its parameter table and a sample JSON response.

Style Guide

Traditional Panchangam palette grounded in saffron, maroon, and gold β€” softened on a parchment background. Cormorant Garamond for headings, DM Sans for UI, JetBrains Mono for numerals, Tiro Devanagari for vernacular text.

Color TokensBrand & semantic

Saffron
primary#FF9933
Maroon
heading#800000
Gold
accent#FFD700
Indigo
planet#4B0082
Emerald
auspicious#228B22
Orange
today#FF6600
Parchment
canvas#FFF8F0
Cream
surface#FBEFE0
Ink
text#2A1A0A
Rule
border#E8D8BF

TypographyRoles & usage

Display Β· Cormorant Garamond
Shukravara Β· Vaishakha Shukla Pratipada
Cormorant Garamond Β· 600 Β· 38px Β· letter-spacing 0.2px
Heading Β· Cormorant Garamond
Pancha Angas Β· Five Limbs
Krittika Β· Pada 3 Β· upto 22:18
22px display Β· 17px subhead Β· 14px body
Body Β· DM Sans
Akshaya Tritiya brings unexpected gains. Begin new ventures before noon. Donate yellow rice and turmeric at a Vishnu shrine.
DM Sans Β· 400/500 Β· 14px Β· line-height 1.55
Numerals Β· JetBrains Mono
06:13 Β· 19:10 Β· 11:48
JetBrains Mono Β· 500 Β· tabular numerals for time
Vernacular Β· Tiro Devanagari Hindi
ΰ€Άΰ₯ΰ€•ΰ₯ΰ€°ΰ€΅ΰ€Ύΰ€° Β· ΰ€΅ΰ₯ˆΰ€Άΰ€Ύΰ€– ΰ€Άΰ₯ΰ€•ΰ₯ΰ€² ΰ€ͺΰ₯ΰ€°ΰ€€ΰ€Ώΰ€ͺΰ€¦ΰ€Ύ
Tiro Devanagari Hindi Β· for Sanskrit / Hindi text
Caption Β· DM Sans uppercase
Shukla Paksha Β· Uttarayana Β· Grishma Ritu
DM Sans Β· 600 Β· 11px Β· tracking 1.2px

ComponentsCore building blocks

Badges
Shukla Paksha Uttarayana Grishma Ritu
Pills
Yoga chips
Sarvartha Siddhi Amrit Siddhi Gajakesari
Status dots
Auspicious Inauspicious
Toggle
Spacing
4 8 12 16 24 32
Radius
4 8 10 pill
πŸ•‰ Sarve bhavantu sukhinah Β· May all beings be happy