Skip to content

Repository files navigation

Libration

Libration is a longitude-first world time instrument.

It treats the world as a continuous 360° spatial structure rather than a set of political zones: one authoritative UTC instant is resolved per frame, the globe is presented as an equirectangular strip, and civil time is read against that strip through a selected reference frame. Political time zones are shown, but they are not the structural basis of the display.

Libration application screenshot Libration application screenshot Libration application screenshot

What it does

The window is a single canvas with two parts.

Screen-space chrome across the top is the instrument: 24 fixed 15° structural longitude columns, a NATO structural-zone letter row, a tick tape, and a row of circular hour markers that slides continuously with civil time against an anchored read point. A readout runs along the bottom.

Projection-space scene below it is the world: a selectable base map with eleven curated substrate families — natural-colour, topographic, political, geological, bathymetric, land cover, climate, population — three of them month-aware, plus overlays for a graticule, city pins, the solar analemma, and subsolar and sublunar markers.

Over all of it sits planetary illumination: day and night, continuous twilight with atmospheric tint, moonlight varying with lunar phase and altitude, and emissive human-made night lights, all composed upstream into a single raster. Polar behaviour follows real solar geometry, so midnight sun and polar night simply happen.

Three live data feeds can be enabled — cloud and infrared imagery, earthquakes, and the ISS ground track — each with an offline fixture fallback, and none of them touching the render path.

Configuration is a six-tab panel toggled with the C key, persisted to browser storage as you change it.

Platform posture

Libration currently runs as a browser-first single-page application: React, TypeScript, Vite, Canvas 2D, and browser localStorage.

A configured Tauri 2 shell is present in src-tauri/ for desktop packaging and integration, but it is not currently load-bearing — no application code imports Tauri APIs, and the application behaves identically in a plain browser. Whether the shell becomes load-bearing is an open question, not a settled one. See ADR 0006.

The application works fully offline. Maps, fonts, and fallback data are bundled.

Running it

npm install
npm run dev

The dev server runs at http://localhost:1420 on a fixed port. Open it in a browser; no Rust toolchain is needed.

Press C to open the configuration panel, Escape to close it.

Verifying it

npm test           # Vitest suite
npm run build      # tsc type-check, then production build

Tests are colocated with the modules they cover. Because rendering intent is a declarative RenderPlan, most visual geometry is verified at plan level rather than against pixels.

Asset tooling

npm run maps:prep -- --help    # onboard a curated base-map family
npm run fonts:prep             # regenerate the bundled font manifest

Documentation

Document Owns
ARCHITECTURE.md Durable boundaries and invariants
docs/IMPLEMENTATION.md How the current code actually works
docs/STATE.md Current development state and next action
docs/ROADMAP.md Approved future direction
docs/WORKFLOW.md How work items are executed
docs/VISUAL_VERIFICATION.md Cursor-native visual verification
docs/decisions/ Why the durable choices were made
docs/PROJECT_STRATEGY.md Product thesis and design principles
docs/FUTURE_FEATURES.md Speculative and future ideas
docs/maps/MAP_ASSET_SOURCES.md Asset provenance, licensing, processing
docs/maps/MAP_ASSET_STRATEGY.md Map curation and onboarding policy
docs/specs/scene/dynamic-data-lifecycle.md Dynamic-data contract
AGENTS.md Entry contract for AI coding agents
docs/history/ Archived planning and execution records

Reading order for someone new: this file, then ARCHITECTURE.md, then docs/IMPLEMENTATION.md. For current work: AGENTS.md, then docs/STATE.md. For visual changes: docs/VISUAL_VERIFICATION.md.

Licensing

Libration is licensed under the GNU Affero General Public License v3.0.

The AGPL preserves the freedom to inspect, study, modify, share, and benefit from improvements to the software, including when the software is used over a network.

Libration is independently developed and is not affiliated with any existing commercial time-map product.

About

Libration is a canonical reference implementation of a longitude-first world time visualization system, featuring a layered architecture, renderer-agnostic design, and high-precision temporal instrumentation.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages