FilmFIesta is a film-themed project, the aim of which was to expand knowledge on team web development with good practices such as containerization, scrapping and others. The appearance and some functionalities have been created in the likeness of internet sites such as IMDB, Filmweb or Letterboxd.
- data scraping with BeautifulSoup and Selenium
- using the TMDB API to retrieve the most important information about movies and people of cinema
- Redis&Celery for refreshing rankings every 24 hours
- CI : running test on push
- Prometheus&Grafana for monitoring and visualization
- using Postgres DB
- using signals and transactions from Django
- CRUD functionality with list of movies/people
- rating and adding to watchlist funtionality
- CRUD functionality with reviews/comments
- user authentication system
- password reset by sending an email with a link
- template-based interface styled with bootstrap
- docker and docker compose
- python>=3.10
Firstly, clone the repository from the github to your local folder with the following command:
git clone https://github.com/Milosz-cat/Movie-App.git
Next, create an .env
file where the docker-compose.yml
is and copy the content from the .env.sample
file:
cp .env.sample .env
If you want to run the application on a different host than localhost run:
python scripts/run_update_env.py
To get access to the TMDB API, you need to create an account on the TMDB website and verify your email. Then go to Profile Icon > Settings > API > Create > DeveloperExample, Accept Terms of Use, Submit Form. After this go again to API page and you will be able to copy API KEY and API Read Access Token (BEARER).
For sending e-mails to work properly on your gamil, you need to go to settings and enable two-step verification and then set a password for the application. Here is helpful link.
If you encounter any problem while trying to key access to tmdb API or functionality to send e-mails write to me and I will share my personal data with you.
Example:
SECRET_KEY=ENTER_YOUR_SECRET_KEY_HERE
DEBUG=True
ALLOWED_HOSTS=app 127.0.0.1 0.0.0.0
TMDB_API_KEY=ENTER_YOUR_TMDB_API_KEY_HERE
BEARER=ENTER_YOUR_BEARER_HERE
EMAIL_HOST_USER = ENTER_YOUR_EMAIL_HOST_USER_HERE
EMAIL_HOST_PASSWORD = ENTER_YOUR_EMAIL_HOST_PASSWORD_HERE
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=db
In the same directory, where the docker-compose.yml
is, run the following commands:
docker compose build
To start the container and test the api run the following command:
docker compose up
Now you can head over to http://127.0.0.1:8000 to test the app.
To stop the running container press "CTRL+C" or:
docker compose down
You can create admin account (LOGIN=admin, PASSWORD=admin):
docker-compose run --rm -e DJANGO_SUPERUSER_USERNAME=admin -e DJANGO_SUPERUSER_PASSWORD=admin -e [email protected] app python manage.py createsuperuser --no-input
Or if you want create your own admin:
docker compose run --rm app python manage.py createsuperuser