A local-first, AI-powered note-taking application built with Tauri 2.0, React, and TypeScript.
- 📝 Markdown-based note editing with TipTap
- 🔗 Bi-directional linking and knowledge graph
- 🤖 AI-powered features with Claude integration
- 🔍 Semantic search with vector embeddings
- 🎨 Modern UI with TailwindCSS
- 🔒 Local-first architecture with SQLite
- Runtime: Tauri 2.0 (Rust + Web)
- Frontend: React 19, TypeScript, Vite
- Styling: TailwindCSS 4
- Editor: TipTap (ProseMirror)
- Database: SQLite with Drizzle ORM
- State: Zustand + Immer
- AI: Anthropic Claude API
- Testing: Vitest, Playwright, Testing Library
- Node.js 18+ and pnpm
- Rust 1.70+
- System dependencies for Tauri (see Tauri Prerequisites)
-
Clone the repository
-
Install dependencies:
pnpm install
-
Copy environment variables:
cp .env.example .env
-
Add your Anthropic API key to
.env
Start the development server:
pnpm tauri:devRun tests:
pnpm test
pnpm test:e2eSee claude.md for detailed project structure and development guidelines.
| Command | Description |
|---|---|
pnpm dev |
Start Vite dev server |
pnpm build |
Build frontend for production |
pnpm tauri:dev |
Start Tauri development mode |
pnpm tauri:build |
Build Tauri app for production |
pnpm typecheck |
Run TypeScript type checking |
pnpm lint |
Run ESLint |
pnpm format |
Format code with Prettier |
pnpm test |
Run unit tests |
pnpm test:e2e |
Run E2E tests |
pnpm db:generate |
Generate database migrations |
pnpm db:migrate |
Run database migrations |
pnpm db:studio |
Open Drizzle Studio |
- TypeScript strict mode enabled
- Functional React components only
- Components:
PascalCase.tsx - Hooks:
camelCase.tswithuseprefix - Utilities:
camelCase.ts
See claude.md for comprehensive conventions.
See CONTRIBUTING.md for contribution guidelines.
MIT