A personal thinking tool for mapping beliefs as a directed graph. You start with a question, write answers, and let each answer raise new questions. What emerges is a Socratic dialogue with yourself — a map of how your reasoning actually branches, stalls, and reconnects.
Built as a companion to an essay. The app is the argument made interactive.
- Explore Mode — focus on one node at a time. See where it came from, write where it leads. Low friction: type, press Enter, keep going.
- Map Mode — see the whole graph at once. Force-directed layout, drag to rearrange, click any node to dive back in.
- Two node types — questions (amber, serif, sharp corners) and answers (blue, sans-serif, rounded). They alternate as you write.
- Link existing nodes — when a thread converges with one you've already written, connect them instead of duplicating.
- Open thread nudge — the app surfaces a random leaf node at the bottom of each screen. A small prompt to keep going.
| Framework | Next.js 15 (App Router) |
| Visualisation | D3 (force simulation, zoom, drag) |
| Persistence | localStorage |
| Styling | Inline styles |
| Auth / DB | None yet |
No backend. Everything runs in the browser.
npm install
npm run devOpens at http://localhost:3000. Two sample explorations are seeded on first visit so you have something to click around in immediately.
app/
layout.jsx — fonts, global reset
page.jsx — redirects to /dashboard
dashboard/
page.jsx — graph list
[graphId]/
page.jsx — explore + map views
components/
Dashboard.jsx — graph cards, rename, delete
ConversationView.jsx — the main thinking interface
GraphCanvas.jsx — d3 force graph
NewGraphDialog.jsx — create flow
lib/
api.js — localStorage data layer
theme.js — colour constants
This is an early working version. The core loop is complete and usable. What's in:
- Create, rename, and delete explorations
- Add, edit, and delete nodes
- Link nodes across branches
- Drag-to-arrange in map mode (positions saved)
- Keyboard shortcuts (
/,Tab,Escape) - Mobile-friendly layout
What's not in yet:
- User accounts — data lives in localStorage, one browser, one device
- Sync — no server, no backup, clear your cache and it's gone
- Export — no JSON, image, or PDF output
- Undo — deletions are permanent
- Real-time or collaboration — fully single-user
The next meaningful step is wiring up Supabase for persistence and auth so data follows the user across devices.
Born from an essay about belief systems and how most people often don't examine the structure of their own thinking. The graph format isn't just a UI choice — it's the argument: beliefs aren't a list, they're a network, and most of the interesting stuff lives in the edges.