A local-first personal notes app with bi-directional linking, inspired by Linear's clean design aesthetic.
- Local-First Architecture - All data stored in browser IndexedDB (zero backend, instant performance)
- Bi-Directional Linking - Wiki-style
[[links]]with automatic backlink tracking - Real-Time Updates - UI automatically refreshes when notes change
- Linear-Inspired Design - Dark-first, high contrast, minimal aesthetic
- Auto-Save - Changes saved automatically with debouncing
- Interactive Links - Click [[links]] to navigate between notes
- Backlinks Sidebar - See all notes linking to the current note
- Phase 3: Search & Navigation (Fuse.js fuzzy search, command palette with ⌘K)
- Phase 4: Design Polish (animations, empty states, responsive design)
- Phase 5: Graph Visualization (React Flow network graph)
- Framework: Next.js 15 (App Router)
- Database: IndexedDB via Dexie.js
- Editor: Lexical (Meta's extensible editor framework)
- UI: Tailwind CSS v4 with custom design system
- Icons: Lucide React
All data lives in the browser's IndexedDB. Benefits:
- Zero latency - No network requests
- Privacy - Notes never leave your device
- Offline-first - Works without internet
- Free hosting - Deploy as static site
- Future-proof - Easy to add cloud sync later
When Note A links to Note B using [[Note B]]:
- Note A's
linkedNoteIdsarray includes Note B's ID - Note B's
backlinkNoteIdsarray includes Note A's ID - Both arrays update automatically
- Enables instant backlink queries without scanning all notes
Linear-inspired color palette:
- Deep black background (#0A0A0A)
- High contrast white text (#FFFFFF)
- Subtle borders (#2C2C30)
- Purple-blue accent (#5E6AD2)
- 200-300ms smooth transitions
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/YOUR_USERNAME/knowledge-app.git
cd knowledge-app
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
- Create a note - Click "New Note" button
- Write content - Start typing (auto-saves every 1 second)
- Link notes - Type
[[Note Title]]to create a link - Navigate - Click on wiki links to jump between notes
- View backlinks - See which notes link to the current note in the sidebar
knowledge-app/
├── app/ # Next.js App Router
│ ├── page.tsx # Home (note list)
│ └── notes/[id]/page.tsx # Note detail page
├── components/
│ ├── editor/
│ │ ├── NoteEditor.tsx # Lexical editor wrapper
│ │ ├── WikiLinkNode.tsx # Custom link node
│ │ └── WikiLinkPlugin.tsx # Link parser/renderer
│ ├── notes/
│ │ ├── NoteList.tsx # Note grid
│ │ └── NoteCard.tsx # Note preview card
│ └── ui/
│ └── Button.tsx # Reusable button
├── lib/
│ ├── db/
│ │ ├── index.ts # Dexie instance
│ │ ├── schema.ts # TypeScript types
│ │ └── operations.ts # CRUD functions
│ ├── linking/
│ │ └── parser.ts # Wiki link parsing
│ └── utils.ts # Utility functions
└── hooks/
└── useNotes.ts # React hooks for database
- Next.js project setup
- IndexedDB with Dexie
- Basic CRUD operations
- Note list and editor
- Lexical editor integration
- Custom WikiLinkNode
- Link parsing and tracking
- Backlinks display
- Fuse.js fuzzy search
- Command palette (⌘K)
- Wiki link autocomplete
- Keyboard shortcuts
- Framer Motion animations
- Empty states
- Loading skeletons
- Mobile responsive
- React Flow integration
- Network graph of notes
- Interactive nodes
- Zoom/pan controls
- AI-powered link suggestions
- Auto-tagging
- Export to Markdown
- Optional cloud sync
- Daily notes feature
- Note templates
- Initial load: < 1s (static site)
- Note creation: < 50ms
- Search: < 100ms (100+ notes)
- Auto-save: 1s debounce
- Database size: ~50MB - 1GB per browser (IndexedDB quota)
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
Requires IndexedDB support
Contributions welcome! Please open an issue or PR.
MIT
- Inspired by Linear's design system
- Wiki linking concept from Roam Research and Obsidian
- Built with Next.js, Lexical, and Dexie.js
Built with Claude Code 🤖