SkyMap is an interactive sky map that runs in any browser. It shows the sky at any date and time from 1500 to 2500 AD and any location on Earth. with 9K bright stars to magnitude ~6.5 on mobile, and more than 130K stars to magnitude 9 on desktop. SkyMap plots the 220 Messier and Caldwell deep sky objects on mobile devices, and also shows the complete NGC and IC catalogs, with more than 13K deep sky objects, on desktop browsers.
SkyMap renders stars, constellations (stick figures, boundaries, labels), deep sky objects, planets, the Milky Way, coordinate grids and reference lines in both dark and light themes. It uses a stereographic projection with four different reference frames (Horizon, Equatorial, Ecliptic, Galactic). The view is zoomable and dragable; objects can be selected by clicking, searching by name, or choosing from object lists. You can animate the view with a time step from seconds to years.
Within a few hundred years of the present, SkyMap shows planet positions to sub-arcminute accuracy using Jean Meeus's Astronomical Algorithms version of VSOP87 and ELP2000 for the Moon. Positions for the solar system's 24 major moons are computed with formulae from the Explanatory Supplement to the Astronomical Almanac and orbits from JPL's Planetary Satellite Mean Elements page. Computation includes corrections for Delta-T, light time, precession, nutation, and atmospheric refraction. SkyMap accurately simulates conjunctions, occultations, solar and lunar eclipses, and Jupter/Saturn moon shadow transits.
At startup, SkyMap downloads Minor Planet Center asteroids and comet files from southernstars.com daily, and caches them in browser local storage for offline use. This lets SkyMap show bright asteroids and comets to a similar level of precision as the planets.
SkyMap downloads orbits for the ~150 brightest satellites from Celestrak.org daily as well. It computes satellite positions using SGP4, and visual magnitudes with the McCants standard magnitude formula.
All code was generated by Claude Code - prompted, tweaked, heavily tested, and debugged by me (Tim DeBenedictis, timd@southernstars.com).
Open index.html in a browser. No build step or server required.
Or, clone this repo, and open index.html on your locally-cloned copy in a browser. Everything will work except getting your location from Wi-Fi. THis will fail when opening the HTML file from local storage; to fix that, start a local server:
python3 -m http.server 8080
Then browse to http://localhost:8080/index.html
The docs folder contains copies of the original material from which most of the code was generated. These are essentially "white papers" from various sources like CelesTrak, JPL, Jean Meeus, the Minor Planet Center, the US Naval Observatory, and a few lesser-known sources that have proven extremely valuable over the years for computational astronomy.
This project leans heavily on SSCore for its astronomical object databases. The JavaScript data files derived from these databases (stars.js, constellations.js, deepsky.js, cities.js, milkyway.js, etc.) are pre-generated and checked in. The Python scripts in data/ regenerate them from source catalogs:
cd data
python3 gen_stars.py brightest.csv 6.0 # -> stars.js
python3 gen_stars.py SKY2000.csv 8.0 # -> stars.js (extended catalog)
python3 gen_constellations.py # -> constellations.js
python3 gen_deepsky.py # -> deepsky.js
python3 gen_cities.py # -> cities.js
python3 gen_milkyway.py # -> milkyway.js
python3 gen_moondata.py # -> moons.js
python3 gen_nebulae.py # -> nebulae.js
python3 gen_vsop87.py # -> vsop87.js
Most scripts auto-download their source CSV files from SSCore if not already present. Move the generated .js files into the project root to update the app.
Unlicense — public domain.