All Projects → collinsmuriuki → flask-movie-app

collinsmuriuki / flask-movie-app

Licence: GPL-3.0 license
A watch-list app with Flask using the TMDB API with CRUD and user authentication.

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
Mako
254 projects
CSS
56736 projects

Projects that are alternatives of or similar to flask-movie-app

TheMovieDatabaseSwiftWrapper
Swift wrapper for themoviedb.org api v3
Stars: ✭ 126 (+384.62%)
Mutual labels:  tmdb, tmdb-api
auto-movie-tagger
A Python script that auto tags and adds poster to mkv or mp4 movie files.
Stars: ✭ 49 (+88.46%)
Mutual labels:  tmdb, tmdb-api
Paging-3-Sample
This app is created as a sample app which loads movies from Tmdb api and uses Paging 3 library to show it in a Recycler view.
Stars: ✭ 96 (+269.23%)
Mutual labels:  tmdb, tmdb-api
MovieCards
React App that uses TMDb API to display movie data. Try it out! ->
Stars: ✭ 38 (+46.15%)
Mutual labels:  tmdb, tmdb-api
laravel-tmdb
Interact with TMDB data in your Laravel application.
Stars: ✭ 25 (-3.85%)
Mutual labels:  tmdb, tmdb-api
tmdb-api
This Kotlin Multiplatform library is for accessing the TMDB API to get movie and TV show content. Using for Android, iOS, and JS projects.
Stars: ✭ 31 (+19.23%)
Mutual labels:  tmdb, tmdb-api
TVToday
iOS TV Shows app with TMDb Api. RxSwift, MVVM, Clean Architecture. Tuist + Swift Package Manager
Stars: ✭ 27 (+3.85%)
Mutual labels:  tmdb, tmdb-api
Bobarr
🍿 The all-in-one alternative for Sonarr, Radarr, Jackett... with a VPN and running in docker
Stars: ✭ 697 (+2580.77%)
Mutual labels:  tmdb
Popcorn
🍿 Movies and TV Shows App powered by TMDb
Stars: ✭ 82 (+215.38%)
Mutual labels:  tmdb
Homehost
self-hosted, Netflix-like app made for streaming
Stars: ✭ 564 (+2069.23%)
Mutual labels:  tmdb
Themovies
🎬 A demo project for The Movie DB based on Kotlin MVVM architecture and material design & animations.
Stars: ✭ 374 (+1338.46%)
Mutual labels:  tmdb
Reactjs Tmdb App
Responsive React 'The Movie Database' (TMDb) App
Stars: ✭ 830 (+3092.31%)
Mutual labels:  tmdb
Moviedb
A gorgeous TMDb client for Android
Stars: ✭ 103 (+296.15%)
Mutual labels:  tmdb
Filmy
🎥 Material designed awesome movie app which is powered by tmdb.
Stars: ✭ 697 (+2580.77%)
Mutual labels:  tmdb
TMDb
A simple Android client for The Movie DB in Material Design
Stars: ✭ 65 (+150%)
Mutual labels:  tmdb
Nefarious
Web application for automatically downloading TV & Movies
Stars: ✭ 373 (+1334.62%)
Mutual labels:  tmdb
vue-netflix-clone
The repository contains the clone of the application with millions of active users in real life.
Stars: ✭ 32 (+23.08%)
Mutual labels:  tmdb-api
Moviepark
A Nuxt universal app with an Adonis 5 api server using the TMDb API for its movie catalog.
Stars: ✭ 32 (+23.08%)
Mutual labels:  tmdb
Gatsby Source Tmdb
🎬 Source from TheMovieDB in Gatsby
Stars: ✭ 50 (+92.31%)
Mutual labels:  tmdb
Golang Tmdb
This is a Golang wrapper for working with TMDb API. It aims to support version 3.
Stars: ✭ 36 (+38.46%)
Mutual labels:  tmdb

Flask Movie App

Version License: GNU GENERAL PUBLIC LICENSE Twitter: collinsmuriuki_

🏠 Homepage

Demo

A movie watchlist application.

alt text

Description

