Many people suffer from depression or let their feelings build up, but do not share it. To help with this, we created Vent, which allows you to let out your emotions, or listen to someone who wants to do so, without the fear of being judged by people you know.

What it does

Users sign up relatively anonymously. All they need is a username, email, and password, and the only thing other users can see when they chat is the username. After signing up, a short survey grades certain aspects of users' personalities, which is used to match users with others who match their personality as closely as possible. There are two main buttons: one to be a "Venter," someone who shares their emotions, and one to be a "Listener," someone who lets the other person share their emotions and offers consolation. Users are matched in pairs so that a Venter always gets matched with a Listener. After being matched together, the two users can chat.

How we built it

Vent consists of two parts, a client and a server. For the server side, we used Node.js to create a RESTful web server that communicates with the client. For development purposes, we hosted the Node server on a local machine and then used ngrok to forward it to an externally accessible URL. The server accesses an SQLite database to store user data, and also uses to communicate in real time with the client for the chat function.

We created the client using React Native, which allowed us to create a responsive mobile app using JavaScript. We used a toolchain called Expo, which comes with a very useful tool that allowed us to sync our changes wirelessly from the computer to our phones to test. As previously mentioned, we also used on the client side to implement chat, as well as HTTP requests for other communication with the server, such as creating the user or logging in.

Challenges we ran into

At first, we thought we were going to create a website using HTML & PHP, so two of our members spent several hours on the first day learning HTML basics. We ended up not using HTML at all since we created a mobile app, so we lost a lot of time to that.

More importantly, we ended up deciding to create a mobile app using React Native, a framework that none of us had ever used before. In hindsight, this might have been a bad choice. But regardless, we stuck with it and slowly learned React Native, reading through documentation to try and figure out how it worked. Furthermore, only one of us had knowledge of Node.js, so we all had one or two new frameworks to learn.

Finally, only one of us had prior experience in hackathons, so the environment was something we had to get used to. Although it was somewhat stressful, the pressure motivated us to work.

Accomplishments that I'm proud of

We are proud of being able to create a working mobile app in only twenty-four hours, especially using a language we were unfamiliar with. On top of that, we had to learn UX to create a well-designed interface.

What we learned

We definitely learned a lot about JavaScript by learning React Native. Interestingly, the JavaScript used in React is quite different than the JavaScript used in Node.js and in browsers, because it uses a newer ECMAScript standard, adding features such as async functions and lambdas, which we did not know were features in JavaScript.

What's next for Vent

Currently, the algorithm is a bit unrefined and it could use some work. Some of the questions used in the profile survey are also a bit vague or difficult to interpret, so we might change those. We would also like to improve the UI. Overall, we think the UI is fairly good, but in some places it could use some touching up, as it lacks customization from the default options.

Share this project: