Skip to content

NNboru/BingeSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Binge - Your Streaming Companion

A full-stack movie recommendation platform with personalized content-based filtering, built with .NET 8.0 Web API backend and React TypeScript frontend.

✨ Features

πŸ” Authentication & User Management

  • JWT-based authentication with secure login/register
  • User profile management with password updates
  • Account deletion with confirmation

🎭 Movie Discovery

  • Trending Movies - Currently in theatres with pagination
  • Popular Movies - Most popular movies with pagination
  • Top Rated Movies - Highest rated movies with pagination
  • Personalized Recommendations - AI-powered suggestions based on user preferences
  • Advanced Search - Text search and filter-based discovery with multiple criteria

πŸ“± Interactive Features

  • Like/Dislike System - Heart (like) and thumbs down (dislike) buttons
  • Watchlist Management - Save movies for later viewing
  • Movie Details - Comprehensive movie information with genres, production companies, keywords
  • Trailer Integration - YouTube trailer playback in modal
  • Responsive Design - Mobile-friendly UI with Material-UI components

πŸ€– Smart Recommendations

  • Content-Based Filtering - Analyzes user's liked movies
  • Multi-Factor Scoring - Genres (30%), Production Companies (20%), Keywords (15%), Rating (15%), Year (10%), Popularity (10%)
  • Preference Learning - Builds user profiles from interaction history
  • Adaptive Algorithm - Recommendations improve as users interact more

πŸ› οΈ Tech Stack

Backend

  • .NET 8.0 Web API - RESTful API with Swagger documentation
  • PostgreSQL / SQL Server - Flexible database provider with Entity Framework Core
  • JWT Authentication - Secure token-based authentication
  • TMDB API Integration - Real-time movie data, images, and metadata

Frontend

  • React 18 with TypeScript - Modern UI framework
  • Redux Toolkit - State management with RTK Query
  • Material-UI (MUI) - Professional component library
  • Axios - HTTP client for API communication
  • React Router - Client-side routing

πŸš€ Quick Start

Prerequisites

  • .NET 8.0 SDK
  • Node.js 18+ and npm
  • Database: PostgreSQL OR SQL Server (configurable)
  • TMDB API key (Get one here)

Backend Setup

  1. Clone and configure:
cd BingeBackend
cp appsettings.Development.json appsettings.json
  1. Configure Database Provider - Choose PostgreSQL or SQL Server:
{
  "DatabaseProvider": "PostgreSQL",
  "ConnectionStrings": {
    "PostgreSQL": "Host=localhost;Database=BingeDB;Username=your_username;Password=your_password",
    "SqlServer": "Server=localhost;Database=BingeDB;User Id=sa;Password=YourPassword123;TrustServerCertificate=True;"
  }
}
  1. Complete appsettings.json configuration:
{
  "DatabaseProvider": "PostgreSQL",
  "ConnectionStrings": {
    "PostgreSQL": "Host=localhost;Database=BingeDB;Username=your_username;Password=your_password",
    "SqlServer": "Server=localhost;Database=BingeDB;UserId=sa;Password=YourPassword123;TrustServerCertificate=True;"
  },
  "Jwt": {
    "SecretKey": "your-super-secret-key-here-minimum-32-characters",
    "Issuer": "BingeAPI",
    "Audience": "BingeClient"
  },
  "TMDB": {
    "ApiKey": "your_tmdb_api_key_here",
    "BaseUrl": "https://api.themoviedb.org/3"
  }
}
  1. Setup database and run:
dotnet ef database update
dotnet run

Frontend Setup

  1. Install dependencies and run:
cd binge-frontend
npm install
npm run dev
  1. Access the application:
  • Frontend: http://localhost:5173
  • Backend API: https://localhost:7000
  • Swagger UI: https://localhost:7000/swagger

πŸ“‘ Key API Endpoints

Authentication

  • POST /api/auth/register - User registration
  • POST /api/auth/login - User login
  • GET /api/auth/profile - Get user profile
  • PUT /api/auth/profile - Update profile
  • POST /api/auth/change-password - Change password
  • DELETE /api/auth/account - Delete account

Movies & Discovery

  • GET /api/movies/trending - Trending movies
  • GET /api/movies/popular?page={page} - Popular movies (paginated)
  • GET /api/movies/top-rated?page={page} - Top rated movies (paginated)
  • GET /api/movies/tmdb/{tmdbId} - Movie details with videos
  • GET /api/movies/text-search?q={query}&page={page} - Text search
  • GET /api/movies/discover - Advanced filtering with multiple parameters

