NimbusTalk is a full-stack real-time chat application built with React (Vite), Node.js, Express, MongoDB, and Socket.io. It supports user authentication, real-time messaging, image uploads, and online user tracking.
- User Authentication: Sign up, log in, log out, and update profile.
- Real-Time Messaging: Instant chat using Socket.io.
- Online Users: See who is online in real-time.
- Image Uploads: Upload and share images via Cloudinary.
- Responsive UI: Built with React and Vite for fast, modern interfaces.
- Notifications: Toast notifications for user feedback.
- Frontend: React, Vite, Zustand, Axios, React Hot Toast, Socket.io-client
- Backend: Node.js, Express, MongoDB, Mongoose, Socket.io, Cloudinary
- Other: Cloudinary for image storage, JWT for authentication
Chat-App/
│
├── backend/
│ ├── .env
│ ├── src/
│ │ ├── controllers/
│ │ ├── lib/
│ │ ├── middleware/
│ │ ├── models/
│ │ ├── routes/
│ │ └── index.js
│ └── package.json
│
├── frontend/
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ ├── lib/
│ │ ├── pages/
│ │ ├── store/
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── package.json
│ └── README.md
│
└── README.md
- Node.js (v16+ recommended)
- npm or yarn
- MongoDB Atlas account (or local MongoDB)
- Cloudinary account
-
Clone the repository:
git clone https://github.com/your-username/nimbustalk.git cd nimbustalk -
Install dependencies:
npm install --prefix backend npm install --prefix frontend
-
Configure environment variables:
Create a
.envfile in thebackenddirectory:MONGODB_URI=your_mongodb_uri PORT=5001 JWT_SECRET=your_jwt_secret CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret NODE_ENV=development
-
Start the backend:
npm start --prefix backend
-
Start the frontend:
npm run dev --prefix frontend
-
Open your browser and go to http://localhost:5173 (or the port Vite shows).
- Sign Up: Create a new account.
- Log In: Access your chat dashboard.
- Chat: Send messages in real-time.
- Profile: Update your profile and upload an avatar.
- Logout: Securely log out.
Set these in backend/.env:
MONGODB_URI- MongoDB connection stringPORT- Backend server portJWT_SECRET- Secret for JWT authenticationCLOUDINARY_CLOUD_NAME,CLOUDINARY_API_KEY,CLOUDINARY_API_SECRET- Cloudinary credentialsNODE_ENV-developmentorproduction
Pull requests are welcome! For major changes, please open an issue first.
This project is licensed under the MIT License.