No description
  • TypeScript 99.6%
  • CSS 0.3%
Find a file
github-actions[bot] 531ff3660c
Some checks failed
Release Please / release-please (push) Has been cancelled
CI / test (push) Has been cancelled
chore(main): release 1.1.1
2026-09-08 13:49:04 +02:00
.claude/agents Initial commit 2025-10-10 11:15:51 +02:00
.github/workflows ci: bump CITATION.cff version and date with release-please 2026-09-08 13:37:51 +02:00
public feat: add Help > About with authors, citation and funding 2026-09-08 13:37:51 +02:00
src fix: stop pinning the released version in the citation test 2026-09-08 13:46:04 +02:00
.dockerignore Initial commit 2025-10-10 11:15:51 +02:00
.eslintrc.cjs Initial commit 2025-10-10 11:15:51 +02:00
.gitignore Initial commit 2025-10-10 11:15:51 +02:00
.release-please-manifest.json chore(main): release 1.1.1 2026-09-08 13:49:04 +02:00
CHANGELOG.md chore(main): release 1.1.1 2026-09-08 13:49:04 +02:00
CITATION.cff chore(main): release 1.1.1 2026-09-08 13:49:04 +02:00
CLAUDE.md create some first integration tests, determining where it actually makes sense. (vibe-kanban d736b771) 2025-11-10 12:22:30 +01:00
Dockerfile Initial commit 2025-10-10 11:15:51 +02:00
index.html fix: change folder location base path for imports to deploy 2025-10-10 12:02:09 +02:00
LICENSE.md Add license 2025-10-10 11:24:47 +02:00
package-lock.json chore(main): release 1.1.1 2026-09-08 13:49:04 +02:00
package.json chore(main): release 1.1.1 2026-09-08 13:49:04 +02:00
postcss.config.js Initial commit 2025-10-10 11:15:51 +02:00
README.md docs: add funding logos, DOI badge and citation section 2026-09-08 13:37:51 +02:00
release-please-config.json ci: bump CITATION.cff version and date with release-please 2026-09-08 13:37:51 +02:00
tailwind.config.js feat: add toast notification system for visual feedback 2025-10-10 23:13:28 +02:00
tsconfig.json fix: resolve build and type errors 2025-11-11 09:46:44 +01:00
tsconfig.node.json Initial commit 2025-10-10 11:15:51 +02:00
vite.config.ts there is a __tests__ folder and a test folder. That seems confusing, is that a SotA TypeScript/REact/Vite testing pattern? (vibe-kanban c7c8b21b) 2025-11-10 12:26:34 +01:00

Constellation Analyzer

DOI

A React-based visual editor for Constellation Analysis — mapping actors (nodes) and their relationships (edges) in an interactive graph.

Vibe-Warning: This is a testing ground for agent-based LLM coding. The codebase contains no hand-written code. Take it with a grain of salt.

Features

  • Multi-document workspace — open multiple analyses in tabs, persist to localStorage
  • Graph editor — drag-and-drop actors and relations with custom types, shapes, colors, and directionality
  • Groups — cluster actors into named, collapsible groups
  • Timeline / States — branching constellation states within a document (parallel scenarios or time evolution)
  • Presentation mode — fullscreen view with timeline overlay for presenting analyses
  • Undo / Redo — per-document history with operation descriptions
  • Bibliography — citation management via Citation.js (BibTeX, RIS, DOI, CSL)
  • TUIO integration — tangible token support over WebSocket/OSC for physical interaction
  • Export — PNG, SVG, JSON (document), ZIP (workspace)
  • Search & filters — filter graph by actor type, relation type, or label

Tech Stack

Framework React 18.2, TypeScript 5.2, Vite 5.1
Graph @xyflow/react 12.3
State Zustand 4.5
UI MUI 5.15, Tailwind CSS 3.4
Bibliography Citation.js 0.7
TUIO tuio-client 0.1, osc-js 2.4
Testing Vitest 3.2, Testing Library 16.3

Getting Started

npm install
npm run dev        # http://localhost:3000
npm run build
npm run lint
npm test

Project Structure

src/
├── components/
│   ├── Config/        # Node/edge/tangible/bibliography config dialogs
│   ├── Editor/        # Main graph editor (GraphEditor.tsx)
│   ├── Edges/         # Custom edge renderers
│   ├── Menu/          # Menu bar (File, Edit, View, Help)
│   ├── Nodes/         # CustomNode, GroupNode, shape renderers
│   ├── Panels/        # Left/right side panels, property editors
│   ├── Presentation/  # Fullscreen presentation overlay
│   ├── Timeline/      # Timeline/states UI
│   └── Workspace/     # Document tabs and document manager
├── hooks/             # useGraphWithHistory, useDocumentHistory, useTuioIntegration, …
├── stores/            # Zustand stores (graph, timeline, workspace, history, bibliography, tuio, …)
├── types/             # TypeScript definitions
└── utils/             # Export, graph analysis, bibliography parsing, migrations

Development Guidelines

Graph Mutations — Always Use useGraphWithHistory

// ✅ Correct — history tracked, undo/redo works
import { useGraphWithHistory } from '../../hooks/useGraphWithHistory';
const { addNode, updateNode, deleteNode, addEdge, ... } = useGraphWithHistory();

// ❌ Wrong — bypasses history
import { useGraphStore } from '../../stores/graphStore';

Read-only access in display components (CustomNode, CustomEdge) can use useGraphStore directly.

Tests

npm run test:unit        # Store unit tests (src/stores/*.test.ts)
npm run test:integration # Integration tests (src/__tests__/integration/)
npm test                 # All tests

Always update tests when modifying store logic. See CLAUDE.md for testing patterns.

Citation

Cite the software as a whole:

Bruhn, J.-H., Helfrich, F., Kerker, N., & Rosinger, S. Constellation Analyzer [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.20085913

That DOI is the concept DOI. It always resolves to the newest release.

To cite the exact version you used, use the Cite this repository button in the sidebar. GitHub renders APA and BibTeX from CITATION.cff, which release-please keeps current. The app shows the same citation under Help → About.

License

MIT

Funding

This publication was created as part of the research program “Transforming the Energy System Lower Saxony” (TEN.efzn) at the Energy Research Center of Lower Saxony (efzn).

Funded by zukunft.niedersachsen, the joint science funding program of the Lower Saxony Ministry of Science and Culture and the Volkswagen Foundation.

Energy Research Center of Lower Saxony (efzn)    zukunft.niedersachsen