Skip to content

david-slatinek/nyx

Repository files navigation

Go AWS AWS Lambda MySQL Docker Amazon EC2 Github Actions Amazon SQS React dvc Python Apache CouchDB Grafana

Logo

Project description

A recommendation system for recommending products for an online store that consists of the following components:

  • Web application
    • React application that allows users to chat with a chatbot.
  • Dialog API
    • API for storing dialogs in the database and responding to the user.
  • Dialog model
    • Machine learning model that generates responses based on the user's input.
  • CouchDB
    • Database for storing dialogs, summaries, and product categories.
  • Summary API
    • API for storing chat summaries in the database.
  • Summary model
    • Machine learning model that generates chat summary.
  • Categories API
    • API for managing product categories.
  • Recommend API
    • API for recommending products to the user.
  • Recommend model
    • Machine learning model that recommends products for the user based on the chat.
  • Recommend db
    • Database for storing recommendations.
  • Recommend email
    • Lambda function that sends a recommendation email to the user.
  • Tracking API
    • API for tracking user clicks in the email.
  • GitHub Actions
    • CI/CD pipelines for the project.
  • Grafana dashboard
    • Dashboard for project monitoring.

AWS services were mainly used for the project infrastructure:

  • Amazon SQS
    • Message queue for communication between the components.
  • Amazon EC2
    • Virtual machine for hosting the project.
  • Amazon ECR
    • Docker container registry for storing Docker images.
      • Due to the free tier limitations, Docker Hub was used for storing images for models.
  • Amazon Lambda
    • Serverless computing service for running the recommendation email function.

Due to the complexity of the project, DVC and DagsHub were used for managing the machine learning models and data.

Project infrastructure

Project infrastructure
Project infrastructure.

Website

Website
Website.

Recommendation email

Recommendation email
Recommendation email.

Monitoring

Monitoring
Monitoring.