Inspiration

The inspiration behind Duomegle stems from a dire need to connect people from different parts of the world. I wanted to create a platform that bridges the gaps between those who speak different languages. When I was younger, I struggled to make friends especially since I had mild social anxiety disorders, and poor English. However, the online world helped to connect me with a vast amount of opportunities. When I went to go play CoD on my PC (even though I was much too young to do that) most people spoke English, which I couldn’t understand too well. Some people even spoke some other foreign languages that I didn’t understand, and it just made it very difficult to play. Following, a tumor diagnosis that left me hospitalized for one month as well as a nationwide lockdown, I now know how important socialization is for everyone. Hence, I was inspired to create an app that made socializing easier for all of us.

What it does

This app allows people of from different parts of the world communicate with each other and learn languages together. With an autotranslate chatbar, two people can communicate in any language together. Additionally, the implementation of video chat that can be turned on or off allows for two random participants to get to maintain privacy. With no user accounts, the app is 100% anonymous kind of like Omegle. On top of that, all the user ends have been encrypted, so one can’t access the server. The server also only limits to two people per conversation. None of the chats nor conversations are recorded by the app, so it maintains ultimate privacy. Features I implemented:

  • Passwordless Sign-in

In order to process as little information as possible, I simply ask for a pen-name in order to anonymize the user.

  • Room Creation

Room creation was done via Express.js. It allows for a “RESTful” experience for webapps as it is designed for webapps and APIs.

  • Room Capacity Limit

Room capacity limit uses simple embedded JavaScript logic in order to check whether or not there are more than 2 people in the room.

  • Auto-translation

Auto-translation was implemented using embedded JavaScript APIs retrieved from Google Translate that allowed for the smooth translation of all the content on the page immediately.

  • Routing

Routing was performed via socket.io, and it allowed for me to systematically create all the functionality of the webapp.

  • Auto assignment

The assignment of users into a room was fairly simple as each room had their own language and their own number, so as long as there was a match for a room that was open, the person could be quickly assigned.

  • Speed Dating

Auto assignment allowed for the easy implementation of speed dating in the webapp. Because the users were easily assigned it would allow for the display of two webcams and the assignment of two microphones into the app.

  • Live Server

Once the server is running, everything is happening in real time from the cameras, to the microphones, to the user decisions. This choice made was what allowed this project to be considered a “dynamic” webapp.

Challenges we ran into

One of the challenges I faced was simply coming up with ideas that actually worked, were easy to implement, and fit the scope of the challenge. This one was difficult as I had to think a little bit outside the box, but I got it to work in the end… I’m not used to using Express.js for conversational webapps like this.

What we learned

I’m proud that I learned how to code using four new frameworks and three new languages during this hackathon. I learned how to connect APIs as well as how to design and storyboard an app. Khosraw gave me a couple tips for styling the app that I kept in mind. Neil coached me through the whole process and made sure that I was on track to finish. Neal helped me validate my submission and verify that it was valid.

What's next for Duomegle

Having had to restart my project quite a few times, I think this project could use a lot of work. I will likely give all the revenue generated from this app away in a YouTube giveaway or as a charity donation.

Share this project:

Updates