A modern, responsive chat application built with Next.js 15 and TypeScript.
- Real-time messaging with message history
- Message status indicators (sent, delivered, read)
- Typing indicators and smooth animations
- Search functionality across conversations
- Theme Support: Light/Dark mode
- Color Customization: Easy and Advanced modes
- Font Size Options: Small, Medium, Large
- Automatic Contrast: Text color adjusts based on background
- Mobile-first approach with bottom navigation
- Desktop layout with sidebar navigation
- Seamless experience across all devices
- Combined voice and video call history
- WhatsApp-style call details interface
- Quick actions (call back, video call, message)
- Appearance customization
- Notifications preferences
- Privacy controls
- Account management
- Framework: Next.js 15
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- State Management: Zustand
- Icons: Lucide React
- Node.js 18+
- pnpm (recommended)
# Clone the repository
git clone <repository-url>
cd chat-app
# Install dependencies
pnpm install
# Run development server
pnpm devOpen http://localhost:3000 to view the app.
# Build the application
pnpm build
# Start production server
pnpm startsrc/
├── app/ # Next.js app router pages
├── components/ # Reusable UI components
│ ├── ui/ # shadcn/ui components
│ └── ... # Custom components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── store/ # Zustand state stores
└── styles/ # Global styles
- ChatArea: Main messaging interface
- ChatSidebar: Conversation list with search
- TwoColumnLayout: Reusable responsive layout
- ColorPickerModal: Theme customization
- BottomNavigation: Mobile navigation
The app uses Zustand for state management with separate stores for:
- Chat: Conversations and selected chat
- Messages: Message history and operations
- Theme: Color and font customization
- UI: Interface state (sidebar, search)
- Calls: Call history management
Edit src/components/color-picker-modal.tsx to add new color options.
Update src/components/accent-color-provider.tsx for theme logic.
Create new pages in src/app/ following Next.js app router conventions.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.