Live website version: https://neosynth.net/posts/starchart
Starchart is a static, client-side pulsar map generator inspired by the map on the Pioneer plaque and Voyager Golden Record cover. It renders maps from Sol or curated nearby stars, imports custom star and pulsar catalogues, and can export such maps in SVG format. The application has no backend, CDN dependency, or runtime catalogue API; after the first successful load, a subpath-scoped service worker supports offline use.
This application makes use of real scientific data (both modern and historical) and attempts to faithfully reconstruct the original pulsar map rendering methodology proposed by Sagan, Sagan & Drake. For more information on the science referenced in this application, see docs/data-sources.md.
Disclaimer: Starchart is a creative art project, not a navigation instrument. The developers of the application take no responsibility if you get lost in deep space while using this tool. You have been warned.
- Voyager-inspired default using fourteen frozen historical pulsar inscriptions
- Graphical binary period marks: perpendicular strokes for one, ray-parallel dashes for zero
- Historical symmetric engraving, intended signed-z, and hidden z-tick modes
- Galactic-center direction, planar distance-scale and zero-z endpoint reference
- Historical map-derived archive geometry separated from modern computed geometry
- Preview-only zoom and drag pan with deterministic camera-free exports
- Independent map-size, z-crossbar and proportional binary-inscription controls
- Computed maps from curated stellar components
- Complete PSRCAT 2.8.1 browser catalogue: 4,393 pulsars
- Searchable pulsar selection with unavailable-distance records identified
- PSRCAT
.db, CSV/TSV, Starchart catalogue JSON, and project JSON import - Additive custom origins and pulsars
- Local autosave with quota-failure reporting
- Deterministic accessible SVG and project/catalogue export
- Responsive keyboard-usable Oxanium interface with a monospace map interior
- Installable, subpath-safe static PWA
Requires Node.js 22.12 or newer and pnpm 11.21. The pinned development version is in .nvmrc.
corepack enable
pnpm install --frozen-lockfile
pnpm test
pnpm build
pnpm devpnpm build:data verifies the vendored PSRCAT checksum, parses all 4,393 records, performs map-oriented derivations, and regenerates public/data/psrcat-v2.8.1.json. Missing measurements remain JSON null; they are never converted to zero.
The production build writes dist/build-manifest.json, hashes every deployed file, injects the exact hashed assets into the service-worker precache, and records source commit and dirty state.
A custom star needs name, ra_deg, dec_deg, and either distance_pc or parallax_mas:
name,ra_deg,dec_deg,distance_pc,reference_epoch,source
My Star,219.9,-60.83,4.25,J2000.0,Personal catalogueFor a pulsar, set kind=pulsar; period_seconds is optional but recommended. Imported files are limited to 5 MB and 1,000 custom records. Invalid or unsupported rows are skipped rather than assigned fabricated values.
See examples/catalogue.json and examples/project.json. Schema version 1 is explicit. Project files round-trip application state; catalogue files are additive.
Starchart accepts map-relevant records from the line-oriented PSRCAT .db format, up to 1,000 imported records. It implements coordinate, period/frequency, last-digit uncertainty, and preferred-distance behavior needed by the map. It does not emulate the PSRCAT CLI, expression evaluator, merge engine, or output modes.
docs/data-sources.md— citations, licences, hashes, origin records and update proceduredocs/architecture.md— model, geometry, imports, deterministic export, PWA and deploymentTHIRD_PARTY_NOTICES.md— redistributed-data notices- In-app
sources.html— deployed citations, licences and limitations
Project data remain in local storage unless explicitly exported to a local file. No project data is sent back to the server hosting the application from your local machine.
Original Starchart code is MIT licensed. Bundled datasets retain separate terms and attribution. See public/licenses/, THIRD_PARTY_NOTICES.md, and docs/data-sources.md.
From a clean reviewed commit:
pnpm build
pnpm deploy:neosynth -- /path/to/neosynth-ariseThe deployment command verifies every build hash and rejects stale or dirty output. It builds and validates a sibling temporary directory, then performs a rollback-safe swap into arise-source/posts/starchart/. This operates on a source checkout rather than a live serving directory. Vite's index.html becomes Arise's passthrough.html; Arise metadata and build provenance are generated alongside it. The neosynth copy is generated output; edit this repository instead.
The same dist/ can later be hosted at any static subpath or independent domain.