A watch-list app built with Flask using the TMDB API with CRUD and user authentication. The application makes use of the movie database API (tmdb).

Features

Here are the features in summary:

  • App displays popular movies, upcoming movies and latest movies
  • User can search and review any movie.

Requirements

  • This program requires python3.+ (and pip) installed, a guide on how to install python on various platforms can be found here
  • PostgresSQL was used in this project as the database client, however fell free to use whichever cliet you prefer (this documentaion is based on Postgres)
    • To download postgres, follow this link

Installation and Set-up

To view the app, open the live site link provided below on the README. Here is a run through of how to set up the application:

  • Step 1 : Clone this repository using git clone https://github.com/collinsmuriuki/flask-movie-app.git, or downloading a ZIP file of the code.
  • Step 2 : The repository, if downloaded as a .zip file will need to be extracted to your preferred location and opened
  • Step 3 : Go to the project root directory and install the virtualenv library using pip an afterwards create a virtual environment. Run the following commands respectively:
    • pip install virtualenv
    • virtualenv virtual
    • source virtual/bin/activate
      • Note that you can exit the virtual environment by running the command deactivate
  • Step 4 : Download the all dependencies in the requirements.txt using pip install -r requirements.txt
  • Step 5 : Go to the the movie database (TMDB) API WEBSITE, sign up for a free account and generate an API key.
    • Create a .sh (shell)file in your root directory called start.sh and store the API key like so export API_KEY="<your-key>"
    • On the same file write down the command python3 manage.py server
    • This project uses flask-mail to send emails on account creation; therefore you can export your email and password for SMTP authentication export MAIL_USERNAME="<your-gmail-address>" and export MAIL_PASSWORD="<your-gmail-password>"
    • You should have something like this:
    export MOVIE_API_KEY="<your-api-key>"
    export SECRET_KEY="<your-secret-key>"
    export MAIL_USERNAME="<your-gmail-address>"
    export MAIL_PASSWORD="<your-gmail-password>"
    
    python3 manage.py server
    
  • Step 6 : If you are using postgresql, run the server on a separate terminal tab/window using postgres
    • Then on another terminal tab/window, run the command psql to enter the postgresql shell
    • Create a database called 'watchlist' by typing the command CREATE DATABASE watchlist;
    • Set a password for your database by running this command ALTER USER <username> WITH PASSWORD "<new_password>";
    • Now go back to the project directory, in the config.py file, set your SQLALCHEMY_DATABASE_URI in the Config class following the following format: SQLALCHEMY_DATABASE_URI="postgresql+psycopg2://<username>:<password>@localhost/watchlist"
    • Side note: you will notice that on the TestConfig class, the database uri is linked to a test database, you can create one for testing purposes, otherwise, ignore.
  • Step 7 : Run the following command to upgrade your database to current schema:
python manage.py db upgrade
  • Step 8 : On your terminal, run the following command, chmod +x start.sh to make the shell file from step 5 executable
    • You can now launch the application locally by running the command ./start.sh
    • Open your preferred browser and view the app by opening the link http://127.0.0.1:5000/.

IMPORTANT

  • NOTE: For deployment purposes, on the manage.py file, be sure to change from "development" config options to "production" like so: app = create_app("production")
  • NOTE: If you cloned this project before 17/11/2019, the default config options in the manage.py file were set to "production", be sure to switch to "development" like so: app = create_app("development")
  • NOTE: This project uses flask-migrate to keep track of changes made to the schema; therefore, any time you make changes to the schema in the models.py module; make sure you run the following command:
python manage.py db migrate -m "<migration message>"
  • You can read more about flask-migrate by checking out their documentation

Deployment

If you wish to deploy your app on heroku, you can follow the steps on this gist

Known Bugs

  • Styling bug: There seems to be an inconsistent arrangement of movie thumbnails on landing page as well as search results page.

Technologies Used

  • Python 3.7.4
  • Flask 1.1.1
  • HTML
  • CSS
  • PostgreSQL
  • Bootstrap 3.3.7

Author

👤 Collins Muriuki

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2020 Collins Muriuki.
This project is GNU GENERAL PUBLIC LICENSE licensed.


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].