Chatzy is a real-time chat platform that enables users to send messages, share images, and engage with an AI-powered chatbot. Built with the MERN stack, Socket.io, and Docker, it offers secure OTP authentication, user search, online status filtering, and customizable themes (32+ options) for a seamless experience.
π Live Demo: Chatzy
π Source Code: GitHub
π³ Docker Hub: suyash310
- π¬ Real-Time Messaging β Instant text & image sharing via Socket.io.
- π€ AI Chatbot β Integrated Gemini API for interactive conversations.
- π User Search & Filters β Find users and filter by online status.
- π Secure Authentication β OTP-based verification for enhanced security.
- π Media Uploads β Users can update/delete profile images via Cloudinary.
- π¨ Customization β Choose from 32+ themes with Daisy UI & TailwindCSS.
- π³ Containerized with Docker β Ensures scalability and efficient deployment.
- Frontend: React.js, TailwindCSS, Daisy UI
- Backend: Node.js, Express.js, MongoDB, Brevo-api
- Real-Time Communication: Socket.io
- Authentication: OTP Verification
- AI Integration: Gemini API
- Media Management: Cloudinary
- Deployment: Docker, Render
Choose one of the following methods based on your needs:
- Node.js (v18 or higher) - Required for Method 1
- Docker & Docker Compose - Required for Methods 2 & 3
- MongoDB - Local installation or MongoDB Atlas account
- Cloudinary Account - For image uploads
- Brevo Account - For OTP email delivery
- Google Gemini API Key - For AI chatbot
Best for: Active development and debugging
1. Clone the repository
git clone https://github.com/EcstaticFly/Chatzy.git
cd Chatzy2. Setup Server
cd server
npm install
# Create .env file
touch .env3. Configure server/.env
MONGODB_URL=your_mongodb_url
CORS_ORIGIN=your_cors_origin
JWT_SECRET=your_jwt_secret
NODE_ENV=development
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
MAIL_USER=your_mail_to_send_otp
BREVO_API_KEY=your_brevo_api_key
CHATBOT_API_KEY=your_gemini_chatbot_api_key4. Setup Client
cd ../client
npm install5. Start the Application
Open two terminal windows:
Terminal 1 - Start Server:
cd server
npm run devTerminal 2 - Start Client:
cd client
npm run dev6. Access the Application
- Client: http://localhost:5173
- Server API: http://localhost:5000
- Press
Ctrl + Cin both terminal windows
Best for: Testing in containerized environment with source code access
1. Clone the repository
git clone https://github.com/EcstaticFly/Chatzy.git
cd Chatzy2. Configure Environment
cd server
touch .env3. Configure server/.env
MONGODB_URL=your_mongodb_url
CORS_ORIGIN=your_cors_origin
JWT_SECRET=your_jwt_secret
NODE_ENV=development
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
MAIL_USER=your_mail_to_send_otp
BREVO_API_KEY=your_brevo_api_key
CHATBOT_API_KEY=your_gemini_chatbot_api_key4. Build and Start Containers
cd .. # Back to root directory
docker compose up --buildOr run in detached mode (background):
docker compose up --build -dif already built once:
docker compose up -d5. Access the Application
- Client: http://localhost:5173
- Server API: http://localhost:5000
- MongoDB: localhost:27017
# Stop and remove containers (keeps data)
docker compose down
# Stop and remove containers + volumes (deletes data)
docker compose down -vBest for: Quick deployment without source code, production environments
1. Download Production Compose File (docker-compose.prod.yaml): Download
# Create a directory
mkdir chatzy-app
cd chatzy-app
# Create docker-compose.prod.yaml inside this folder2. Create Environment Configuration
mkdir server
cd server
touch .env3. Configure server/.env
MONGODB_URL=your_mongodb_url
CORS_ORIGIN=your_cors_origin
JWT_SECRET=your_jwt_secret
NODE_ENV=development
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
MAIL_USER=your_mail_to_send_otp
BREVO_API_KEY=your_brevo_api_key
CHATBOT_API_KEY=your_gemini_chatbot_api_key4. Pull and Start Containers
cd .. # Back to root directory
docker compose -f docker-compose.prod.yaml up -d5. Access the Application
- Client: http://localhost:5173
- Server API: http://localhost:5000
# Stop and remove containers (keeps data)
docker compose down
# Stop and remove containers + volumes (deletes data)
docker compose down -vContributions, issues, and feature requests are welcome!
Feel free to fork the repo and submit a pull request.
This project is licensed under the GNU GENERAL PUBLIC LICENSE v3.
For inquiries, reach out to me at Suyash Pandey.