Your local-first bookmark manager with privacy at its core
Features · Getting Started · Extensions · Mobile · Docs
Pawkit is a visual bookmark manager built for speed, privacy, and control. With local-first architecture, your data lives on your device with optional encrypted sync. Organize bookmarks into nested collections (Pawkits), write connected notes with wiki-links, attach files to your cloud storage, and rediscover forgotten content through timeline and calendar views.
- Instant — No server lag. Everything loads from your device in milliseconds
- Private — Your data stays local. Sync is encrypted end-to-end
- Organized — Nested collections, tags, notes with backlinks, knowledge graphs
- Connected — Bring your own cloud storage (Filen, Google Drive, Dropbox)
- Cross-platform — Web app, browser extensions (Chrome/Firefox), iOS app
- Beautiful — Clean glassmorphism interface with dark mode
- Visual bookmark saving with auto-fetched metadata (title, description, favicon, images)
- Rich markdown notes with GFM support, wiki-links
[[like this]], and backlinks - File uploads — images, PDFs, audio, video, documents
- Daily notes attached to calendar days
- Reader mode with Mozilla Readability for distraction-free reading
- Article extraction for offline access
- Nested collections (Pawkits) with drag-and-drop hierarchy
- Private collections hidden from main views
- Pinned favorites for quick access
- Tag management with filtering
- Trash with 30-day recovery
- Library — Grid, list, masonry, and timeline layouts
- Calendar — Month and week views with scheduled items and daily notes
- Home dashboard — Recent items, quick access, weekly overview
- Notes — Dedicated markdown browsing with search
- Adjustable card sizes
- Rediscover mode — Tinder-style card review for curating forgotten saves
- Smart search with fuzzy matching
- Command palette (⌘K) for quick navigation
- Knowledge graph visualization of note connections
- Local-first with IndexedDB for instant access
- Bidirectional sync with Supabase backend
- Offline queue with automatic retry
- Multi-tab awareness and conflict resolution
- Filen cloud integration for file storage (Google Drive, Dropbox in development)
- Todo management in sidebar
- Bulk operations — multi-select and batch edit
- Keyboard shortcuts throughout
- Import from browsers and other tools
- Node.js 20+ (LTS recommended)
- pnpm (recommended) or npm/yarn
- Supabase account (for sync — optional for local-only use)
# Clone the repository
git clone https://github.com/TheVisher/Pawkit.git
cd Pawkit
# Install dependencies
pnpm install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your Supabase credentials
# Run migrations
pnpm prisma:migrate
pnpm prisma:generate
# Start development server
pnpm devOpen http://localhost:3000
Browser extensions are live for Chrome and Firefox.
| Browser | Version | Status |
|---|---|---|
| Chrome | v1.1.0 | Available |
| Firefox | v1.1.0 | Available |
| Safari | — | Not planned |
- One-click save from any page
- Right-click context menu for images and links
- Popup UI for quick saves
- Secure token authentication
Extensions are in packages/extension/
The iOS app is built with React Native and Expo.
| Platform | Status |
|---|---|
| iOS | In TestFlight (pending external beta review) |
| Android | Planned |
- Full bookmark and note access
- Share extension — save from any app
- Offline-capable with sync
Mobile source is in mobile/
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| UI | React 19, Tailwind CSS, Radix UI |
| Icons | Lucide React |
| Database | PostgreSQL via Supabase |
| ORM | Prisma |
| State | Zustand |
| Local Storage | IndexedDB (idb) |
| Auth | Supabase Auth |
| File Storage | Filen SDK |
| Testing | Playwright |
| Deployment | Vercel |
pawkit/
├── app/ # Next.js App Router
│ ├── (auth)/ # Authentication routes
│ ├── (dashboard)/ # Main app routes
│ └── api/ # API endpoints
├── components/ # React components
├── lib/ # Business logic
│ ├── services/ # API and sync services
│ ├── stores/ # Zustand state stores
│ └── utils/ # Helpers
├── packages/
│ └── extension/ # Browser extensions
├── mobile/ # React Native iOS app
├── prisma/ # Database schema
└── public/ # Static assets
Pawkit follows a local-first design:
- All data stored locally in IndexedDB for instant access
- Operations work offline — no internet required
- Changes sync in background when online
- Conflicts resolved automatically with timestamps
- Private collections encrypted client-side
See LOCAL_FIRST_ARCHITECTURE.md for details.
| Command | Description |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Production build |
pnpm lint |
Run ESLint |
pnpm prisma:migrate |
Run migrations |
pnpm prisma:studio |
Open Prisma Studio |
pnpm test:e2e |
Run Playwright tests |
- Connect repository to Vercel
- Add environment variables
- Deploy
docker build -t pawkit .
docker run -p 3000:3000 --env-file .env.local pawkit- Note folders with nested hierarchy
- Improved tag management system
- Connected Platforms — Import saves from Reddit, YouTube, Twitter
- Google Calendar integration
- Quick Notes with auto-consolidation
- BYOAI — Bring your own AI via Claude MCP
- Weekly email digest
- Android app
See .claude/skills/pawkit-roadmap/TODO.md for the full roadmap.
- Local-first — data lives on your device
- End-to-end encryption for private collections
- Zero-knowledge sync — we cannot read your encrypted data
- No tracking, analytics, or ads
- Bring your own storage — connect your own cloud accounts
- Open source — audit the code
Contributions welcome. See CONTRIBUTING.md for guidelines.
# Fork, then:
git checkout -b feature/your-feature
git commit -m 'Add feature'
git push origin feature/your-feature
# Open PRMIT — see LICENSE
Made by TheVisher
