Cling - DevPost Submission
Inspiration
The inspiration for Cling came from personal experiences working in remote teams with members from diverse backgrounds. Often, team communication took place via platforms like Slack, and not everyone was proficient in English. This language barrier posed a significant challenge, as team members struggled to understand each other effectively. Cling was born out of the desire to overcome this communication hurdle and foster better collaboration among team members, regardless of their native languages.
What it does
Cling is a real-time CLI chat application that enables users to communicate seamlessly, breaking down language barriers. It leverages OpenNMT ArgoTranslate to translate messages in real-time, using the Ably Realtime Framework to power chatrooms and WebSockets. Users can chat in multiple languages, including English, Hindi, French, German, Italian, Polish, and Spanish, enhancing global connectivity and collaboration.
How I built it
I chose Golang for Cling because of its popularity in CLI programming. To build the chat application, I utilized the Ably Go-SDK, enabling the creation of chatrooms and implementing WebSockets for real-time communication. For CLI development, I relied on the Cobra library, streamlining the process of building a user-friendly command-line interface. To add text translation capabilities, I integrated the open-source LibreTranslate library, which I self-hosted on our machine using Docker, allowing us to perform translations efficiently.
Challenges I ran into
Building Cling presented several challenges. Firstly, I had limited experience with websockets, and yet I needed to implement them for real-time communication. Additionally, I had a tight deadline and only a couple of days to complete the project(Because I got to know about the hackathon a few days back), which added pressure to ensure I delivered a functional application on time. I also initially struggled with setting up Ably channels but overcame this challenge by studying the Ably Go-SDK documentation.
Accomplishments that I'm proud of
I was successful in developing a fully functional project within a tight timeframe. Building a project that solves a genuine problem faced by many people worldwide is a significant accomplishment for me. Cling has the potential to make a real difference in cross-cultural communication and collaboration.
What I learned
Throughout the development of Cling, I learned a great deal about websockets and pub-sub systems, gaining a deep understanding of how real-time communication works. I also acquired valuable insights into effective time management when working on fast-paced projects.
What's next for Cling
In the future, I plan to expand Cling into a full-fledged TUI (Text-Based User Interface) application with a polished and user-friendly interface within the terminal. Additionally, I aim to improve the codebase by implementing best practices and enhancing overall project scalability.

Log in or sign up for Devpost to join the conversation.