The MEO Deals Tracker is an application designed to monitor and display the latest promotional offers available on the MEO website. Intended to provide a seamless and user-friendly experience, the app aggregates current deals, presenting them in an easy-to-navigate interface, ensuring that users never miss out on the best available offers.
To get the application running, you need to have Python installed on your system, along with the Kivy and KivyMD libraries. You also need to set up the Django backend and have Docker installed to run the services defined in the docker-compose.yml file.
- Python 3.x
- Kivy
- KivyMD
- Docker
pip install kivy kivymd
git clone <repository_url>
Navigate to the cloned repository and build the Docker containers:
docker-compose up --build
#Running the Application
After setting up the Docker containers, you can run the KivyMD application with:
python app.py
- ModernGridApp: The main app class that initializes the app and loads the product grid.
- ProductCard: A custom card widget that represents a single product in the grid.
- refresh_grid: Fetches data from the API and updates the UI.
- ScrapeData: An APIView class that scrapes product data from an external source and returns it as JSON.
The docker-compose.yml file defines the following services:
- djangoapp: The Django application container.
- nginx: The NGINX server used as a reverse proxy.
- database: The PostgreSQL database.
- pgadmin: The web-based PostgreSQL administration tool.
- redis: An in-memory data structure store used as a database, cache, and message broker. ##API Endpoints /api/scrape_data/: The endpoint to fetch scraped product data.
Once the application is running, you can view a grid of products. The grid can be refreshed by clicking the 'Refresh' button, which will fetch the latest product data from the Django backend.
To modify the application:
- Edit the KivyMD frontend files for UI changes.
- Modify the Django backend for changes in API logic or data scraping.
- Update the docker-compose.yml and associated configurations for changes in the Docker setup.
Contributions are welcome. Please open an issue first to discuss what you would like to change or add.
Please ensure you have the right to use and distribute all the dependencies and assets in your project. Your project should include an open-source license if it is to be open-sourced.
