Interactive storytelling visualization of satellites and space missions, built with React, D3, and Deck.gl. Use the navigation buttons to explore data across three chapters:
- Satellite Catalog (SATCAT): Timeline and waffle chart views of all launched satellites. Data source: Dr. T.S. Kelso's CelesTrak.
- Satellite Use: Breakdown of active satellites by user category. Data source: Union of Concerned Scientists.
- Space Rides: Historical overview of human spaceflights. Data source: Jonathan's Space Pages.
A live version should be deployed via GitHub Pages, but is not currently working:
https://marianaviro.github.io/space-madness/
- Node.js v14 or higher
- npm (v6+) or yarn
# Clone the repo
git clone https://github.com/marianaviro/space-madness.git
cd space-madness
# Install dependencies
npm install
# or
yarn install# Start the Vite dev server
npm run dev
# or
yarn devOpen your browser at http://localhost:5173 to see the app.
# Build the static site\ npm run build
# Deploy to GitHub Pages\ npm run deployThis project uses the gh-pages package to publish the dist/ folder to the
gh-pages branch. However, it is not yet working.
space-madness/
├─ public/ # Index.html and static assets
├─ src/
│ ├─ assets/ # SVG icons, icon atlas, and data
│ ├─ components/ # React components
│ ├─ utils/ # Helpers for data loading, processing, and layout
│ │ ├─ data-utils.jsx
│ │ ├─ chart-canvas-utils.jsx
│ │ └─ slides-content.jsx
│ ├─ App.jsx # App root
│ ├─ main.jsx # React entry point
│ └─ index.css # Global styles
├─ package.json # npm scripts and dependencies
├─ vite.config.js # Vite configuration
└─ README.md # This file
- Slides Definition:
slides-content.jsxdefines each slide’s data source, type (timelineorwaffle), and options (filters, binning, groupBy). - Data Loading:
data-utils.jsxloads CSV with D3, applies filtering, mapping, and optional binning by groups of 100. - Layout:
chart-canvas-utils.jsxprepares positions and scales for both timeline and waffle layouts. - Rendering:
- Timeline uses HTML Canvas to draw axes and satellites.
- Waffle uses Deck.gl
IconLayerfor GPU‑accelerated icon grids with hover interactivity.
- Navigation:
NavButtons.jsxand keyboard arrows callsetProgressto move between steps, triggering data reload.
This project is licensed under the MIT License.