{"id":20215725,"url":"https://github.com/c12i/flask-movie-app","last_synced_at":"2025-05-07T07:33:23.062Z","repository":{"id":50139316,"uuid":"214224336","full_name":"c12i/flask-movie-app","owner":"c12i","description":"A watch-list app with Flask using the TMDB API with CRUD and user authentication.","archived":true,"fork":false,"pushed_at":"2022-12-08T06:42:40.000Z","size":41216,"stargazers_count":33,"open_issues_count":5,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T06:23:21.521Z","etag":null,"topics":["flask-tmdb","tmdb","tmdb-api","tmdb-movie-search"],"latest_commit_sha":null,"homepage":"https://movie-app95.herokuapp.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c12i.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-10T15:50:28.000Z","updated_at":"2024-07-14T16:10:30.000Z","dependencies_parsed_at":"2023-01-24T17:00:18.016Z","dependency_job_id":null,"html_url":"https://github.com/c12i/flask-movie-app","commit_stats":null,"previous_names":["c12i/flask-movie-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c12i%2Fflask-movie-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c12i%2Fflask-movie-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c12i%2Fflask-movie-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c12i%2Fflask-movie-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c12i","download_url":"https://codeload.github.com/c12i/flask-movie-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252833924,"owners_count":21811277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask-tmdb","tmdb","tmdb-api","tmdb-movie-search"],"created_at":"2024-11-14T06:24:09.295Z","updated_at":"2025-05-07T07:33:21.191Z","avatar_url":"https://github.com/c12i.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eFlask Movie App\u003c/h1\u003e\n\u003cp\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-1.2.3-blue.svg?cacheSeconds=2592000\" /\u003e\n  \u003ca href=\"LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: GNU GENERAL PUBLIC LICENSE\" src=\"https://img.shields.io/badge/License-GNU GENERAL PUBLIC LICENSE-yellow.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/collinsmuriuki_\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Twitter: collinsmuriuki_\" src=\"https://img.shields.io/twitter/follow/collinsmuriuki_.svg?style=social\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### 🏠 [Homepage](https://github.com/collinsmuriuki/flask-movie-app/)\n\n### ✨ [Demo](https://movie-app95.herokuapp.com/)\n\n###  A movie watchlist application.\n![alt text](app.gif)\n\n### Description\nA 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).\n\n### Features\nHere are the features in summary:\n* App displays popular movies, upcoming movies and latest movies\n* User can search and review any movie.\n\n### Requirements\n* This program requires python3.+ (and pip) installed, a guide on how to install python on various platforms can be found [here](https://www.python.org/)\n* 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)\n    * To download postgres, follow this [link](https://www.postgresql.org/download/)\n\n### Installation and Set-up\nTo view the app, open the live site link provided below on the README.\nHere is a run through of how to set up the application:\n* **Step 1** : Clone this repository using **`git clone https://github.com/collinsmuriuki/flask-movie-app.git`**, or downloading a ZIP file of the code.\n* **Step 2** : The repository, if downloaded as a .zip file will need to be extracted to your preferred location and opened\n* **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:\n    * **`pip install virtualenv`**\n    * **`virtualenv virtual`**\n    * **`source virtual/bin/activate`**\n        * Note that you can exit the virtual environment by running the command **`deactivate`**\n* **Step 4** : Download the all dependencies in the requirements.txt using **`pip install -r requirements.txt`**\n* **Step 5** : Go to the [the movie database (TMDB) API](https://www.themoviedb.org/) WEBSITE, sign up for a free account and generate an API key. \n    * Create a .sh (shell)file in your root directory called **start.sh** and store the API key like so **`export API_KEY=\"\u003cyour-key\u003e\"`**\n    * On the same file write down the command **`python3 manage.py server`** \n    * 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=\"\u003cyour-gmail-address\u003e\"`** and **`export MAIL_PASSWORD=\"\u003cyour-gmail-password\u003e\"`** \n    * You should have something like this:\n    ```\n    export MOVIE_API_KEY=\"\u003cyour-api-key\u003e\"\n    export SECRET_KEY=\"\u003cyour-secret-key\u003e\"\n    export MAIL_USERNAME=\"\u003cyour-gmail-address\u003e\"\n    export MAIL_PASSWORD=\"\u003cyour-gmail-password\u003e\"\n\n    python3 manage.py server\n    ```\n* **Step 6** : If you are using postgresql, run the server on a separate terminal tab/window using **postgres**\n    * Then on another terminal tab/window, run the command **psql** to enter the postgresql shell\n    * Create a database called **'watchlist'** by typing the command  **`CREATE DATABASE watchlist;`**\n    * Set a password for your database by running this command **`ALTER USER \u003cusername\u003e WITH PASSWORD \"\u003cnew_password\u003e\";`**\n    * 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:\n    **`SQLALCHEMY_DATABASE_URI=\"postgresql+psycopg2://\u003cusername\u003e:\u003cpassword\u003e@localhost/watchlist\"`**\n    * 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.\n* **Step 7** : Run the following command to upgrade your database to current schema:\n```\npython manage.py db upgrade\n```\n* **Step 8** : On your terminal, run the following command, **`chmod +x start.sh`** to make the shell file from **step 5** executable\n    * You can now launch the application locally by running the command **`./start.sh`** \n    * Open your preferred browser and view the app by opening the link **http://127.0.0.1:5000/**.\n\n### IMPORTANT\n* **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\")`**\n* **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\")`**\n* **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:\n```\npython manage.py db migrate -m \"\u003cmigration message\u003e\"\n```\n  * You can read more about flask-migrate by checking out their [documentation](https://flask-migrate.readthedocs.io/en/latest/)\n\n### Deployment\nIf you wish to deploy your app on heroku, you can follow the steps on this [gist](https://gist.github.com/collinsmuriuki/d8865a4544579511cc2c094bdfffa0dc)\n\n## Known Bugs\n* **Styling bug**: There seems to be an inconsistent arrangement of movie thumbnails on landing page as well as search results page.\n\n## Technologies Used\n* Python 3.7.4\n* Flask 1.1.1\n* HTML  \n* CSS\n* PostgreSQL\n* Bootstrap 3.3.7\n\n## Author\n\n👤 **Collins Muriuki**\n\n* Website: https://muriuki.dev\n* Email: murerwacollins@gmail.com\n* Twitter: [@collinsmuriuki_](https://twitter.com/collinsmuriuki_)\n* Github: [@collinsmuriuki](https://github.com/collinsmuriuki)\n* LinkedIn: [@collinsmuriuki](https://linkedin.com/in/collinsmuriuki)\n\n## Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📝 License\n\nCopyright © 2020 [Collins Muriuki](https://github.com/collinsmuriuki).\u003cbr /\u003e\nThis project is [GNU GENERAL PUBLIC LICENSE](LICENSE) licensed.\n\n***","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc12i%2Fflask-movie-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc12i%2Fflask-movie-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc12i%2Fflask-movie-app/lists"}