A modern AI-powered chatbot with intelligent file search and real-time web search capabilities. Try it out at https://t3chatcloneathon.netlify.app
Features • Quick Start • Self Hosting • Usage • Tech Stack
- Multi-format support: PDF, TXT, DOCX
- AI-powered citations: Click on file references to preview documents
- Contextual understanding: Conversation-specific vector stores
- Smart indexing: Automatic document processing and search optimization
- Toggle control: Enable/disable web search per message
- Live information: Access current data and recent events
- Source citations: Clickable links to original sources
- Combined search: Seamlessly merge file and web results
- Streaming responses: Real-time AI interaction
- Conversation memory: Persistent chat history
- Auto-generated titles: Smart conversation naming
- Modern UI: Clean, responsive design with dark/light themes
- Node.js 18+ (
nvm install 18 && nvm use 18) - pnpm (install globally:
npm install -g pnpm)
# Clone the repository
git clone <repository-url>
cd <repo-directory>
# Install dependencies
pnpm install
# Set up environment variables
npx convex dev# Option 1: Cloud Convex (recommended for production)
pnpm dev
# Option 2: Local Convex (for development)
# Terminal 1:
npx convex dev
# Terminal 2:
pnpm dev:noconvexOpen http://localhost:5173 in your browser.
Perfect for development and testing:
# Ensure Node.js 18
nvm install 18 && nvm use 18
# Install dependencies
pnpm install
# Start local Convex backend
npx convex dev
# Follow the prompts:
# ✓ Start without an account (run Convex locally)
# ✓ Choose "new" project
# ✓ Name your project (e.g., "cloneathalon")
# In a new terminal, start the frontend
nvm use 18
pnpm dev:noconvex# Build for production
pnpm build
# Deploy the dist/ folder to your hosting provider- Click the search icon (🔍) next to the attachment button
- When enabled, the button highlights in blue
- Messages show "Web search enabled" indicator
- AI responses include clickable web citations
- Click the plus (+) button to upload files
- Drag & drop or browse for supported formats
- Files are automatically indexed for intelligent search
- AI provides clickable citations with document previews
- Combine searches: Use both file and web search for comprehensive answers
- Citation preview: Click any file citation to view the referenced content
- Conversation context: Files remain available throughout the chat session
- React 19 - Modern UI library with latest features
- TypeScript - Type-safe development
- Vite - Lightning-fast build tool
- Tailwind CSS - Utility-first styling
- Tanstack Router - Type-safe routing
- Convex - Real-time database and backend platform
- Convex Auth - Secure authentication system
- OpenAI GPT-4.1 - Advanced language model
- OpenAI Responses API - Streaming responses, file search and web search
- Vector Stores - Intelligent document search
- Web Search API - Real-time information retrieval
- OpenRouter - API for Anthropic, xAI, Google and more models
- ESLint - Code linting and quality
- Prettier - Code formatting
- Vitest - Unit testing framework
- TypeScript - Static type checking
| Command | Description |
|---|---|
pnpm dev |
Start frontend + cloud Convex backend |
pnpm dev:noconvex |
Start frontend only (requires local Convex) |
pnpm build |
Build production bundle |
pnpm lint |
Run ESLint checks |
pnpm typecheck |
Run TypeScript validation |
pnpm format |
Format code with Prettier |
pnpm format:check |
Check code formatting |
pnpm test |
Run test suite |
<repo-directory>/
├── src/ # Frontend React application
│ ├── components/ # Reusable UI components
│ ├── pages/ # Application pages
│ └── lib/ # Utilities and helpers
├── convex/ # Backend Convex functions
│ ├── schema.ts # Database schema
│ └── *.ts # API functions and mutations
└── public/ # Static assets
- Fork the repository
- Create your 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
- Run
pnpm lint,pnpm typecheck,pnpm format, andpnpm format:checkbefore committing - Follow the existing code style and conventions
- Add tests for new features when applicable
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ using modern web technologies