{"id":49593060,"url":"https://github.com/dimuzzo/db-project-23-24","last_synced_at":"2026-05-04T01:40:33.081Z","repository":{"id":300448294,"uuid":"939626789","full_name":"dimuzzo/db-project-23-24","owner":"dimuzzo","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-21T18:17:39.000Z","size":3328,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-21T19:26:23.167Z","etag":null,"topics":["database","postgresql","university-project"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimuzzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-26T21:00:17.000Z","updated_at":"2025-06-21T18:17:42.000Z","dependencies_parsed_at":"2025-06-21T19:26:37.925Z","dependency_job_id":"470b3518-7682-4a60-8b71-b97813d9f020","html_url":"https://github.com/dimuzzo/db-project-23-24","commit_stats":null,"previous_names":["dimuzzo/db-project-23-24"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dimuzzo/db-project-23-24","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimuzzo%2Fdb-project-23-24","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimuzzo%2Fdb-project-23-24/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimuzzo%2Fdb-project-23-24/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimuzzo%2Fdb-project-23-24/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimuzzo","download_url":"https://codeload.github.com/dimuzzo/db-project-23-24/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimuzzo%2Fdb-project-23-24/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32591603,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","postgresql","university-project"],"created_at":"2026-05-04T01:40:30.818Z","updated_at":"2026-05-04T01:40:33.068Z","avatar_url":"https://github.com/dimuzzo.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Progetto Database: Piattaforma di Food Delivery \"Cibora\"\n\n![GitHub last commit](https://img.shields.io/github/last-commit/dimuzzo/db-project-23-24?style=flat-square\u0026logo=github\u0026label=Last%20Commit)\n![GitHub repo size](https://img.shields.io/github/repo-size/dimuzzo/db-project-23-24?style=flat-square\u0026logo=github\u0026label=Repo%20Size)\n![GitHub stars](https://img.shields.io/github/stars/dimuzzo/db-project-23-24?style=flat-square\u0026logo=github\u0026label=Stars)\n\n## Descrizione Generale del Progetto\n\nQuesto progetto riguarda la progettazione e la programmazione della base di dati per **Cibora**, un servizio di food delivery innovativo. Il sistema gestirà i dati relativi ai ristoranti affiliati, agli utenti, ai loro ordini e ai fattorini (riders) che effettuano le consegne.\n\n## Entità Principali e Attributi\n\nDi seguito sono descritte le entità principali del dominio applicativo e i loro attributi chiave, come specificato nei requisiti di progetto.\n\n### 1. Utente\n\nL'entità Utente rappresenta il cliente finale della piattaforma.\n\n* **Dati Anagrafici**: Per la registrazione sono richiesti nome, email, password, numero di telefono e un indirizzo di recapito.\n* **Borsellino Elettronico**: Ogni utente ha un borsellino con un saldo che viene aggiornato ad ogni ordinazione. L'utente può ricaricare il borsellino in qualsiasi momento.\n* **Metodo di Pagamento**: L'utente deve associare un metodo di pagamento (es. carta di credito, PayPal) per poter ricaricare il borsellino.\n* **Modalità Premium**: Gli utenti possono sottoscrivere un abbonamento \"premium\" che garantisce priorità sugli ordini.\n* **Codici Sconto**: L'utente può accumulare codici sconto basati sul numero di ordini effettuati in passato.\n* **Interazioni**: L'utente può visualizzare lo storico dei propri ordini, effettuare reclami inviando un messaggio al ristorante, e recensire ristoranti e rider.\n\n### 2. Ristorante\n\nRappresenta l'esercizio commerciale che offre cibo sulla piattaforma.\n\n* **Informazioni di Base**: Ogni ristorante è identificato da un nome, una descrizione, un indirizzo e un'immagine di profilo.\n* **Costi**: Definisce un costo di spedizione per gli ordini.\n* **Valutazione**: Possiede un numero di stellette che viene aggiornato ogni lunedì in base alla percentuale di recensioni positive della settimana precedente.\n* **Categorie**: Appartiene a una o più categorie in base al tipo di cibo offerto (es. fast food, vegetariano).\n* **Status: Top Partner**:\n    * I ristoranti che offrono un servizio eccellente possono diventare \"Top Partner\".\n    * I criteri sono: almeno 20 ordini corretti, valutazione \u003e= 4.5, ordini annullati \u003c= 1.5%, reclami \u003c= 2.5%.\n    * I Top Partner ricevono un badge speciale e maggiore visibilità.\n    * Per i Top Partner viene memorizzata la data in cui hanno ottenuto tale status.\n\n### 3. Piatto\n\nDescrive le singole voci ordinabili dal menu di un ristorante.\n\n* **Attributi**: Ogni piatto ha un titolo, un'immagine, una lista di ingredienti, una lista di allergeni e un prezzo.\n* **Promozioni**: Può avere uno sconto applicato al prezzo di listino.\n* **Liste**: Ogni piatto può appartenere a una o più liste speciali (es. \"i più venduti\", \"promozioni\").\n\n### 4. Rider (Fattorino)\n\nÈ l'incaricato della consegna degli ordini.\n\n* **Identificazione**: Ogni rider è identificato da un codice univoco.\n* **Stato**: Il suo stato può essere \"occupato\", \"disponibile\" o \"fuori servizio\".\n* **Posizione**: La sua posizione viene aggiornata in tempo reale tramite GPS.\n* **Mezzo di Trasporto**: I riders sono classificati in base al mezzo utilizzato: bicicletta normale, bicicletta elettrica, o monopattino.\n* **Autonomia Monopattino**: Chi usa il monopattino deve specificare i km di autonomia della batteria.\n* **Performance**: Per ogni rider si tiene traccia del numero totale di consegne effettuate.\n\n### 5. Ordine\n\nRappresenta la transazione tra un utente e un ristorante.\n\n* **Contenuto**: È composto da una lista di piatti selezionati da un utente.\n* **Stato**: Un ordine può essere annullato dal cliente o dal ristoratore finché non viene affidato a un rider.\n* **Tracciamento**: Vengono memorizzati i seguenti timestamp:\n    * Momento in cui l'ordine viene affidato a un rider.\n    * Ora di effettiva consegna al cliente (per gli ordini completati).\n* **Interazioni Post-Ordine**: Dopo la consegna, l'utente può recensire ristorante e rider, e lasciare una mancia a quest'ultimo.\n\n## Funzionalità Specifiche e Processi\n\n### Assegnazione del Rider\nIl sistema di assegnazione ordini segue regole precise:\n1.  Viene individuato il rider libero la cui somma delle distanze `(rider -\u003e ristorante) + (ristorante -\u003e utente)` è minima.\n2.  Per tragitti totali `(rider -\u003e ristorante -\u003e cliente)` superiori a 10 km, vengono considerati solo i rider con bici elettrica.\n\n### Interazioni e Comunicazione\n* **Chat**: L'utente ha la possibilità di chattare con il ristorante e con il rider in caso di problemi con l'ordine.\n* **Reclami**: Gli utenti possono inviare un messaggio al ristorante per segnalare un problema tramite la sezione degli ordini passati.\n* **Recensioni**: Dopo la consegna, l'utente può lasciare una valutazione da 1 a 5 stelle e un commento testuale (facoltativo) sia per il ristorante che per il rider.\n\n### Classifiche Mensili\nUna volta al mese, il sistema aggiorna le seguenti classifiche:\n* Riders più veloci nel consegnare gli ordini.\n* Cibi più popolari.\n* Ristoranti con più recensioni positive.\n* Clienti che hanno speso di più.\n\n---\n\n\u003e Created with passion by [dimuzzo](https://github.com/dimuzzo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimuzzo%2Fdb-project-23-24","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimuzzo%2Fdb-project-23-24","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimuzzo%2Fdb-project-23-24/lists"}