This project is a chat application where users can talk with each other directly or create groups and chat with group members.
- User authentication and authorization - Login, Registration, Forget Password, Reset Password
- Ability to create new groups [chat rooms] by users.
- Ability to search and add new members in ones group.
- Ability to have private group chat between members of the groups. Rooms in socket.io.
- React typescript to build frontend UI.
- Material UI/Chakra UI/SCSS for designing the layout.
- Socket.io-client to implement client side socket.io functionalities.
- JWT Authorization
- Express for backend api.
- Mongoose ORM for modelling data for users and chats.
- MongoDB for storing data.
- socket.io for real-time bidirectional communication.
- TypeScript for "failing fast" during development.
- Chat apps require user authentication and authorization. So, no page can be visited without first signing-up with phone and otp, remain login forever unless logout, and receiving a jwt token for authorization.
- The MVP of this project is user auth, user profile & settings, chat rooms, and direct messages between 2 users.
- User profile and settings will be simple - edit username, profile pic, and delete account.
- There will be no storage on server of messages. This will be stored in client side with backup feature to google drive.
- Hence, on the MongoDB side, we store users profile data.
- TDD methodology is followed as closely as possible in order to develop this application.
- Used jest/enzyme for unit testing.
- Used cypress for E2E testing.
- Frontend is hosted on Vercel with its CI/CD setup out of the box.
- Backend is deployed on Heroku with its CI/CD setup out of the box.
- Database in deployed on MongoDB Atlas Cloud.
https://ibmessenger.vercel.app
MIT License