No description
  • TypeScript 99.5%
  • CSS 0.3%
Find a file
Jan-Henrik Bruhn 86a7053f1e
Some checks failed
CI / test (push) Has been cancelled
Release Please / release-please (push) Has been cancelled
Merge pull request #6 from OFFIS-ESC/release-please--branches--main--components--constellation-analyzer
chore(main): release 1.0.0
2026-05-08 16:51:32 +02:00
.claude/agents Initial commit 2025-10-10 11:15:51 +02:00
.github/workflows fix: remove wrong options from release-please 2026-05-08 16:49:20 +02:00
public Initial commit 2025-10-10 11:15:51 +02:00
src feat: add a way to show the description in the nodes description 2026-05-08 16:43:00 +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
CHANGELOG.md chore(main): release 1.0.0 2026-05-08 14:50:30 +00: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.0.0 2026-05-08 14:50:30 +00:00
package.json chore(main): release 1.0.0 2026-05-08 14:50:30 +00:00
postcss.config.js Initial commit 2025-10-10 11:15:51 +02:00
README.md Fix README: localStorage not IndexedDB, port 3000 not 5173 2026-03-31 11:47:26 +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

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.

License

MIT