Inspiration

Is there a new passion or hobby you've been dying to explore, but are struggling to meet others who share the same interest?

Do you feel like you spend too much time interacting with others on social media, instead of hanging out in person?

A lot of students might share similar interests and could do something together, but have no way of reaching out to each other. That's where bunch comes in. bunch is a social platform where UMass students can create and manage events, follow other students, see upcoming events matching their interests, and join in on the fun.

What it does

bunch is a website designed for all college students. Users first create an account login using their UMass email, first and last name, and password. Users can then join events as long as they have space, or remove themselves if they're no longer interested.

Users can also create their own events and manage event details. Events have a banner image, name, description, start and end time, location, and a maximum number of people. Hosts can also see who is planning to attend the events or delete the event if they choose. Users also have two profile dashboards: one for events they're hosting, and one for events they're attending. Past events are also shown.

How we built it

The frontend runs using React.js, the backend using node.js and express, and the database using mongoDB Atlas. We first made very basic template code for the frontend, and then developed the frontend and backend asynchronously, syncing the REST calls to achieve a working app. We then stylized the website more and developed extra features in the backend.

Challenges we ran into

One of the hardest challenges was deciding how to store passwords securely. In order to store passcodes securely, the string had to be converted to a hash code on the client side and then sent to the server to be stored in the database. However, we also made sure a passcode could never be retrieved back from the server, so when logging in the string is first sent to the server, and then converted and compared in the server. This way there is no way to exploit the security of the website. The Atlas link is completely hidden from the GitHub or anyone on the website.

Another difficult challenge was setting up schemas for all our objects in Node. A lot of our objects relate to each other so it's tricky to keep track of how the database functions. We designed these relationships for quick data sorting based on the user's preferences for events.

Another obstacle we encountered was setting up cookies so the user could have a personalized session in the browser. We initially tried to handle cookies from the server side, but we eventually learned that we could set up cookies on the client side.

Accomplishments that we're proud of

We're very proud of the ability to customize events quickly, delete events, and see a dashboard of events you're hosting or attending. After the events happen, these dashboards can act as a time capsule of memories.

We're also extremely proud of how far we've come in our technology skills and relationship as friends. We're all freshmen at UMass and this is everyone's first hackathon. We were very nervous, feeling overwhelmed and under-experienced before the event. We also barely knew each other and had met just a few weeks before. Now, we have no doubt we'll be friends for a long time and will work together on many more projects. We are very excited for the future.

What we learned

Designing backend and frontend asynchronously makes it extremely difficult to integrate later on. This method also requires detailed planning and tight communication between team members. We were only able to succeed thanks to constant communication and brainstorming sessions (while eating). In general, it's much easier to complete the frontend first and then start the backend. Our team had to do both at the same time to achieve a lot of features within a short time limit.

What's next for bunch:

-Social Engagement: Our first step is to add a way for users to ask questions about an event directly on the website on an event page. We would also like to add custom profile pictures and descriptions for users. However, we explicitly want to reduce the online engagement aspect of bunch, to make it stand out from other social media. The goal of the app is to get users to meet up in person easily, instead of spending time online. Therefore, we would never add a way to see other people's followers, what events other people are going to, or a like/comment feature under events.

-Event History: Your event history is for private use only, like a personal journal to look back at your college memories. We could add a way to add extra photos and text about past events to improve the event history feature.

-Sorting and Filtering: We created sorting and filtering options in the backend, but we would like to integrate them into the frontend in the future. We would allow users to choose events based on upcoming dates, tags, or followers.

-Security: We want to implement email verification for creating accounts, and possibly a 2-factor authentication system for login. We would also make it possible for admins to moderate and ban user accounts.

-Repeated Events: We would add a way to make events repeat at a certain time automatically, and let the user choose the duration between each.

-Platform: Adding a mobile version of the website is a top priority, as well as developing a mobile app version with Reach Native for App Store and Google Play.

-AI Integration: We would like to add a way for events to be recommended for users outside of just tags by using an algorithm depending on past events. AI could also be used to automatically tag events based on their name, description, and image. In the future, it could also help users come up with new event ideas based on their past interests.

-Revenue: If we wanted to generate revenue, we would implement a banner ad at the bottom of the screen. We could also create a cheap option for lifetime ad-free access to the website.

-Scalability: This website could easily be duplicated for other campuses, or we could ask users for location and filter events by proximity to a user.

Share this project:

Updates