Team Blockbuster is creating a microservice Data Science application which will provide the ability to query and display movie data based on various user inputs using the Kaggle IMDB Top 250 Movies dataset: https://www.kaggle.com/datasets/rajugc/imdb-top-250-movies-dataset
This application provides information for people who are curious about movie trends such as movies ratings across different countries, movie durations, or specific movie genres and categories, etc. This information can help people working in the film industry or similar industries in making important movie development choices.
This microservice based application is built using a Python Flask framework where ReactJS will be used to create a frontend web-page where the user can input data points and Python will be used to manage backend operations that generate the movie data based on the input data received. SQLite will be used as the application's database.
Overview:
- Frontend: ReactJS
- Backend: Python
- Database: SQLite
The following technologies will be used for our project:
- PyCharm Community (2024.2.2)
- GitHub Actions
- Python (v3.12)
- pip (v24.2)
- Python Flask
- Flask-Cors
- PyTest
- Pytest-mock
- PyLint
- Pandas
- Python Flask
- Docker (v27.2.0)
- Docker Compose (v2.29.2-desktop.2)
- Podman (5.2.2)
- nodeJS (v20.17.0)
- SQLite (v3)
PyCharm Community
Please follow download and installation instructions from the link: https://www.jetbrains.com/pycharm/download/ depending on OS.
Docker
Please follow download and installation instructions from the link: https://www.docker.com/ depending on OS.
Docker Compose
Docker Compose is part of the Docker installation process.
nodeJS
Please follow download and installation instructions from the link: https://nodejs.org/en depending on OS.
Python
Please follow download and installation instructions from the link: https://www.python.org/ depending on OS.
pip
pip should be installed with the Python downloaded from https://www.python.org/.
Python Flask
Using the Python version installed along with pip, please follow the instructions at the link: https://flask.palletsprojects.com/en/3.0.x/installation/.
Pandas Using the Python version that is installed along with, please use pip to install: Pandas pip3 install pandas
SQLite
sqlite3 is part of the Python library when Python was downloaded and installed.
For more information please refer to this link: https://docs.python.org/3/library/sqlite3.html
-
Open a command line console and clone the main branch of this repository (SSH approach) in location of choice using the command below:
git clone [email protected]:BUMETCS673/seprojects-cs673olf24team6.git
Note: SSH approach was used for the command above. Please follow the appropriate GitHub guidelines to set up SSH keys before cloning this repository.
-
Using either file manager or a terminal window navigate to the code directory.
-
To run this application the services must be started using docker-compose 'docker-compose-up'
- From frontend directory
- Podman/Docker build -t node_frontend .
- Podman/Docker run -idt --name node_frontend node_frontend
- Podman/Docker exec -it node_frontend /bin/bash
npm test
- From backend directory
- Podman/Docker build -t flask_backend .
- Podman/Docker run -idt --name flask_backend flask_backend
- Podman/Docker exec -it flask_backend /bin/bash
pytest tests/*.py
- From database directory
- Podman/Docker build -t database .
- Podman/Docker run -idt --name database database
- Podman/Docker exec -it database /bin/bash
cd tests
pytest movies_unit_test.py
Course Instructor: Yuting Zhang
Facilitators: Steve Chin, Trevor Michelson
Tools Installation Information
- Docker: https://www.docker.com/
- Docker Compose
- Podman
- nodeJS: https://nodejs.org/en
- Python: https://www.python.org/
- pip
- flask
- pandas
- pylint
- SQLite: https://docs.python.org/3/library/sqlite3.html
Dataset Information
- Kaggle IMDB Top 250 Movies dataset: https://www.kaggle.com/datasets/rajugc/imdb-top-250-movies-dataset,
- By Chidambara Raju G (2022)
Team Leader: Joshua Shilts
Requirements Leader: Elizabeth Tyree
Design and Implementation Leader: Elizabeth Tyree
Configuration Leader: Ricky Zheng
QA Leader: Alex Flinchum
Security Leader: James Zheng