This repository hosts a microservices-based architecture for a grocery price comparison platform. It aggregates product data from multiple external retailers to give to the end-user the ability to compare prices.
- apps/comparator: Responsible for get data from external APIs, normalize it and save it in database, and compare data from different retailers. Plus, it has a web interface to show the results, give the user the ability to search for products and compare prices.
comparator-api: (under development).comparator-web: (under development).
- apps/external-apis: Contains API services. Dedicated services for fetching and normalizing data from specific retailers:
continente-api: Laravel 12 API service.aldi-api: Node.js/TypeScript API service using Drizzle ORM.lidl-api: .NET Core API service using Entity Framework with SQL Server.
- infra: Infrastructure configurations (Docker Compose, Nginx, Observability).
To run the project, ensure you have Docker and Docker Compose installed.
Start the service:
docker-compose -f infra/docker-compose.continente.yml up -d --build --scale continente-api=3Access the application at http://localhost:3001.
Start the service:
docker-compose -f infra/docker-compose.aldi.yml up -d --buildAccess the application at http://localhost:3333.
Start the service:
docker-compose -f infra/docker-compose.lidl.yml up -d --buildAccess the application at http://localhost:3004.
To run the observability stack (Loki, Promtail, Grafana):
docker-compose -f infra/docker-compose.observability.yml up -d- Grafana: http://localhost:3000 (User:
admin, Password:admin) - Loki: http://localhost:3100
- Access
http://localhost:3000. - Go to Connections -> Data sources.
- Search for Loki, and set
http://loki:3100in the URL field.
(user/pass: guest/guest)