CalHacks is an event that brings together 1500 undergraduate students from all over the country for one weekend. In such a short period, people have difficulty finding the time or the space to meet all their hackers because they are spending all their time coding. Our website makes it quick and easy to interact with a variety of people from the event. In addition, the members of our community who are introverts or have a hard time initiating a conversation benefitted from Calfessions because they now have the opportunity to meet people in a less risky environment. Calfessions provides CalHackers an extra space for bonding and interaction among friends.

What it does

We have developed a website that allows Calhacks participants to share anonymous confessions. After logging into Facebook, a person may post their confession and upvote or downvote previous confessions. Confessions may range from romantic declarations to embarrassing stories, and from compliments to seeking or responding to advice. In a stressful event, such as CalHacks, it is hard to socialize with everyone. Through Calfessions, people can bond over similar questions, thoughts, and emotions – making the event come together as one community.

How we built it

We created the structure of the site using HTML, and made our website interactive with the user using JavaScript. We used CSS and Bootstrap to make the site a user-friendly interface. Within Javascript we implemented a function that takes in user confessions, and using Node JS we uploaded past confessions from the database we used – a mongoDB database on the Parse server. We integrated Facebook's login API in order to allow users to add a confession, upvote/downvote posts, and post a maximum of 5 posts in an hour in order to limit spam.

Challenges we ran into

Learning and using languages we were not very experience in such as JavaScript and jQuery was a stressful yet rewarding experience. We ran into some trouble trying to get the Facebook login to work in our website, getting the Twillio API into our product, getting the up and down vote buttons to work, and adding a new entry and having it connect to our database. We ran into several challenges with people hacking our site when we launched it, and had to figure out how to increase the security on our site.

Accomplishments that we're proud of

In the first 24 hours of our launch, we had over 100 active users on our website, and over 100 confessions in the first 10 minutes alone. We learned how to make a smart system with remarkable security due to the immense amount of hack attempts. We integrated Twilio and Facebook's login APIs without having any prior knowledge of them. We learned how to debug and find errors in our code very quickly and efficiently, through using aids such as Chrome developer tools for JavaScript.

What we learned

We learned how to create an end to end interactive website that can store data on a server. We became more knowledgable in creating a clean and sleek UI/UX design. We also learned how to integrate APIs into JavaScript that we were able to use in our product, such as Twillio and Facebook's login API. This process helped us grow as coders teaching us how to work in a team dynamic as well as how to learn and grow from others' abilities and skills. Even though this hackathon was very challenging, the difficulty allowed us to learn so much about web development even though some of us already had prior experience. Those that had no knowledge of web development also gained so much from this experience having built and created their first website.

What's next for Calfessions

Calfessions was successfully launched at CalHacks, but we wish to increase the amount of users on our site by creating more confession pages for all events nearby in a specific geographic range. We also implemented the Twilio API in order to allow users to send an anonymous confession to a specific phone number, however we have yet to figure out how to ensure the person does not get spammed. We also want to use the Twilio API to allow users to log in with their phone number instead of Facebook. We implemented an upvote/downvote system, but have to figure out how to connect that with our database so that the ranking stays when the page is refreshed.

Share this project: