A modern and responsive chat application built with React, TypeScript, and Tailwind CSS.
- 💬 Chat with multiple AI models (GPT, Claude, Mistral, Deepseek)
- 📋 Multiple chat sessions with saved history
- 🔍 Search through past conversations
- 🎨 Clean, responsive UI for desktop and mobile
- 📱 Mobile-friendly with drawer navigation
- 🚀 Quick actions to start a new chat
- Frontend: React, TypeScript
- Styling: Tailwind CSS
- State Management: Context API
- Markdown Rendering: Marked
- Unique IDs: UUID
- Node.js (v14+)
- npm or yarn
- Clone the repository
git clone <repository-url>
cd chat
- Install dependencies
npm install
# or
yarn install
- Start the development server
npm run dev
# or
yarn dev
- Open your browser and navigate to
http://localhost:5173
(or the URL provided in your terminal)
-
Creating a New Chat
- Click on the "New Chat" button in the sidebar
- Start typing your message in the input field
-
Switching Between Chats
- Click on any chat in the sidebar to switch to that conversation
-
Searching Conversations
- Click the search icon in the sidebar header
- Type your search query to filter through chat titles and messages
-
Changing AI Model
- Click on the model selector button at the bottom of the chat input
- Choose your preferred AI model from the dropdown
-
Message Actions
- Hover over any assistant message to see available actions:
- Delete message
- Regenerate response
- Copy text
- Hover over any assistant message to see available actions:
The application can be configured by modifying the following files:
src/constants/models.ts
: Available AI modelssrc/context/ChatContext.tsx
: Chat functionality and state managementsrc/context/SDKContext.tsx
: SDK integration
src/
├── components/ # UI components
│ ├── chat/ # Chat-specific components
│ │ ├── ui/ # UI elements for chat
│ │ └── Chat.tsx # Main chat component
├── constants/ # Application constants
├── context/ # Context providers
├── types/ # TypeScript type definitions
└── main.tsx # Entry point
To add new features:
- Create necessary components in the
src/components
directory - Update relevant context providers as needed
- Add any new types to the
src/types
directory