mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 10:12:34 +00:00
61 lines
5.7 KiB
Markdown
61 lines
5.7 KiB
Markdown
# 00 · Product Overview
|
|
|
|
This document set is a UX/behavioral specification for **Astrolabe**, a browser-based snippet manager for [Vega-Lite](https://vega.github.io/vega-lite/) visualizations. It describes _what the app does_ from the user's perspective — its capabilities, workflows, and structural layout — so the app can be recreated on any web/HTML/TS stack. It deliberately avoids prescribing _how_ anything is built: no frameworks, libraries, storage technologies, code structure, or concrete visual styling are mandated. Implementers are free to choose those.
|
|
|
|
## What Astrolabe Is
|
|
|
|
Astrolabe is a local-first tool for authoring, organizing, and previewing Vega-Lite charts. A user keeps a personal library of **snippets** (saved chart specifications), edits each one as JSON with live validation, and sees the result render in real time beside the editor. Reusable **datasets** can be stored once and referenced by many snippets. Everything lives in the user's browser — there is no account, no server, and no network dependency after first load.
|
|
|
|
## Who It Is For
|
|
|
|
People who work with Vega-Lite directly and want a fast, private workspace to draft, iterate on, and keep many visualizations: data practitioners, analysts, educators, and chart authors. Familiarity with Vega-Lite's JSON spec format is assumed; the app does not abstract Vega-Lite away (though the _Chart Builder_ offers a no-JSON starting point).
|
|
|
|
## Core Value
|
|
|
|
- **Iterate quickly** — edit JSON and watch the chart update live, with schema-aware assistance and instant error feedback.
|
|
- **Stay organized** — a searchable, sortable library of named, annotated snippets.
|
|
- **Experiment safely** — a draft/published model lets users tinker without losing a known-good version.
|
|
- **Reuse data** — datasets stored once, referenced anywhere, in multiple formats and from inline data or remote URLs.
|
|
- **Own your data** — fully local, private, and offline-capable, with import/export for backup and transfer.
|
|
|
|
## Scope & Principles
|
|
|
|
- **Local-first** — all data is stored in the browser and survives reload; the app works fully offline and is installable as a standalone app.
|
|
- **Single-screen workspace** — a three-pane layout (library · editor · preview) plus modals for cross-cutting tools (datasets, chart builder, settings, help).
|
|
- **Vega-Lite native** — snippets _are_ Vega-Lite specs; the app validates, renders, and reasons about them as such.
|
|
- **Keyboard-friendly and shareable** — common actions have shortcuts, and the current location is reflected in a shareable URL.
|
|
|
|
## Non-Goals
|
|
|
|
- No user accounts, authentication, or cross-device sync (use _Import & Export_ to move data).
|
|
- No server-side storage, rendering, or processing.
|
|
- No collaboration or multi-user features.
|
|
- No general BI/dashboarding — a snippet is a single Vega-Lite visualization, not a composed report.
|
|
|
|
## Key Concepts (Glossary)
|
|
|
|
- **Snippet** — a saved Vega-Lite specification plus metadata (name, comment, timestamps, tags, dataset references). The primary user-authored entity. See _Snippet Library_ and _Data Model & Persistence_.
|
|
- **Spec** — the Vega-Lite JSON specification that defines one visualization.
|
|
- **Draft vs Published** — each snippet holds a stable **published** spec and an editable **draft**; edits affect only the draft until the user publishes. See _Spec Editor & Draft/Published Workflow_.
|
|
- **Dataset** — a named, reusable data source (JSON/CSV/TSV/TopoJSON; inline or URL) that snippets reference by name. See _Datasets_.
|
|
- **Dataset reference** — a Vega-Lite named-data reference, e.g. `{ "data": { "name": "MyDataset" } }`, linking a spec to a stored dataset.
|
|
- **Live preview** — the rendered chart, updated automatically as the spec changes. See _Live Preview_.
|
|
|
|
## How This Specification Is Organized
|
|
|
|
| # | Section | Covers |
|
|
| --- | -------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
| 00 | Product Overview | This document — purpose, scope, glossary. |
|
|
| 01 | Application Shell & Navigation | Layout, panes, header, modals, keyboard shortcuts, URL state, toasts, offline/installable. |
|
|
| 02 | Snippet Library | Browsing, search, sort, metadata, create/duplicate/delete, storage monitor. |
|
|
| 03 | Spec Editor & Draft/Published Workflow | Editing, auto-save, auto-render, draft/publish/revert, extract-to-dataset. |
|
|
| 04 | Live Preview | Rendering, reference resolution, fit modes, error display. |
|
|
| 05 | Datasets | Dataset manager, formats, sources, profiling, references, linking. |
|
|
| 06 | Chart Builder | Visual no-JSON chart composition from a dataset. |
|
|
| 07 | Settings | Appearance, editor, performance, and formatting preferences. |
|
|
| 08 | Import & Export | Backup/transfer file format, import normalization and merging. |
|
|
| 09 | Data Model & Persistence | Entity field definitions, storage tiers, relationships. |
|
|
| 10 | Non-Functional Requirements | Platform, performance, accessibility, reliability, privacy. |
|
|
|
|
Read 00 first for orientation, then any section independently. Sections cross-reference one another by title where behavior spans more than one area.
|