# 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.
