Interactive Pioneer-plaque-style pulsar map generator.
Astrolabe lets you pick an observer anywhere in the galaxy, select a pulsar set optimized for triangulation, and render the result as a clean SVG map in the visual language of the 1972 Pioneer plaque.
- Live site: https://astrolabe.bhanueso.dev
- Source: https://github.com/codeptor/astrolabe
- Select any observer from a curated local star catalogue.
- Resolve additional stars through CDS Sesame / SIMBAD fallback.
- Enter custom galactic or equatorial coordinates.
- Toggle between the computed map and the hand-matched 1972 plaque mode.
- Choose pulsars with GDOP, fastest, closest, longest, stable, or random selection strategies.
- Shift the epoch with a time slider to apply synthetic proper motion and pulsar spin-down.
- Export the current map as SVG, PNG, or print SVG with legend block.
- Share the exact current view through URL state or iframe embed code.
pnpm install
pnpm devOpen http://localhost:4321.
pnpm dev # start Astro dev server (Vite)
pnpm build # production build (static + serverless functions)
pnpm preview # serve the production build locally
pnpm test # run vitest
pnpm test:watch # watch mode
pnpm update-catalogue # download and reprocess the ATNF pulsar catalogue- Search for a star in the header, or open
coordsand enter a custom observer position. - Adjust the pulsar count and selection algorithm.
- Use the epoch slider to move backward or forward in time.
- Hover a pulsar line to inspect it, click to lock it, click the footer tooltip to copy its data.
- Export or share the current view.
/focus star searchRrandom curated starShift+Rrandom galactic pointKcustom coordinatesMtoggle 1972 modeAcycle algorithmTcycle themeStoggle audioGtoggle ringsLtoggle pulsar list[/]decrease or increase pulsar count,/.move epoch by 10 kyr</>move epoch by 1 Myr0reset epochTab/Shift+Tabcycle locked pulsars?open helpEscclose panels or reset
- Astro v6 (static output + Vercel adapter)
- React 19 as a
client:loadisland via@astrojs/react - Tailwind CSS v4 via
@tailwindcss/vite @vercel/ogfor OG image rendering- Vitest
- pnpm
All plaque computation happens client-side. The only server paths are
/api/star-resolve (SIMBAD-backed lookup) and /og.png (runtime OG image),
both deployed as Vercel serverless functions.
src/pages/index.astro: static shell mounting<App client:load>src/layouts/RootLayout.astro:<head>metadata, fonts, inline theme scriptsrc/components/App.tsx: application root — URL state, controls, data loadingsrc/components/plaque.tsx: SVG plaque renderersrc/components/ThemeScript.astro: no-flash theme loadersrc/lib/coordinates.ts: galactic and Cartesian coordinate transformssrc/lib/pulsar-selection.ts: pulsar selection strategies, including GDOPsrc/lib/binary-encoding.ts: pulsar period to binary tick encodingsrc/lib/proper-motion.ts: synthetic time-machine drift and spin evolutionsrc/lib/pioneer-original.ts: fixed 1972 plaque reconstructionsrc/lib/theme.ts: vanilla theme hooksrc/pages/api/star-resolve.ts: SIMBAD-backed star lookup (serverless)src/pages/og.png.ts: runtime OG image via@vercel/ogscripts/process-catalogue.ts: ATNF tarball topublic/data/pulsars.json
public/data/pulsars.json: 3,924 processed pulsars from ATNF v2.7.0public/data/stars.json: 97 curated stars for the picker
Source catalogue: https://www.atnf.csiro.au/research/pulsar/psrcat/
pnpm update-catalogue downloads the ATNF tarball, extracts psrcat.db,
parses pulsar periods and distance estimates, converts RA/Dec to galactic
coordinates, and writes the processed JSON used by the app.
Distance preference in the processor:
DIST1DIST_DMPXconverted to kpc
The app serializes shareable state into query params:
mode:1972or computed modefrom: observer (starorcoord:l=...,b=...,d=...)p: locked pulsarn: pulsar countrings: rings toggletheme: active themealgo: selection algorithme: epoch offset in years
Current repo verification surface:
pnpm test
pnpm buildAt the time of writing, both pass.
- SIMBAD fallback only returns stars with a usable parallax-derived distance.
- The time-machine motion is synthetic and deterministic, not measured proper motion from ATNF.
- The 1972 mode prioritizes visual fidelity to the original plaque over strict modern astrophysical accuracy.
MIT