- 35+ Beautiful Themes - Choose from a wide variety of stunning themes including light, dark, and colorful options
- Responsive Design - Works seamlessly on desktop, tablet, and mobile devices
- Smooth Animations - Engaging micro-interactions and transitions throughout the app
- Professional Welcome Page - Showcase features with interactive elements and live previews
- Instant Messaging - Real-time message delivery with Socket.io
- Online Status - See who's online with live presence indicators
- Message History - Persistent message storage with MongoDB
- Smooth Scrolling - Auto-scroll to new messages with smooth animations
- Image Sharing - Upload and share images with preview functionality
- Image Optimization - Automatic image processing with ImageKit integration
- Drag & Drop - Easy file upload with modern drag-and-drop interface
- JWT Authentication - Secure token-based authentication
- Password Strength Validation - Enforced strong password requirements with real-time feedback
- Secure File Upload - Safe image handling with validation
- HTTP-Only Cookies - Secure session management
- Theme Customization - Live preview and easy theme switching
- Profile Management - Update profile picture and personal information
- Real-Time Settings - Changes apply instantly without page refresh
- React 19 - Modern React with hooks and functional components
- Vite - Lightning-fast build tool and development server
- TailwindCSS 4 - Utility-first CSS framework
- DaisyUI - Beautiful component library for Tailwind
- Socket.io Client - Real-time communication
- React Router - Client-side routing
- Zustand - Lightweight state management
- React Hot Toast - Elegant notifications
- Lucide React - Beautiful icon library
- Node.js - JavaScript runtime
- Express.js - Web application framework
- Socket.io - Real-time bidirectional communication
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - JSON Web Tokens for authentication
- bcryptjs - Password hashing
- ImageKit - Image optimization and CDN
- CORS - Cross-origin resource sharing
- Node.js (v18 or higher)
- MongoDB (local or Atlas)
- npm or yarn
-
Clone the repository
git clone https://github.com/Rupayan2005/NeuroChat.git
-
Install backend dependencies
cd backend npm install -
Install frontend dependencies
cd ../frontend npm install -
Environment Setup
Create
.envfile in the backend directory:MONGODB_URI=mongodb://localhost:27017/neurochat PORT=5001 JWT_SECRET=your_super_secret_jwt_key_here NODE_ENV=development # ImageKit Configuration (Optional - for image uploads) IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key IMAGEKIT_PRIVATE_KEY=your_imagekit_private_key IMAGEKIT_URL_ENDPOINT=your_imagekit_url_endpoint
-
Start the development servers
Backend server:
cd backend npm run devFrontend server (in a new terminal):
cd frontend npm run dev -
Open your browser
- Frontend: http://localhost:5173
- Backend API: http://localhost:5001
neurochat/
βββ backend/
β βββ src/
β β βββ controllers/ # Request handlers
β β βββ middleware/ # Custom middleware
β β βββ models/ # MongoDB schemas
β β βββ routes/ # API routes
β β βββ lib/ # Utilities (DB, Socket, ImageKit)
β β βββ index.js # Entry point
β βββ package.json
β βββ .env
βββ frontend/
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ store/ # Zustand stores
β β βββ lib/ # Utilities
β β βββ constants/ # App constants
β β βββ App.jsx # Main app component
β βββ public/
β βββ package.json
β βββ vite.config.js
βββ README.md
- Interactive feature showcase with auto-rotating highlights
- Live chat interface preview
- Gradient backgrounds and smooth animations
- Call-to-action buttons with hover effects
- Modern login/signup forms with validation
- Password strength meter with real-time feedback
- Secure JWT token management
- Automatic redirect after authentication
- Real-time message synchronization
- Smooth scrolling with auto-scroll to new messages
- Image upload with drag-and-drop support
- Online/offline user status indicators
- Message timestamps and delivery status
- 35+ themes with live preview
- Theme categorization (Light, Dark, Colorful)
- Search and filter functionality
- Real-time theme switching
- Profile picture upload and management
POST /api/auth/signup- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/check- Verify authenticationPUT /api/auth/update-profile- Update user profile
GET /api/messages/users- Get all users for sidebarGET /api/messages/:id- Get messages with specific userPOST /api/messages/send/:id- Send message to user
connection- User connects to socketnewMessage- New message broadcastgetOnlineUsers- Online users list updatedisconnect- User disconnects
- Add theme name to
frontend/src/constants/index.js - Theme will automatically appear in settings
- DaisyUI handles theme styling automatically
All components are built with TailwindCSS and DaisyUI classes, making them highly customizable and maintainable.
- Build the frontend:
cd frontend npm run build - Deploy the
distfolder to your hosting service
- Set up environment variables
- Deploy from the
backenddirectory - Ensure MongoDB connection is configured
- Create a MongoDB Atlas cluster
- Update
MONGODB_URIin environment variables - Configure network access and database users
We welcome contributions! Please follow these steps:
- 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 the existing code style
- Add comments for complex functionality
- Test your changes thoroughly
- Update documentation if needed
This project is licensed under the MIT License - see the LICENSE file for details.
- React Team - For the amazing React library
- Tailwind Labs - For TailwindCSS and the ecosystem
- DaisyUI - For beautiful, accessible components
- Socket.io - For real-time communication
- MongoDB - For the flexible database solution
- Lucide - For the beautiful icon set
Made with β€οΈ by the Shadow
β Star this repo if you found it helpful!