Contextual Active Recall Canvas โ A hierarchical note-taking tool that preserves the big picture while enabling friction-free active recall.
Medical students (and anyone facing high-volume, interconnected information) are forced to choose between:
- ๐ Linear notes (PDFs, Word, OneNote) โ Great for context, but completely passive. No built-in way to test yourself.
- ๐ Flashcards (Anki) โ Excellent for spaced repetition, but destroy the big picture. You memorize isolated facts without understanding how they connect.
The result? Fragmented knowledge. You know that magnesium sulfate is used for eclampsia, but you can't recall where it fits in the broader management protocol.
Synapse is a lightweight, local-first hierarchical outliner on an infinite canvas that lets you:
- Map interconnected topics as a tree (e.g., Eclampsia โ Management โ Magnesium Sulfate Protocol)
- Collapse the entire canvas to test your high-level framework
- Expand nodes one-by-one to verify your memory โ without losing context
- Tag weak areas with visual status flags (red = failed, yellow = review, green = mastered)
- See a heat-map of your knowledge gaps when the tree is collapsed
Progressive Disclosure + Contextual Active Recall = No more choosing between structure and testing.
| Feature | Description | Why It Matters |
|---|---|---|
| Hierarchical Nodes | Parent-child relationships that preserve topic structure | Never lose the "big picture" |
| Global Toggle | Collapse all / expand all with one click | Test your mental framework instantly |
| Individual Collapse | Click any node to hide/show its children | Drill down exactly where you need practice |
| Status Tagging | Mark nodes as Mastered (๐ข), Review (๐ก), or Failed (๐ด) | Self-directed metacognition |
| Heat-Mapping | Collapsed parents show aggregated child statuses | Visual knowledge gap analysis |
| Infinite Canvas | Pan and zoom to organize large topic maps | Scale from a single lecture to an entire syllabus |
| Local-First | Auto-saves to browser storage, zero backend | Privacy, speed, offline-first |
- Node.js 18+ and npm/yarn/pnpm
# Clone the repository
git clone https://github.com/yourusername/synapse.git
cd synapse
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
- Click anywhere on the canvas to create a root node (e.g., "Hypertensive Disorders in Pregnancy")
- Click the
+icon on a node to add a child (e.g., "Pre-eclampsia", "Eclampsia") - Build out your hierarchy to match how the topic is structured in your mind
- Click "Collapse All" in the toolbar โ only your root nodes remain visible
- Look at "Eclampsia" and try to recall its management protocol mentally
- Click to expand and verify your answer
- Keep drilling down level-by-level
- After expanding a node, click the status indicator to cycle through:
- โช None (default)
- ๐ด Failed (couldn't recall)
- ๐ก Review (partially remembered)
- ๐ข Mastered (confident)
- Collapse parent nodes to see aggregated child statuses
- A badge shows:
3 failed, 2 review, 5 mastered - Focus your next study session on red-heavy branches
- Everything saves to browser localStorage automatically
- Refresh the page โ your canvas loads exactly as you left it
| Layer | Technology | Why |
|---|---|---|
| Framework | Next.js 13+ (App Router) | Modern React, built-in routing |
| Language | TypeScript | Type safety for complex tree logic |
| State | Zustand | Lightweight, no boilerplate |
| Storage | localStorage | Local-first, zero backend for V1 |
| Styling | Tailwind CSS | Rapid UI iteration |
synapse/
โโโ src/
โ โโโ app/ # Next.js pages
โ โ โโโ page.tsx # Canvas list
โ โ โโโ canvas/[id]/ # Main canvas view
โ โโโ components/
โ โ โโโ Canvas/ # Core canvas components
โ โ โโโ ui/ # Reusable UI elements
โ โโโ lib/
โ โ โโโ operations/ # Business logic (CRUD, hierarchy)
โ โ โโโ store.ts # Zustand state management
โ โ โโโ persistence.ts # localStorage wrapper
โ โ โโโ types.ts # TypeScript definitions
โ โโโ hooks/ # Custom React hooks
โโโ tests/ # Unit tests
- Hierarchical node management
- Global collapse/expand
- Status tagging + heat-mapping
- Local persistence
- Markdown / rich text support
- Drag-to-reparent nodes
- Keyboard shortcuts (collapse with
Space, expand withEnter) - Undo/Redo
- Search within canvas
- Export to Anki / PDF
- Cloud sync (optional, self-hosted)
- Mobile app (React Native)
- Plugin system (community extensions)
- Shared canvases (study groups)
# Run unit tests
npm test
# V1 Manual Test Checklist
- [ ] Create 3-level node hierarchy
- [ ] Collapse all โ only roots visible
- [ ] Expand individual node
- [ ] Tag node as "Failed" โ parent shows red badge
- [ ] Refresh page โ state restored
- [ ] Pan canvas, zoom in/outWe welcome contributions! This project is built for students, by students (and developers who care about learning tools).
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Write TypeScript (no
anytypes unless absolutely necessary) - Test your changes manually against the V1 checklist
- Keep it simple โ resist scope creep (see SCOPE.md)
Synapse is NOT:
- โ A clone of Roam/Obsidian (no bi-directional links)
- โ A spaced repetition scheduler (use Anki for that)
- โ A collaborative whiteboard (use Miro/FigJam)
- โ A drawing tool (we're text-first)
We intentionally focus on:
- โ Preserving hierarchical context
- โ Enabling friction-free active recall
- โ Visual metacognitive feedback
See our design philosophy doc for details.
MIT License โ see LICENSE for details.
TL;DR: Use it for free, modify it, share it. We only ask that you credit the project.
Built for medical students grinding through NEET PG, USMLE Step 1/2, PLAB, and any other exam that demands both deep understanding and rapid recall.
Inspired by:
- Anki โ for proving spaced repetition works
- Roam Research โ for showing outlining could be spatial
- Workflowy โ for hierarchical simplicity
- The frustration of forgetting where clinical facts fit in the bigger diagnostic picture
- Issues/Bugs: GitHub Issues
- Discussions: GitHub Discussions
- Twitter/X: @yourhandle
If this project helps you ace your exams, consider giving it a โญ โ it helps other students find it!
Made with โค๏ธ and far too much coffee during exam season
Coming soon! Drop screenshots here after V1 build:
- Canvas with expanded hierarchy
- Collapsed view with heat-map badges
- Status tagging in action
Pro tip: Start by mapping out one high-yield topic (e.g., "Shock" or "Acid-Base Disorders"). If you can collapse it, recall the framework, expand to verify, and tag your weak spots โ you've just built a better study system than 90% of your classmates. ๐