Skip to content
This repository was archived by the owner on Apr 29, 2025. It is now read-only.
/ NearYou Public archive

Repository dell'MVP e del PoC prodotto per il progetto di Ingegneria del Software A.A. 2024/25 - UniPD

Notifications You must be signed in to change notification settings

SWEatUNIPD/NearYou

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shows a black logo in light color mode and a white one in dark color mode.

NearYou - Smart Custom Advertising Platform codecov

Repository relativo al codice sviluppato per il capitolato C4 dell'azienda proponente Sync Lab S.r.L. per il progetto didattico di Ingegneria del Software A.A. 2024/25 del CdL Triennale in Informatica (L31) dell'Università degli Studi di Padova.

Tecnologie adottate

Le tecnologie adottate dal nostro Minimum Viable Product sono:

  • TypeScript per la simulazione dei sensori che interagiscono con il sistema, inviando messaggi in formato JSON ( serializzati) al sistema tramite un message broker (nel nostro caso Apache Kafka) nel seguente formato:
    {
      "rentId": 1,
      "latitude": 78.32432,
      "longitude": 90.43567,
      "timestamp": 1234567890
    }
  • Apache Flink (Java) per sviluppare il cuore pulsante, ovvero il sistema a cui viene delegato il compito di processare in tempo reale lo stream di dati in entrata provenienti dai sensori installati sui mezzi (nel nostro caso specifico, i simulatori) e arricchirli in maniera tale da inviare un prompt alla LLM il più completo possibile. Oltre ad Apache Flink, per lo sviluppo del sistema sono state utilizzate altre tecnologie. Meritano di essere menzionate:
    • R2DBC, ovvero un driver studiato appositamente secondo la specifica dei Reactive Streams, fornendo a noi un API non-bloccante per interagire con il database, come richiesto da Apache Flink per le richieste asincrone
    • Project Reactor libreria per la gestione degli stream, non bloccante, utilizzata per realizzare le richieste asincrone al nostro database e alla LLM per la generazione dell'annuncio
    • LangChain4j porting di LangChain per Java per effettuare le generazioni tramite la LLM
  • Grafana come tool di osservabilità per i dati che vengono mandati dai sensori e le generazioni che vengono effettuate per i vari punti di interesse registrati in database.

TechStack

Come avviare il sistema

Il sistema presenta un file compose.yml necessario ad avviare l'intero sistema.

Per avviare il sistema, sarà quindi necessario eseguire semplicemente il comando docker compose up -d --build.

Per terminare il sistema, basterà eseguire il comando docker compose down -v.

Ambiente di sviluppo

Viene demandata a Docker anche la compilazione del job per Apache Flink (esente da test).

Flink Job

Per eseguire i test (compilando il job mediante il comando mvn clean package o eseguendo esplicitamente i test con mvn test) sarà necessario aver installato Maven e avere un Docker Engine avviato all'interno dell'ambiente dove il job verrà testato in maniera tale da poter eseguire i test di integrazione mediante TestContainers.

Simulatore

Per eseguire in locale il simulatore, sarà necessario aver installato Node all'interno del proprio ambiente di sviluppo (viene fornito il file .nvmrc contenente la versione di Node).

Per avviare il simulatore, basterà eseguire il comando npm run app.

Per avviare invece i relativi test, sarà necessario eseguire il comando npm test.

Componenti del gruppo

Nominativo Matricola
Andrea Perozzo 2082849
Andrea Precoma 2068227
Davide Marin 2068234
Davide Martinelli 2034341
Davide Picello 2034825
Klaudio Merja 2075538
Riccardo Milan 2068231