This project is a fullstack movie rental system designed to allow users to sign up/log in, borrow movie DVDs, return them, write reviews, and receive movie recommendations based on their preferences and current popularity.
The application is built using:
- Backend: Flask (Python) with MySQL for the database
- Frontend: React with Tailwind CSS for styling
- User Authentication
- Sign up / Log in functionality with secure password storage.
- DVD Borrowing and Returning
- Users can browse the movie catalog, borrow movies, and return them after use.
- Review System
- Users can leave reviews and ratings for the movies they watch.
- Movie Recommendations
- Personalized movie recommendations based on user preferences and trending/popular movies.
WARNING: Just a heads up this file will not run because I have intentionally left out the .env files for now
- Python (>= 3.13)
- Node.js (>= 19.0)
Navigate to the home directory of this project.
cd backend
pip3 install -r requirements.txt
python3 app.py
This will run the backend server. This must be ran before starting the frontend.
Similarly, navigate to the home directory of this project.
cd frontend
npm install
npm run dev
The database schema is structured as below -
movies
: Database for moviesid
: Primary keytitle
: Title of the moviedirector
: Director of the moviereleased
: Release year of the moviecopies
: Indicates how many copies of each DVD there is
users
: Database for usersid
: Primary keyuser_id
: ID of the user, used when logging inpassword
: Password of the user. Obviously hashedname
: Name of the userage
: Age of the useris_admin
: Checks if user is the adminsuspended
: Indicates if user has been suspended
reviews
: Reviews for users after borrowing DVDm_id
: ID of movie. Referencesmovies(id)
u_id
: ID of user. Referencesusers(id)
rating
: Rating after borrowingreview
: Text of the review
reservations
: DVDs currently being borrowedm_id
: ID of movie. Referencesmovies(id)
u_id
: ID of user. Referencesusers(id)
reservation_date
: Date when reservation was made
genres
: Maps genres to moviesid
: ID of movie. Referencesmovies(id)
genre
: Genre of the movie, in text.
movie_posters
: Official Images of Moviesid
: ID of movie. Referencesmovies(id)
img
: Link of the image