Curate your stuff with Cur8t - AI-powered bookmark manager with smart organization
Get Started:
- ⚡ Quick Start - Get running in 5 minutes
- 🔧 Installation - Step-by-step setup guide
- 📖 API Docs - Complete API reference
Features:
- 🧠 AI Agents - Smart automation tools
- 🔌 Browser Extension - One-click bookmarking
- 🐙 GitHub Integration - Auto-sync to GitHub
Tech Stack:
- 🎨 Frontend - Next.js, React, TypeScript
- 🤖 Backend - FastAPI, Python, PostgreSQL
- 📦 Integrations - OpenAI, GitHub, Social APIs
Resources:
- 🏗️ Architecture - System design overview
- 🤝 Contributing - Join the project
- 📦 Deployment - Production setup
Think of Cur8t as your digital librarian that actually knows what you're into. It's a bookmark manager that doesn't just save links - it organizes them intelligently, learns your habits, and makes sharing collections actually fun.
- 🧠 AI Organization: Drop in a bunch of bookmarks, let AI sort them into logical collections
- 🔌 Browser Extension: One-click saving with smart collection suggestions
- 👥 Sharing: Public, private, or protected collections with invite-only access
- 🐙 GitHub Sync: Automatic backup to GitHub repositories
- 📤 Import/Export: Multi-browser support (Chrome, Firefox, Safari, Edge)
- 🔑 API Access: Full REST API for custom integrations
cur8t/
├── cur8t-web/ # 🎨 Main web app (Next.js)
├── agents-api/ # 🤖 AI agents (FastAPI)
├── extension-api/ # 🔌 Browser extension backend
├── bot/ # 🤖 Discord/Telegram bot
├── cli/ # 💻 Command line tools
└── flutter/ # 📱 Mobile app (coming)
- Framework: Next.js 15, React 19, TypeScript 5
- State: TanStack Query 5.83, Zustand 5.0
- UI: Tailwind CSS 3.4, Radix UI, shadcn/ui, Framer Motion
- Auth: Clerk 6.8
- Database: Drizzle ORM 0.37, Neon PostgreSQL
- Framework: FastAPI 0.104, Python 3.8+
- AI: OpenAI GPT-4
- Data: BeautifulSoup 4, httpx
- Server: Uvicorn 0.24
- Framework: React 19, TypeScript 5
- Build: Vite + CRXJS
- UI: Tailwind CSS 4, shadcn/ui
- APIs: Chrome Bookmarks API, WebExtension Polyfill
- Database: PostgreSQL (Neon serverless)
- Cache: Redis (Upstash)
- Rate Limiting: Upstash Rate Limit
- Version Control: GitHub API (Octokit)
- OpenAI API 1.12.0: GPT-4 integration for smart categorization
- GPT-4 Turbo: Advanced language model for content analysis
- Custom AI agents: Specialized AI features for bookmark organization
- GitHub API: Repository management and backup
- Octokit 4.1.0: GitHub API client for seamless integration
- GitHub OAuth: Account integration and authentication
- Repository sync: Two-way synchronization with automatic backups
- Twitter API: Social media integration for sharing collections
- LinkedIn API: Professional networking and profile linking
- Instagram API: Photo sharing platform integration
- Custom social auth: Platform-specific authentication flows
- Resend: Transactional email service for notifications
- Email templates: Automated messaging system
- Notification system: User alerts and updates
- Custom analytics: Usage tracking and insights
- Performance monitoring: System health and metrics
- Error tracking: Bug reporting and debugging
- User behavior: Usage analytics and patterns
- Node.js 18+
- Python 3.8+
- PostgreSQL
- Redis (optional, for rate limiting)
- Clone the repository
git clone https://github.com/amaan8429/cur8t.git
cd cur8t- Setup web app
cd cur8t-web
pnpm install
cp .env.example .env.local
# Edit .env.local with your credentials
pnpm dev- Setup AI agents
cd agents-api
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
cp env.example .env
# Edit .env with your credentials
python run_dev.py- Setup extension API
cd extension-api
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp env.example .env
python run_dev.py- Setup browser extension
cd cur8t-extension
pnpm install
pnpm dev
# Load unpacked extension from dist/ folder in ChromeDATABASE_URL=postgresql://...
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
UPSTASH_REDIS_REST_URL=https://...
UPSTASH_REDIS_REST_TOKEN=...
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...OPENAI_API_KEY=sk-...
API_HOST=0.0.0.0
API_PORT=8000DATABASE_URL=postgresql://...
API_HOST=0.0.0.0
API_PORT=8001- Create, organize, and pin collections
- Public/private/protected visibility settings
- Search, filter, and sort collections
- Drag & drop organization
- Rich descriptions with markdown
Active:
- Article Link Extractor - Extract all links from any article
- Bookmark Importer - Import from any browser with AI categorization
Coming Soon:
- Collection Generator - Topic-based collection creation
- Smart Export Guide - Custom formatting and templates
- YouTube Extractor - Extract links from video descriptions
- Watch Later Organizer - Auto-sort YouTube playlists
- One-click bookmark saving
- Smart collection suggestions
- Favorites management
- AI-powered organization
- Offline support with caching
- Real-time sync with optimistic updates
- OAuth 2.0 authentication
- Automatic 24-hour sync
- Manual sync on-demand
- Two-way synchronization
- Conflict resolution
- Complete backup
- Public user profiles
- Collection discovery
- Like and save collections
- Share via custom URLs
- Protected collections with email invites
- Social media integration (Twitter, GitHub, LinkedIn, Instagram)
All API requests require authentication via Clerk or API key.
# Using Clerk token
curl -H "Authorization: Bearer YOUR_CLERK_TOKEN" \
https://api.cur8t.com/api/v1/collections
# Using API key
curl -H "X-API-Key: YOUR_API_KEY" \
https://api.cur8t.com/api/v1/collections# List collections
GET /api/v1/collections
# Get collection
GET /api/v1/collections/{id}
# Create collection
POST /api/v1/collections
{
"title": "My Collection",
"description": "Collection description",
"visibility": "public"
}
# Update collection
PATCH /api/v1/collections/{id}
# Delete collection
DELETE /api/v1/collections/{id}# Add link to collection
POST /api/v1/collections/{id}/links
{
"url": "https://example.com",
"title": "Example"
}
# Update link
PATCH /api/v1/links/{id}
# Delete link
DELETE /api/v1/links/{id}cur8t-web/
├── src/
│ ├── app/ # Next.js App Router
│ ├── components/ # React components
│ ├── actions/ # Server actions
│ ├── hooks/ # Custom hooks
│ ├── lib/ # Utilities
│ ├── store/ # State management
│ └── types/ # TypeScript types
├── migrations/ # Database migrations
└── public/ # Static assets
agents-api/
├── agents/ # AI agent modules
│ ├── article_extractor/
│ ├── bookmark_importer/
│ └── ...
├── config/ # Configuration
├── core/ # Core utilities
└── tests/ # Tests
extension-api/
├── app/
│ ├── api/ # API routes
│ └── core/ # Core functionality
└── models/ # Data models
cur8t-extension/
├── src/
│ ├── popup/ # Extension popup
│ ├── background/ # Background service
│ ├── content/ # Content scripts
│ └── lib/ # Utilities
└── public/ # Assets
# Web app
cd cur8t-web
pnpm test
# AI agents
cd agents-api
pytest
# Extension
cd cur8t-extension
pnpm test# Web app
cd cur8t-web
pnpm build
# AI agents
cd agents-api
docker build -t cur8t-agents .
# Extension API
cd extension-api
docker build -t cur8t-extension-api .
# Browser extension
cd cur8t-extension
pnpm builddocker-compose up -d- Deploy web app to Vercel/Netlify
- Deploy APIs to any cloud provider (AWS, GCP, Azure)
- Setup PostgreSQL database (Neon recommended)
- Configure Redis (Upstash recommended)
- Setup environment variables
- Run database migrations
We welcome contributions! Please follow these guidelines:
- 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 TypeScript/Python best practices
- Write tests for new features
- Update documentation
- Use conventional commits
- Ensure all tests pass
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Built with Next.js
- UI components from shadcn/ui
- AI powered by OpenAI
- Authentication by Clerk
- Database by Neon
- Icons from Lucide
Made with ❤️ by the Cur8t team