Commune is a real-time chat application designed to facilitate seamless communication among users. With a sleek and intuitive user interface, secure login options, and a range of features including real-time messaging, file/image sharing, and group chats, Commune offers a comprehensive platform for connecting with others.
- Beautiful UI: Commune boasts an aesthetically pleasing user interface designed to enhance user experience.
- Secure Login: Users can securely log in using email/password credentials, GitHub, or Google ID.
- Real-Time Messaging: Experience instant messaging with real-time updates for smooth communication.
- Profile Picture Update: Users have the option to update their profile pictures to personalize their accounts.
- Online/Offline Status: Stay updated on the availability of other users with online/offline status indicators.
- File/Image Sharing: Share files and images effortlessly within chats.
- Group Chats: Engage in group conversations with multiple users for collaborative discussions.
- Message Seen Status: Know when your messages have been seen by recipients for improved communication.
- Deleting Chats: Easily delete chats to manage your conversation history.
- Toast Messages: Receive toast notifications for important events and updates.
Commune is implemented using the following technologies:
- Next.js 14: A React framework for building server-side rendered applications.
- Tailwind CSS: A utility-first CSS framework for creating custom designs.
- TypeScript: A statically typed superset of JavaScript for enhanced code quality and reliability.
- React Toast: A library for displaying toast notifications in React applications.
- Custom React Hooks: Utilized for managing state and reusing logic across components.
- Headless UI Library: A collection of accessible, composable React components for building UIs.
- Next Server Actions: Leveraged for server-side logic and handling API requests in Next.js applications.
- MongoDB: A NoSQL database used for storing application data.
- Prisma: An ORM (Object-Relational Mapping) tool for working with databases in TypeScript.
- Pusher JS: A library for integrating real-time web functionalities into applications using WebSockets.
- Next Auth: A complete authentication solution for Next.js applications.
- Cloudinary: A cloud-based image and video management platform used for file sharing.
To run Commune locally, follow these steps:
- Clone the repository to your local machine
git clone https://github.com/dipesh2508/commune
. - Install dependencies using
npm install
. - Set up the required environment variables, including database credentials and authentication keys.
- Run the application using
npm run dev
. - Access the application in your browser at
http://localhost:3000
.
Contributions to Commune are welcome! If you'd like to contribute, please fork the repository and submit a pull request with your changes.
This project is licensed under the MIT License.
Commune was inspired by the need for a reliable and feature-rich real-time chat application. We would like to thank the open-source community for their invaluable contributions to the technologies used in this project.
Thank you for using Commune! We hope you enjoy using our application to connect with others in real-time. If you have any questions or feedback, please don't hesitate to reach out.