Skip to content

DaniSangelo/price-comparator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monorepo Project

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.

Tech Stack 💻

Core

PHP Laravel MySQL
NodeJS TypeScript PostgreSQL
.NET Core C# Entity Framework SQL Server

Infrastructure

Docker Nginx

Observability

Grafana Loki

Project Structure

  • 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).

How to Run

To run the project, ensure you have Docker and Docker Compose installed.

Application Stack

Continente API

Start the service:

docker-compose -f infra/docker-compose.continente.yml up -d --build --scale continente-api=3

Access the application at http://localhost:3001.

Aldi API

Start the service:

docker-compose -f infra/docker-compose.aldi.yml up -d --build

Access the application at http://localhost:3333.

Lidl API

Start the service:

docker-compose -f infra/docker-compose.lidl.yml up -d --build

Access the application at http://localhost:3004.

Observability Stack

To run the observability stack (Loki, Promtail, Grafana):

docker-compose -f infra/docker-compose.observability.yml up -d
  1. Access http://localhost:3000.
  2. Go to Connections -> Data sources.
  3. Search for Loki, and set http://loki:3100 in the URL field.

RabbitMQ

http://localhost:15672

(user/pass: guest/guest)

About

This repository hosts a microservices-based architecture for a grocery price comparison platform. It aggregates product data from multiple external retailers to provide competitive analysis and insights.

Topics

Resources

Stars

Watchers

Forks

Contributors