Skip to content

Repository files navigation

AstroMilan by Vardhan. Your birth. Your sky. Your story.

Project checks   Created by Vardhan

Take a look   ·   Run locally   ·   The calculations   ·   Development

AstroMilan is a Jyotisha app by Vardhan. It brings birth charts, compatibility and the daily panchang into one place, with an interface that gives the sky a little room to breathe.

The visual side is a rotating celestial sphere, warm gold details and quiet scroll transitions. Underneath, the chart values come from astronomical calculations. You can inspect the inputs, save a report and return to it in another language.

Tour

AstroMilan home page with an interactive celestial sphere and the daily panchang

The actual application. The sphere is an artistic illustration; chart values come from the calculation engine.

01   Your birth chart

Rasi and Navamsa charts, nine grahas, nakshatra, pada and Vimshottari periods. Supply a birth time and place, or enter coordinates and a timezone directly.

02   Compatibility

Eight Ashtakoota scores with the individual points visible. Rasi follows the selected nakshatra and pada. Share a comparison through a link.

03   The daily panchang

Tithi, nakshatra, yoga, karana, sunrise, sunset and traditional time periods for the selected date and place.

04   The sky now

A diagram of current zodiac longitudes and a transit table. With a birth chart loaded, compare the current placements to the natal Moon sign.

05   Four languages

English, తెలుగు, Telugu Latin and हिन्दी. Labels, dropdowns, dates and calculated results change language together. Stored inputs keep the same meaning.

06   A quieter experience

A silent breathing timer, light and dark themes, keyboard controls and reduced motion support. Pause the animation whenever you want.

A calculated birth report with planetary positions and D1 and D9 charts The mobile birth form in Telugu Latin, including translated month choices
Inspect a calculated reportTelugu Latin on mobile

Reports stay in your browser. Save a profile, export the numerical data as JSON, or use the browser’s Print / Save PDF option. Deleting a report clears its saved entry, and Undo is available immediately afterward. The screenshots use example inputs.

Setup

Use Node.js 22.12 or later.

git clone https://github.com/grammerpro/AstroMilan.git
cd AstroMilan
npm ci
npm run dev

Open http://localhost:3000.

Birth charts, matching, panchang and transits work without an API key. The optional Guru and palm image descriptions use Gemini. To enable them, copy .env.example to .env.local and set GEMINI_API_KEY.

The key stays on the server. An image is sent to the provider only when you choose to analyze it. If the provider is unavailable, the app shows an error instead of a sample reading.

For a production build:

npm run build
npm start

PORT defaults to 3000. This repository contains the application and its server; it is not a static GitHub Pages site.

Vercel

Import this repository with the project root set to .. The included vercel.json builds the Vite frontend and routes /api/* to the Express function in api/index.ts. It also includes Astronomy Engine in the function bundle. Deploy both parts together; uploading only dist leaves the calculation routes unavailable.

No environment variables are needed for birth charts, matching, panchang or transits. To enable the optional explanations, add GEMINI_API_KEY in the Vercel project settings and redeploy. Never prefix this key with VITE_.

Calculations

AstroMilan uses Astronomy Engine, an approximate Lahiri ayanamsa, mean lunar nodes and houses based on complete zodiac signs. D1 and D9 placements are derived from the calculated longitudes. Vimshottari periods use a year of 365.25 days.

Seven reference cases from 1900 to 2100 are checked against independently generated Swiss Ephemeris values. The largest observed longitude difference in those cases is 0.02208°, within the test tolerance of 0.03°. That is a result for the sampled cases, not a guarantee for every possible input.

Astrological interpretations and matching rules belong to a tradition. They are not verified predictions of health, marriage outcomes or future events. Numerical chart results are kept separate from optional AI explanations.

Read the calculation methods, reference sources and limitations.

Development

Interface: React 19, TypeScript, Tailwind CSS, Motion and a canvas sphere.

Server: Express, Astronomy Engine and the optional Gemini integration.

Tooling: Vite, esbuild and Playwright.

npm run lint
npm run test:i18n
npm run test:vedic
npm run test:api
npm run test:ui
npm run build

Browser tests use Google Chrome locally. CI installs Chromium and runs the same desktop and mobile checks. The suite covers translations, calculation inputs, report deletion after a reload, shared links and unavailable AI services.

Where things live
src/App.tsxLanding page, themes and navigation
src/componentsCharts, matching, panchang and the other tools
src/i18nThe shared catalog for all four languages
vedic.tsAstronomy and traditional scoring rules
backend.tsValidation, API routes and optional provider calls
server.ts / api/index.tsLocal server and Vercel entry points
testsReference fixtures and browser regressions
docsCalculation notes and screenshots

Found something wrong? Open an issue with the language, screen and steps needed to reproduce it. Use example birth details in public reports.

Built by Vardhan · AstroMilan

About

Birth charts, compatibility and panchang in four languages. Built by Vardhan.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages