Skip to content

Instant messaging application in C developed for the Innovation Campus educational program

License

Notifications You must be signed in to change notification settings

VeronikaSukhonos/uchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Uchat | Green ✿ Chat

logo

📬 Overview

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.

🌟 Features

🗝️ 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.
registration-login
👥 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.
chat creation
group creation
😃 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.
messaging
🎙️ Voice Calling: stay connected anytime. Have quick brainstorms and convenient collaborations on pair assignments with voice calls in private chats.
voice call
voice call
✍️ 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.
message management
🧑 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.
profile update
password update
🤝 Built-In Support: report bugs and suggest improvements. Tell us your problems and provide feedback directly within the application.
support

💻 Technology Stack

  • Programming Language: C
  • Backend: OpenSSL, SQLite3
  • Frontend: GTK3, CSS, GStreamer
  • Data Format: cJSON

🚀 How to Use

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 and uchat_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.

🌱 Reflection

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!

🙌 Our Team

Check out our presentation for more information!

📜 License

This project is licensed under the MIT License. See the LICENSE file for more details.

About

Instant messaging application in C developed for the Innovation Campus educational program

Topics

Resources

License

Stars

Watchers

Forks