Kim Chat is a real-time chat application designed for fast, lightweight, and responsive communicationβsimilar to WhatsApp or Discord. Built with React, Node.js, Express, Socket.io, and MongoDB, it supports private and group messaging, real-time updates, and modern UI/UX.
- β Real-time chat using WebSockets (Socket.io)
- β User authentication (login & signup)
- β Private and group messaging
- β Responsive UI across devices
- β Scalable architecture with MongoDB for storage
- β Built with a modern MERN stack
| Layer | Technology |
|---|---|
| Frontend | React, Vite |
| Backend | Node.js, Express |
| Real-time | Socket.io |
| Database | MongoDB (Mongoose) |
| Styling | CSS Modules / Tailwind |
Ensure you have the following installed:
- Node.js (v16 or above)
- npm
- MongoDB (local or cloud instance)
git clone https://github.com/frustateduser/kim_chat.git
cd kim_chatcd kim_chat_backend
npm installCreate a .env file in the backend root:
PORT = 3000
MONGO_URI = mongodb://localhost:27017/kim_chat
JWT_SECRET = @KIM_chat.secret-k3y
CLIENT_URL = http://localhost:5173Start the backend server:
npm startcd ../kim_chat_frontend
npm installCreate a .env file in the frontend root:
VITE_REACT_APP_SIGNUP_API_URL=http://localhost:3000/api/auth/signup
VITE_REACT_APP_LOGIN_API_URL=http://localhost:3000/api/auth/login
VITE_REACT_APP_PROFILE_API_URL=http://localhost:3000/api/user/profile
VITE_REACT_APP_FETCH_CHATS_API_URL=http://localhost:3000/api/chat/users/
VITE_REACT_APP_SEARCH_USER_API_URL=http://localhost:3000/api/chat/search
VITE_REACT_APP_FETCH_CONVERSATION_API_URL=http://localhost:3000/api/chat/history/
VITE_REACT_APP_BACKEND_URL=http://localhost:3000Start the backend server:
npm run devOpen the app in the browser:
http://localhost:5173/
kim_chat/
βββ kim_chat_backend/
| βββ node_modules/
| βββ src/
| | βββ config/
β | βββ controllers/
| | βββ middleware/
β | βββ routes/
β | βββ models/
| | βββ socket/
β | βββ server.js
| βββ .env
| βββ .gitignore
| βββ package-lock.json
| βββ package.json
| βββ README.md
|
βββ kim_chat_frontend/
| βββ node_modules/
| βββ public/
| βββ src/
| | βββ api/
| | βββ assets/
| | βββ components/
| | βββ pages/
| | βββ style/
| | βββ index.css
| | βββ main.jsx
| βββ .env
| βββ .gitignore
| βββ eslint.config.js
| βββ index.html
| βββ package-lock.json
| βββ package.json
| βββ README.md
| βββ vite.config.js
βββ .gitattribute
βββ README.md
- β Add message persistence and history
- β Show online/offline user status
- β Media and file sharing
- β Read receipts & typing indicators
- β Dark/light theme toggle
- β Unit and integration testing
- β Audio and Video Chat
- β Group Chats
Contributions are welcome! See Contribution guidelines for more info
- Fork the repository
- Create a new branch:
git checkout -b feature-name - Commit your changes:
git commit -m "Added feature" - Push to the branch:
git push origin feature-name - Open a pull request
This project is open source under the MIT License.
Inspired by modern chat platforms like Discord and WhatsApp. Built for learning, experimentation, and real-world deployment.
For questions or feedback, open an issue or reach out via GitHub.
Before pushing your changes to a GitHub remote branch, it is recommended to run all workflows locally to ensure everything works as expected.
-
Install Dependencies:
- Navigate to the respective directories and install the required dependencies:
cd kim_chat_frontend npm install cd ../kim_chat_backend npm install
- Navigate to the respective directories and install the required dependencies:
-
Run ESLint Workflow:
- For the frontend:
cd kim_chat_frontend npx eslint . --ext .js,.jsx,.ts,.tsx
- For the backend:
cd ../kim_chat_backend npx eslint . --ext .js
- For the frontend:
-
Run Tests (if applicable):
- If your project includes tests, run them locally:
npm test
- If your project includes tests, run them locally:
-
Build the Project:
- Ensure the project builds successfully:
cd kim_chat_frontend npm run build cd ../kim_chat_backend npm run build
- Ensure the project builds successfully:
-
Verify Other Workflows:
- If there are additional workflows, follow their specific instructions to run them locally.
By following these steps, you can ensure that your changes are ready for submission and meet the project's quality standards.