Files
astrolabe/docs/spec
oleh af9ee1e4c0 Add aggregation, binning, granularity, sort, and stacking to the Chart Builder
- Per-channel transforms: aggregate (sum/mean/median/min/max), quantitative
  bin, and temporal timeUnit granularity; bin and aggregate are mutually
  exclusive. A field-less "Count of records" measure (Voyager's count(*)).
- Chart-level sort (rank a categorical axis by its measure) and stacking
  (zero / 100% normalize), each shown only when it applies.
- Field type is a fixed N|O|Q|T segmented control with the column's invalid
  types disabled; SegmentedControl gains APG-correct disabled options.
- A crowded-category-axis warning (a raw measure drawing one mark per row over
  a large dataset) and a disabled-Create hint (says why it's disabled).
- Drop the Create success toast — the new snippet is immediately visible.
- Docs: spec §06, research-doc §8 backlog (incl. the cardinality/extent
  profiling TODO), architecture 01 (stable-selector rule) and 05 (builder-local
  preview), and a profiling breadcrumb.
2026-06-06 18:04:24 +03:00
..

Astrolabe — Product Specification

A UX/behavioral specification of Astrolabe, a browser-based snippet manager for Vega-Lite visualizations. It describes what the app does from the user's perspective so it can be recreated on any web/HTML/TS stack.

How to read this spec

  • Start with 00 · Product Overview for orientation and the glossary.
  • Each subsequent file is one feature area and can be read on its own; they cross-reference each other by title.
  • Every section describes intended behavior plus testable acceptance points ("The user can…", "When X, the system…").

What this spec deliberately omits

  • Implementation. No frameworks, libraries, languages, storage technologies, or code architecture are prescribed. Storage is described behaviorally (e.g. "persists locally across sessions", capacity tiers), not by naming a technology.
  • Visual design. Structural layout (panes, regions, modal vs inline, where controls live) is specified; concrete styling, colors, and the app's visual aesthetic are left to the implementer.
  • Domain exception. Vega-Lite and its vocabulary (specs, marks, encoding channels, field types) and data-format names (JSON, CSV, TSV, TopoJSON) are named — they are the product domain, not implementation choices.

Contents

# Section
00 Product Overview
01 Application Shell & Navigation
02 Snippet Library
03 Spec Editor & Draft/Published Workflow
04 Live Preview
05 Datasets
06 Chart Builder
07 Settings
08 Import & Export
09 Data Model & Persistence
10 Non-Functional Requirements