User Interactions

  • GET /api/watchlist - User's watchlist
  • POST /api/watchlist - Add to watchlist
  • DELETE /api/watchlist/{movieId} - Remove from watchlist
  • GET /api/likelist - User's liked/disliked movies
  • POST /api/likelist - Like/dislike a movie
  • DELETE /api/likelist/{movieId} - Remove like/dislike

Recommendations

  • GET /api/recommendations/personalized?page={page} - AI recommendations
  • GET /api/recommendations/user-data - User preference analysis

🎯 Advanced Features

Smart Recommendation Engine

  • User Profile Analysis - Extracts preferences from liked movies
  • Multi-Dimensional Scoring - Considers genres, studios, themes, ratings, and years
  • Production Company Matching - Recommends movies from preferred studios
  • Keyword Analysis - Matches movies with similar themes and concepts
  • Avoidance Patterns - Learns what users don't like

Enhanced Search & Discovery

  • Tabbed Search Interface - Separate text search and advanced filters
  • Multiple Genre Selection - Checkbox-based genre filtering
  • Production Company Filters - Filter by studio preferences
  • Keyword-Based Discovery - Find movies by themes and concepts
  • Pagination Support - Efficient browsing with page controls

Rich Movie Information

  • Comprehensive Details - Genres, production companies, keywords, cast info
  • Visual Elements - High-quality posters, backdrops, and trailers
  • Interactive UI - Like/dislike buttons, watchlist management, trailer playback

πŸ”§ Development

Database Migrations

For PostgreSQL:

dotnet ef migrations add MigrationName
dotnet ef database update

For SQL Server:

# First, set DatabaseProvider to "SqlServer" in appsettings.json
dotnet ef migrations add MigrationName
dotnet ef database update

⚠️ Important: Migrations are database-specific. If you switch providers, you may need to regenerate migrations or maintain separate migration folders for each provider.

Frontend Build

npm run build
npm run preview

Project Structure

BingeSystem/
β”œβ”€β”€ BingeBackend/     # .NET 8.0 Web API
β”‚   β”œβ”€β”€ Controllers/               # API endpoints
β”‚   β”œβ”€β”€ Services/                  # Business logic & TMDB integration
β”‚   β”œβ”€β”€ Models/                    # Database entities
β”‚   β”œβ”€β”€ DTOs/                      # Data transfer objects
β”‚   └── Data/                      # Database context
└── binge-frontend/  # React TypeScript app
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ components/            # Reusable UI components
    β”‚   β”œβ”€β”€ pages/                 # Main application pages
    β”‚   β”œβ”€β”€ services/              # API integration
    β”‚   β”œβ”€β”€ store/                 # Redux state management
    β”‚   └── types/                 # TypeScript definitions

πŸ”’ Security Features

  • JWT Authentication - Secure token-based authentication
  • Password Hashing - BCrypt for secure password storage
  • CORS Configuration - Proper cross-origin resource sharing
  • Input Validation - Server-side validation for all inputs
  • SQL Injection Protection - Entity Framework parameterized queries

🎨 UI/UX Highlights

  • Responsive Design - Works seamlessly on desktop, tablet, and mobile
  • Dark Theme - Modern dark UI with custom color palette
  • Smooth Animations - Hover effects, transitions, and loading states
  • Intuitive Navigation - Easy-to-use interface with clear visual hierarchy
  • Accessibility - ARIA labels, keyboard navigation, and screen reader support

πŸ“Š Performance Optimizations

  • Lazy Loading - Images and components load as needed
  • Pagination - Efficient data loading with page-based navigation
  • Caching - TMDB genre caching and optimized API calls
  • Code Splitting - Optimized bundle sizes for faster loading
  • Responsive Images - Multiple image sizes for different screen resolutions

πŸš€ Future Enhancements

  • Collaborative filtering for user-to-user recommendations
  • Social features (reviews, friend recommendations)
  • Mobile app with React Native
  • Advanced analytics and user insights
  • Machine learning model improvements
  • Real-time notifications
  • Content moderation and admin panel

πŸ“„ License

MIT License - feel free to use this project for learning and development!


Built with ❀️ using modern web technologies for the ultimate movie discovery experience! 🎬✨

About

Binge - Your Streaming Companion

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages