Skip to content

Repository files navigation

DevVault

A local-first developer knowledge OS. Store structured notes with multiple block types, search with block-level deep linking, and sync to your own private GitHub repository.

DevVault Screenshot TypeScript TailwindCSS

Features

  • Block Editor — TipTap-based with paragraph, heading (H1/H2/H3), code block (syntax highlighting, language selector, copy button), and divider blocks
  • Local-First — All data stored in IndexedDB via Dexie.js. Works fully offline
  • Universal Search — ⌘K to search across all notes with fuzzy matching, keyboard navigation, and block-level deep linking
  • GitHub Sync — Backs up notes to a private devvault-notes repo. Serial sync queue with rate limit and offline handling
  • Conflict Resolution — Three-option modal: keep local, keep remote, or keep both
  • Auto-Save — 1500ms debounce + ⌘S manual save with dirty state indicator
  • Dark Theme — Minimal, developer-native aesthetic with Inter + JetBrains Mono fonts

Tech Stack

Layer Technology
Framework Next.js 14 (App Router)
Language TypeScript (strict)
Styling TailwindCSS + shadcn/ui
State Zustand
Database Dexie.js (IndexedDB)
Search Fuse.js
Editor TipTap + lowlight
Auth NextAuth.js (GitHub OAuth)
GitHub API Octokit.js
Notifications sonner
Icons lucide-react

Getting Started

# Install dependencies
npm install

# Run dev server
npm run dev

Open http://localhost:3000.

GitHub Sync Setup

  1. Create a GitHub OAuth App
    • Homepage URL: http://localhost:3000
    • Callback URL: http://localhost:3000/api/auth/callback/github
  2. Fill in .env.local:
NEXTAUTH_SECRET=<run: openssl rand -base64 32>
NEXTAUTH_URL=http://localhost:3000
GITHUB_CLIENT_ID=<your client id>
GITHUB_CLIENT_SECRET=<your client secret>
  1. Click Settings → Connect GitHub in the app

Keyboard Shortcuts

Shortcut Action
⌘K Open search
⌘S Save note
⌘N New note
Esc Close modal

License

MIT


Built by Abhishek Kumar (@abhishekswe) · abhishekswe.github.io · LinkedIn · X

About

Local-first developer knowledge base — TipTap block editor, IndexedDB (Dexie), fuzzy search with block-level deep links, GitHub sync with conflict resolution. Next.js 14 + strict TypeScript.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages