Inspiration

  • The inspiration for this project really comes from my obsessive use of YouTube as a form of entertainment. I always wished I could look at stats and compare data with other people that also frequents YouTube. I wanted there to be a place where people can connect with each other based on similar interests on the videos they consume on YouTube. Currently, YouTube does not really provide any means of finding individuals that you might have a lot in common with. We wanted to create something where people can gather and share interests.

What it does

  • Coterie first authenticates a user with Google's OAuth2 flow. Then, our app retrieves data about the user's YouTube activity, from their liked videos to their most relevant subscriptions. Finally, Coterie generates a custom profile that can be shared and compared with other users. Find a friend with similar interests, or discover a new an exciting channel - the possibilities are unlimited!

How we built it

  • Backend: Python and Flask
  • Frontend: HTML, CSS, and Bootstrap
  • Database: SQLite
  • Password hashing: Bcrypt

Challenges we ran into

  • Our app accesses sensitive user data and we did not have time to go through Google's app verification process. Therefore, Google prevented us from accepting external users, and we had to manually test users to the API console using their email address. Unfortunately, this meant that we couldn't deploy the app, because no one would be able to test it without giving us their email address first.
  • Google would not accept ad-hoc (self-signed) SSL certificates, so we had a problem gaining HTTPS authentication.

Accomplishments that we're proud of

  • We were able to successfully pull data from Youtube API ver 3 and collect data about individuals that were very useful in displaying that data. We were able to apply that data in different ways to compare individual users and also create a database.
  • In the past, we've spent a lot of time on the backend and not enough on crafting the UX/UI aspects of our projects. This time, we learned how to implement fun CSS features like hover dropdowns. We are also proud that we were able to add tab navigation without refreshing the page, which was a challenge to implement.

What we learned

  • We learned about the YouTube API ver 3 and all the different data that can be collected from it. Definitely looking forward to working with it more in the future.
  • Data security! Google had many procedures, such as defining scopes, that we had to complete before we could obtain access to user data. We also implemented an OAuth2 flow for the first time.
  • We also learned a lot about user management using Flask libraries. We preserved state data between routes by using Flask's session tool. Furthermore, we used form libraries like flask-wtforms to validate user input, such as checking if a user's username and password match a record in the database when they are logging in.

What's next for Coterie

  • We are hoping to add more comparable features, such as a Socials tab where you can message users to make new friends. We would also love to launch the website as a functioning site that everyone can use. At the moment it is only accessible to localhost due to Google taking 2-3 days to verify a website that use OAuth2.

Built With

Share this project:

Updates