Skip to content

About

Explore astronomical objects and scale through interactive 2D maps, 3D views, and visual size comparisons.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AstroGuide logo

AstroGuide

Explore astronomical objects and scale through interactive 3D, 2D, and comparison views.

Website · Live demo · Documentation

MIT license Account-free Static application

AstroGuide interactive 3D exploration

Overview

AstroGuide turns abstract astronomical objects and orders of magnitude into something people can explore. Its catalog of 39 celestial objects is available through a navigable 3D scene, an interactive 2D map, and a visual size comparison.

The application is static, English-first with maintained French, Spanish, and German locales, account-free, and runs without a backend, analytics, cookies, or remote API calls.

Product preview

The catalog, labels, and views below come from the isolated public demo. Screenshots use the English interface with the demo intro dialog closed.

Interactive 2D map Visual comparison
A zoomable, pannable overview of the same catalog for mouse and touch input. Compare approximate diameters and extents while filtering the objects that matter.
AstroGuide 2D map with Saturn selected AstroGuide visual size comparison

Highlights

  • Searchable catalog of stars, planets, galaxies, black holes, and larger systems.
  • Interactive 3D view with textured bodies, animated orbits, camera controls, and fallback materials.
  • Zoomable and pannable 2D map for mouse and touch input.
  • Size-comparison view with filters and selectable objects.
  • Responsive layouts for desktop, tablet, portrait mobile, and low-height landscape screens.
  • WebGL rendering pauses when the 3D view is hidden.
  • No account, backend, personal-data collection, or API key.

Quick start

Docker Compose

The tracked Compose file is intentionally small and pulls the published GHCR image:

services:
  astroguide:
    image: ghcr.io/lucas-lepajollec/astroguide:latest
    ports:
      - "2502:2502"
    restart: unless-stopped
git clone https://github.com/lucas-lepajollec/AstroGuide.git
cd AstroGuide
docker compose pull
docker compose up -d
docker compose ps

Open http://<server-ip>:2502 from your LAN, or http://localhost:2502 on the Docker host.

AstroGuide uses port 2502 both on the Docker host and inside the container, so the mapping stays easy to recognize. To build the current checkout instead, run docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build.

For a controlled update, record the current image digest with docker image inspect, pull, recreate, and verify the health status. To roll back, change the Compose image: line to a previous sha-<full-commit> or version tag and recreate the service. docker compose down removes the container and network; AstroGuide has no persistent server-side data.

Local development

Requirements: Node.js 22.12 or newer within the Node.js 22 line, and npm 10 or newer.

git clone https://github.com/lucas-lepajollec/AstroGuide.git
cd AstroGuide
npm ci --include=optional
npm run dev

Open http://127.0.0.1:2499. Use npm run dev:lan only for deliberate testing on a trusted network.

Configuration and persistence

AstroGuide has no server-side data, database, account, runtime secret, or required environment variable. The catalog, textures, and application are part of the static build. A page reload restores the initial interface state.

Catalog changes belong in src/data/ and must be reviewed like source code rather than edited as runtime configuration.

Security, privacy, and limitations

Important

AstroGuide is an educational visualization, not a precision astronomical simulator.

  • Rendered positions, visual distances, orbits, and 3D sizes are illustrative.
  • Text values are rounded; some astrophysical quantities remain uncertain.
  • The comparison view applies a minimum visible size.
  • Distant black-hole masses depend on models and estimates; Phoenix A is deliberately presented as a highly uncertain candidate.
  • WebGL capability and device performance affect the 3D experience.
  • No cookie, local storage, analytics, API key, or remote data service is used.

Current orders of magnitude draw primarily from NASA Solar System Exploration, the Event Horizon Telescope results for M87*, NASA material about Betelgeuse, and Hubble/Gaia work on the Milky Way–Andromeda future.

Contributions that change the catalog must cite a scientific or institutional source and preserve coherent units.

Architecture

Layer Technology
Interface React 19, TypeScript, Tailwind CSS 4, Motion
Visualization Three.js, React Three Fiber, Drei
State Zustand
Tooling Vite 6, Vitest, ESLint
Deployment Static build or unprivileged Nginx container
src/components/   # 3D, 2D, comparison, and interface components
src/data/         # Celestial catalog and integrity tests
src/store/        # Zustand state and tests
public/textures/  # Bundled astronomical textures

Development and quality

npm run check
Command Purpose
npm run lint Run ESLint with zero warnings allowed.
npm run typecheck Validate TypeScript without emitting files.
npm run test Run the Vitest suite.
npm run build Create the production build.
npm run build:demo Build the isolated public-demo variant.

Public demo

The public demo is the real static product with explicit demo onboarding, permanent labeling, reset control, and noindex directives. It adds no backend, external account, or fictional scientific dataset. See DEMO.md.

Documentation and community

About

Explore astronomical objects and scale through interactive 2D maps, 3D views, and visual size comparisons.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages