A browser extension that adds a floating index to navigate messages in AI chat interfaces.
Supported platforms: ChatGPT, Claude, Gemini, Grok
ai-chat-index/
├── website/ # Next.js marketing site + dashboard
│ ├── src/
│ │ ├── app/ # Pages (landing, auth, dashboard)
│ │ ├── components/ # React components
│ │ └── lib/ # Utilities
│ ├── convex/ # Convex backend
│ │ ├── schema.ts # Database schema
│ │ ├── conversations.ts # Conversation queries/mutations
│ │ ├── messages.ts # Message search
│ │ ├── bookmarks.ts # Bookmark management
│ │ ├── exports.ts # Export functionality
│ │ └── http.ts # HTTP endpoints for extension
│ └── ...
├── content/ # Extension content scripts
│ └── providers/ # Site-specific selectors
├── popup/ # Extension popup
├── onboarding/ # Post-install welcome page
├── manifest.json # Chrome manifest (v3)
├── _firefox/ # Firefox-specific manifest
├── build.sh # Build script
└── DEPLOYMENT.md # Full deployment guide
cd website
npm install
cp .env.local.example .env.local
# Add your Clerk keys to .env.local
npm run devcd website
npx convex dev
# Follow prompts to log in and create a project
# This will add NEXT_PUBLIC_CONVEX_URL to your .env.localFor Clerk + Convex integration, add your Clerk JWT issuer domain to Convex:
- Go to your Convex dashboard
- Settings → Environment Variables
- Add
CLERK_JWT_ISSUER_DOMAINwith your Clerk domain
./build.shThis creates:
dist/chrome/- Load unpacked in Chromedist/firefox/- Load in Firefoxdist/website/- Static assets for hosting
- Go to
chrome://extensions - Enable Developer mode
- Click Load unpacked → select
dist/chrome
- Framework: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS (Linear/Vercel-inspired dark theme)
- Auth: Clerk
- Database: Convex (real-time, fully typed)
- Hosting: Vercel (recommended)
- Manifest: V3 (Chrome), V2 (Firefox)
- Content Scripts: Vanilla JavaScript
- Styling: Custom CSS
The website uses a custom dark theme inspired by Linear and Vercel:
- Background:
#0a0a0b - Surface:
#141415 - Accent:
#8b5cf6(purple) - Typography: Inter font family
Components are minimal and purposeful—no AI-generated slop.
See DEPLOYMENT.md for complete instructions on:
- Deploying the website to Vercel
- Setting up Clerk authentication
- Publishing to Chrome Web Store
- Publishing to Firefox Add-ons
- Floating button appears on supported AI chat sites
- Expandable index panel showing message previews
- Filter by user/assistant messages
- Click to jump to any message
- Draggable panel
- Live updates as conversation grows
- Landing page with feature showcase
- Step-by-step installation guide
- User authentication (Clerk)
- Real-time dashboard with Convex
- Cross-platform message search
- Bookmark management with notes
- Conversation export (JSON/Markdown)
- Chat sync across devices (Convex backend)
- Search across all providers (full-text search)
- Bookmarks with notes
- Export conversations (JSON/Markdown)
- Chrome Web Store listing
- Firefox signed extension
- AI-powered insights on conversations
After making changes:
- Run
./build.sh - Go to
chrome://extensions - Click refresh on the extension
- Reload the chat page
cd website
npm run dev # Development server
npm run build # Production build
npm run lint # Lint code- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT