% !TEX root = ../main.tex

\paragraph{Introduzione}
La birra fatta in casa è un'attività che riceve crescente attenzione da parte degli appassionati.
Ogni birraio amatoriale possiede un'attrezzatura per il processo di produzione della birra su
piccola scala (bollitori, fermentatori, tubi, ecc.) con una certa capacità massima di
fermentazione: il numero di litri che l'attrezzatura è in grado di gestire in un unico ``lotto". La
preparazione della birra richiede anche ingredienti, le cui quantità effettive variano da una
ricetta all'altra, questi sono vari tipi di malto, luppolo, lieviti e zuccheri (e, naturalmente, acqua).

Ai birrai piace registrare le proprie ricette per riferimento futuro e mantenere un elenco
aggiornato degli ingredienti disponibili per fare acquisti prima della successiva produzione.

L'obiettivo di questo progetto è quello di sviluppare un'applicazione per i birrai domestici che
consenta loro di mantenere un elenco di ricette e adattare quelle esistenti. L'applicazione deve
anche:
\begin{itemize}
  \itemsep0em
  \item mantenere un elenco di ingredienti disponibili;
  \item aggiornare questo elenco dopo un ciclo di produzione e quando vengono acquistati nuovi ingredienti;
  \item produrre liste della spesa per il lotto successivo;
  \item guidare il birraio nel processo di produzione.
\end{itemize}

\paragraph{Descrizione del progetto}
``Una cervecita fresca" è un'applicazione che consente ai produttori amatoriali di birra di
mantenere un database organizzato delle loro ricette di birra. L'applicazione consente agli
utenti di creare, archiviare e modificare ricette, e successivamente eliminarle, se l'utente
desidera farlo. L'applicazione è destinata solo ai produttori di birra con metodo
\href{https://www.birradegliamici.com/fare-la-birra/all-grain/}{all-grain}, e
quindi tutte le ricette sono per questo tipo di birre (le birre ``estratto" non
sono supportate).

Ogni birrificio domestico dispone di un'attrezzatura specifica, le cui caratteristiche portano a
una particolare ``dimensione del lotto": il numero massimo di litri che possono essere prodotti
in una singola produzione.
Le ricette prevedono, oltre all'acqua:

\begin{itemize}
  \itemsep0em
  \item malti
  \item luppolo
  \item lieviti
  \item zuccheri
  \item additivi
\end{itemize}

Mentre i produttori di birra preferiscono creare ricette riferendosi a valori concreti, come
chilogrammi di un particolare malto o grammi di un particolare luppolo, l'applicazione deve
memorizzare queste ricette in una misura ``assoluta", che consente una conversione diretta
della ricetta quando l'apparecchiatura, e di conseguenza la dimensione del lotto, è diversa.
Ad esempio, una possibilità è esprimere la quantità di malto in percentuale del totale e usare
i grammi per litro di miscuglio (mash) per il luppolo.

Oltre alle ricette, l'applicazione deve conservare le \textbf{istanze} della ricetta, ovvero singole
produzioni basate su una ricetta; queste istanze possono essere accompagnate da note per
fare riferimento a problemi che possono influire sulla birra risultante, note che i produttori di
birra vorrebbero rimanessero memorizzate. Un particolare tipo di nota sono le note di
degustazione, che consentono ai birrai di tenere traccia delle opinioni su una birra di un dato
lotto.

Oltre a queste funzionalità più tradizionali, l'applicazione “Una cervecita fresca”, mantiene un
elenco di ingredienti disponibili. Ciò consente ai birrai di avere la lista degli ingredienti
mancanti per la prossima produzione. Un'istanza della ricetta, ovvero una produzione di birra,
dovrebbe consentire agli utenti di aggiornare l'elenco degli ingredienti disponibili, sottraendo
gli ingredienti usati da quelli disponibili.

Sarà inoltre possibile per i birrai vendere la birra prodotta. L’applicazione deve offrire
un’interfaccia web per la prenotazione e la vendita. Un cliente registrato può prenotare un lotto
di birra in produzione, oppure parte di esso. Quando il lotto è stato prodotto, il birraio può
confermare le prenotazioni e procedere con la vendita oppure, se non è soddisfatto del
prodotto, cancellarle, per non danneggiare il proprio buon nome. La birra non prenotata può
essere messa in vendita e comprata da utenti registrati.

\paragraph{Scopo dell’applicazione}
Il sistema deve implementare le funzionalità sopra descritte, ovvero creazione, modifica e
cancellazione di ricette, creazione di istanze di ricette (birre), supporto per le note sulle birre,
controllo degli ingredienti disponibili, supporto alla produzione con allarmi, supporto alla
vendita.

\paragraph{Scopo del progetto per quanto riguarda Basi di Dati}
Si integrano i requisiti già specificati con le seguenti ulteriori informazioni:
\begin{itemize}
  \itemsep0em
  \item le ricette sono relative ad un solo birrificio ma possono essere condivise tra
diversi birrai che sono autorizzati al loro utilizzo;
  \item gli ingredienti possono essere acquistati da più fornitori (registrati).
\end{itemize}
