- 📚 Bookmark Management - Organize bookmarks with tags, descriptions, and favicons
- 📰 RSS Reader - Subscribe to RSS feeds and read articles offline
- 🎨 Cross-Platform UI - Consistent design across web, desktop, and mobile
- 💾 Local-First - All data stored locally with SQLite/AsyncStorage
- � Dark Mode - Built-in dark theme support
- 🔍 Search & Filter - Quickly find bookmarks and articles
- 📱 Mobile Optimized - Native-feeling mobile experience with Expo
- Web/Desktop: React 19 + Vite + TailwindCSS + Tanstack Start
- Mobile: React Native (Expo) + UniWind
- Desktop Shell: Tauri
- Database: SQLite (Drizzle ORM) / AsyncStorage (mobile)
- State Management: Zustand
- RSS Parsing: Extractus (browser-compatible)
- Build Tool: Turborepo
- Language: TypeScript
- Linting: Biome
- Package Manager: pnpm
- Testing:
bookmark-tool/
├── apps/
│ ├── web/ # Web application (React + shadcn/ui)
│ ├── desktop/ # Desktop application (Tauri + React)
│ ├── mobile/ # Mobile application (Expo + React Native)
│ └── website/ # Website (React + shadcn/ui)
├── packages/
│ ├── db/ # Database schema and migrations (Drizzle)
│ ├── store/ # Zustand state management
│ ├── hooks/ # Shared React hooks
│ ├── utils/ # Shared utilities (RSS parsing, metadata fetching)
│ └── agents/ # Shared agent implementations (bookmark, RSS)
└── package.json # Root package.json
- Node.js 18+
- pnpm 8+
- (For desktop) Rust and Cargo
- (For mobile) Expo CLI
# Clone the repository
git clone https://github.com/yourusername/bookmark-tool.git
cd bookmark-tool
# Install dependencies
pnpm install
# Run development servers
pnpm devcd apps/web
pnpm devcd apps/desktop
pnpm tauri devcd apps/mobile
pnpm start
# Or use Expo Go app- Navigate to the Bookmarks section
- Click "Add Bookmark"
- Enter the URL
- The app will automatically fetch title, description, and favicon
- Navigate to the RSS section
- Click "Add Feed"
- Enter the RSS feed URL
- Articles will be fetched and cached locally
- Click on any article to open the reader view
- Articles are marked as read automatically
- Use the action buttons to like, save, or share
pnpm test# Build all apps
pnpm build
# Build specific app
pnpm --filter @apps/web build
pnpm --filter @apps/desktop build
pnpm --filter @apps/mobile buildThis project uses ESLint and Prettier for code formatting:
# Lint code
pnpm lint
# Format code
pnpm formatContributions are welcome! Please follow these steps:
- 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
- Follow the existing code style
- Write tests for new features
- Update documentation as needed
- Ensure cross-platform compatibility
- Some form of User authentication and cloud sync
- Browser extension for quick bookmarking
- Full-text search with SQLite FTS
- Push notifications for new RSS articles
- AI-powered summarization
- Import/Export bookmarks (OPML, HTML)
- Collections and folders
- Advanced filtering and sorting
Built with ❤️ by the open-source community