Uchat was the last big product challenge of Track C, the second stage of the Innovation Campus educational program. Our team, Emerald Devs, was invited to accept the battle and create our own messaging app that solves a real-world problem with limited resources using only C programming language. We had 7 weeks (21.10.24-11.12.24) to design and implement the solution.
Our Green Chat is a feature-rich, reliable and user-friendly desktop instant messaging application primarily developed to serve the needs of students of Innovation Campus and its employees. The application provides its users with a single space where students can easily communicate with peers and mentors, reducing the need to juggle multiple communication tools, and fostering a greater sense of belonging within the program.
Design of Green Chat was inspired by ALFA Green LMS.
🗝️ Friendly Sign Up/In: quickly access the chat.
Register or log in to your account with a unique username and secure password. Toggle password visibility and receive feedback messages to guide you through the process.👥 Private Chats and Groups: communicate with different people for different purposes.
Create one-on-one chats and view profile information of the person you are chatting with. Create group conversations and view the group members.😃 Rich Messaging: send not only instant texts, but also files, images, emojis and voice.
Enhance your communication with voice messages, images and files. Bring joy to your conversations with a variety of emojis.🎙️ Voice Calling: stay connected anytime.
Have quick brainstorms and convenient collaborations on pair assignments with voice calls in private chats.✍️ Message Management: edit or delete messages effortlessly.
Have more control over your communication with the ability to edit and delete your messages after sending. Save received files to your computer.🧑 User Management: change your profile description or password.
View and manage your personal profile with options to update your full name, group, and status. Change your password for better security.🤝 Built-In Support: report bugs and suggest improvements.
Tell us your problems and provide feedback directly within the application.- Programming Language: C
- Backend: OpenSSL, SQLite3
- Frontend: GTK3, CSS, GStreamer
- Data Format: cJSON
Step 1: Clone the Repository
Clone the repository to your local machine and navigate to the project directory.
git clone https://github.com/VeronikaSukhonos/uchat.git
cd uchat
Step 2: Build the Project
Make sure that you have GTK3, GStreamer, OpenSSL, and SQLite3 preinstalled on your machine, and compile the application using the make
command.
make
- This will create two programs in the project directory:
uchat
anduchat_server
.
Step 3: Run the Server
Open a terminal in the project directory and start the server.
./uchat_server <port>
- Replace
<port>
with the desired port number the server should listen on (e.g., 8080). - The server will start as the daemon, display its process id and wait for client connections.
Step 4: Run the Client
Open another terminal in the project directory and start the client.
./uchat <server_ip> <port>
- Replace
<server_ip>
with the IP address of the machine running the server (use 127.0.0.1 for local testing). - Replace
<port>
with the same port number used to start the server. - The client will connect to the server and allow interaction.
Step 5. Start Chatting
Use the client to log in or register, and have a seamless experience with the Green Chat!
Step 6. Stop the Server
When you are done, stop the server by terminating the process using the kill
command.
kill <server_process_id>
- Replace
<server_process_id>
with the process id that was displayed earlier.
Developing this project provided us with invaluable hands-on experience, including:
- designing and implementing a client-server architecture for real-time communication.
- managing a database to store and retrieve user and message data.
- creating a responsive and intuitive GUI using GTK3.
- integrating multimedia features like file sharing and voice calling.
- addressing challenges in real-time message synchronization, error handling, and security.
This was fun, exciting and greatly enhanced our understanding of robust software development practices and teamwork!
Check out our presentation for more information!
This project is licensed under the MIT License. See the LICENSE file for more details.