No description
  • TypeScript 84.9%
  • JavaScript 5.4%
  • CSS 4.9%
  • HTML 3.5%
  • Shell 1.3%
Find a file
2026-09-25 21:59:25 +01:00
assets P3 closed + pre-production freeze documented (gates R2); icon (a constellation in the dim palette) + desktop launcher installed — the scaffold's last step 2026-09-25 19:28:26 +01:00
bin scaffold: Hono server frame (api/v1 + OpenAPI), client placeholder, launcher script 2026-09-24 17:29:28 +01:00
client P4 unit 3: edge labels authored in prose — a link's alias IS the label; alias(again prose) → label(canvas) at the layout seam; derived commits carry them spec-valid; map renders read-only 2026-09-25 20:22:51 +01:00
docs tester readiness: user manual + Linux install guide (agent factsheet included); real-data canvas out of the tree (history accepted) — round-trip gate kept with a synthetic 54/33 fixture, root *.canvas ignored; viewUrl gap parked 2026-09-25 21:16:30 +01:00
proto P1: canvas IO — JSON Canvas 1.0 read/write, atomic writes, spec validation; canvas API live 2026-09-24 18:49:46 +01:00
server tester readiness: user manual + Linux install guide (agent factsheet included); real-data canvas out of the tree (history accepted) — round-trip gate kept with a synthetic 54/33 fixture, root *.canvas ignored; viewUrl gap parked 2026-09-25 21:16:30 +01:00
.gitignore tester readiness: user manual + Linux install guide (agent factsheet included); real-data canvas out of the tree (history accepted) — round-trip gate kept with a synthetic 54/33 fixture, root *.canvas ignored; viewUrl gap parked 2026-09-25 21:16:30 +01:00
bun.lock P3: gravity layout (d3-force, deterministic) on the layout seam + view-side switch; whiteboard interaction scheme (drag=marquee, space/middle=pan) 2026-09-24 21:01:45 +01:00
LICENSE license: MIT 2026-09-24 18:12:22 +01:00
package.json P3: React Flow confirmation test — client build via bun, custom nodes, SSE lerp, fps instrument; skeleton moved to /skeleton 2026-09-24 20:36:44 +01:00
PROPOSAL.md state transfer salvage: mindmap starburst's field verdict banked ('much better now' — lived only in session summaries); freeze's running verdict clocks named (mindmap keep/cut, two-way in habit) 2026-09-25 21:59:25 +01:00
README.md tester readiness: user manual + Linux install guide (agent factsheet included); real-data canvas out of the tree (history accepted) — round-trip gate kept with a synthetic 54/33 fixture, root *.canvas ignored; viewUrl gap parked 2026-09-25 21:16:30 +01:00

Constelación

Your notes are the stars; this is the constellation.

An open-source, local-first app that turns a folder of markdown into an interactive, editable mindmap and canvas — the bridge between two open formats:

  • Content stays in plain markdown files — any app's, SilverBullet's included
  • Structure lives in JSON Canvas .canvas files — any canvas app's, Obsidian's included

Zero proprietary storage. Prose belongs to the corpus app; structure belongs to Constelación.

Status: P1–P4 shipped — the app is in a daily-use freeze, being used before the next phase (a local-LLM prototype). The full design, roadmap, and field-test record live in PROPOSAL.md; docs/user-manual.md is the user guide.

Quickstart

git clone https://forgejo.ijuanes.ovh/ijuanes/constelacion.git
cd constelacion
bun install
bun test        # server test suite
bun dev         # serve on http://localhost:8123
bun run app     # or: server + a chrome-less app window

Point it at your notes with CONSTELACION_CORPUS=/path/to/your/notes (defaults to ./corpus/); set CONSTELACION_VIEW_URL_BASE so note views carry a viewUrl back to your corpus app. bun run install:desktop puts Constelación in your app menu.

Installing on a fresh machine (the tester scenario — a local rsync copy of a remote SilverBullet space, plus a plain-facts section for the AI agents of test users): docs/install-linux.md.

Using it — the headlines

The complete guide is docs/user-manual.md; the shape of it:

  • Three lenses — gravity (the default: clusters as communities), flow (a pipeline), mindmap (a radial reading lens; double-click re-roots).
  • The map edits structure, never sentences — drag a card and the position persists to a JSON Canvas file; draw a line between cards and a real [[wikilink]] lands in the source note; press Del on a selected line and the link's line is removed — unless it lives inside a sentence, in which case the map refuses and says so.
  • Labels are authored in prose — [[note|why this matters]] renders as the line's label; the corpus stays the single source.
  • Find things — search that dims to matches, orphan and folder filters, a minimap.
  • Backlinks, two ways — hover a card for the arrow lens (who points at it), or read its panel: linked mentions at the prose's end.
  • Live coherence — save anywhere (SilverBullet included) and the map re-arranges itself; the header says · live.

Layout

Path What it is
server/ Bun + Hono — corpus reader, graph index, JSON Canvas IO, the versioned /api/v1 contract (OpenAPI served by the app itself)
client/ The view: React Flow (TS) — the map, the reading panel, the lenses. bun run build:client rebuilds client/dist/
proto/ Experiments — import-to-canvas.ts renders a corpus to .canvas today and seeds the commit pipeline
docs/ The user manual, the Linux install guide, the desktop-launcher spec, the scaffold plan
bin/ constelacion — app / install-desktop / uninstall-desktop
PROPOSAL.md Everything else

Non-goals (by design)

No editor engine, no plugin system, no sync/collaboration, no Tauri/Electron shell, no proprietary anything. See the proposal for the reasoning — most of it was paid for by its predecessor.

License

MIT — see LICENSE.