Inspiration

I was tired of spending forever scrolling through Netflix with friends, only to give up or watch something nobody truly enjoyed. Streaming platforms like Netflix are great for individuals, but they fall short when it comes to helping groups decide together, and I wanted to fix that.

What it does

WatchTogether is a social platform designed to end group conflicts. It allows friends to collaboratively build watchlists, vote on what to watch next, and discuss content in real-time. Through a centralized dashboard, it features shared watchlists, an AI-powered group recommendation engine, and social discovery tools to make finding the perfect movie a shared, enjoyable experience.

How I built it

The backend is built with Flask and SQLAlchemy, providing a robust API and secure authentication. The frontend uses HTML, CSS (Bootstrap), and JavaScript for a modern, responsive UI. Content data is sourced from The Movie Database (TMDB) via API integration. The recommendation engine uses Python and scikit-learn for collaborative filtering, and the platform supports group management, notifications, and analytics. All data is stored in a SQLite database (with support for PostgreSQL/MySQL in production).

Key technologies:

  • Flask, SQLAlchemy, Flask-Login, Flask-WTF
  • TMDB API integration
  • Bootstrap, Font Awesome, Jinja2 templates
  • Python, scikit-learn, numpy

Challenges I ran into

  • Balancing Group Preferences: The key challenge was designing a recommendation algorithm that didn't just average individual tastes but identified the best for groups too. I addressed this by weighting user preferences and implementing a "dissatisfaction score" to avoid picks that one person would strongly dislike.
  • Intuitive Social Design: I struggled to integrate social features without cluttering the UI. Through several design changes, I focused on a minimalist chat interface.
  • Scope Management Under Deadline: Delivering the core features within the timeframe required careful prioritization. I used a proper plan to focus on the Minimum Viable Product (MVP)—group watchlists, recommendations and the voting system putting more complex features for future development.

Accomplishments that I'm proud of

  • Launched a Functional Real-Time Prototype: I successfully built a live prototype where users can create groups, add movies, and vote simultaneously, with all interactions updated across all clients in real-time.
  • A Group-Based Recommendation Engine: I'm proud of developing a recommendation system from that goes beyond individual suggestions. In my tests, it consistently outperformed simple "most-watched" suggestions in satisfying a diverse user group.
  • A Clean and Modern UI/UX: I designed and implemented a user interface that friends found intuitive and genuinely fun to use during initial feedback sessions.

What I learned

  • The Nuances of Group AI: I learned that group recommendation isn't a simple task of combining individual preferences. It's a complex problem that requires modeling consensus and compromise, which is far more challenging than a single-user system.
  • Multi-User UX is a Balancing Act: I gained a deep understanding for UX design in a social context. Every feature needs to be evaluated from multiple users' perspectives simultaneously, as a choice that one user can easily frustrate another.

What's next for WatchTogether

  • Better Styling and overall UI improvements
  • Add support for direct streaming links to services like Netflix and Hulu.
  • Continue to refine the recommendation engine with more data and user feedback.
  • Launch a polished beta to gather insights from a wider range of real friend groups.
  • Integrate more social features (friend suggestions, activity feeds).

Built With

Share this project:

Updates