La app di esempio: "Buoni Vicini"

Una app di esempio per guidarti alla scoperta di Drupal.
Aggiornata il:

Una app di esempio

Come esempio per la costruzione delle app con Drupal utilizzo "Buoni Vicini", una app per il prestito di attrezzi tra vicini di casa che puoi vedere in bozza qui:

https://buonivicini.bottasini.eu

Le credenziali per accedere alla app sono mostrate nella pagina di login.

Non ti sto invitando a ricostruire sul tuo computer o in cloud proprio questa app: "Buoni vicini" è solo un esempio di cosa si può fare con Drupal, da cui puoi prendere spunto per costruire l'app di tuo interesse. Anche se la app ha di per sé un obiettivo abbastanza semplice, per motivi didattici cercherò di inserirvi progressivamente una certa complessità. E' probabile che la tua prima app sia molto più semplice di questa.

Per descrivere la app di esempio applico il metodo che ti ho suggerito nella Guida precedente. I dettagli li svilupperò nelle Guide successive.   

Scopo

La app facilita il prestito gratuito di attrezzi tra persone che abitano nella stessa zona o città. Lo scambio degli attrezzi avviene direttamente tra le parti oppure, per maggiore tutela, in luoghi aperti al pubblico, quali le sedi di associazioni o biblioteche.

Utenti

L'utilizzo della app è riservato agli Utenti iscritti. I Visitatori vedono solo le istruzioni per iscriversi. L'iscrizione viene accettata dai Gestori, Utenti scelti dall'Amministratore per la gestione della app. Con l'iscrizione, gli Utenti diventano Partecipanti, che si prestano vicendevolmente gli attrezzi. Lo scambio degli attrezzi presso le diverse sedi è intermediato dagli Operatori autorizzati dai Gestori.

Processi

Il Visitatore avanza domanda di iscrizione ai Gestori. Se l'iscrizione viene accettata, diventa Partecipante. 

Il Partecipante popola il "magazzino" virtuale della app con i suoi attrezzi, catalogandoli secondo categorie predefinite dai Gestori. Chiede attrezzi altrui in prestito. Concede in prestito i propri attrezzi in risposta ad una Richiesta. Riceve o consegna gli attrezzi direttamente con la controparte o attraverso un Operatore. Quando il prestito è terminato, valuta l'esperienza del prestito.

L'Operatore gestisce la consegna degli attrezzi presso la sede cui è assegnato.

Il Gestore accetta le richieste di iscrizione dei Visitatori. Gestisce gli Utenti. Supporta gli Utenti nell'utilizzo della app. Definisce le sedi di consegna e assegna gli Operatori alle sedi. Definisce le categorie per classificare gli attrezzi. Interviene su richieste e prestiti per risolvere eventuali anomalie.

Tutti gli Utenti si scambiano messaggi nella app per concordare i dettagli dei prestiti, per risolvere problemi, per chiedere assistenza ai Gestori, senza la necessità di esporre i propri contatti personali. 

Informazioni 

Lo svolgimento dei processi sopra descritti richiede la gestione delle seguenti informazioni:

  • L'Utente registrato nella app
  • il Messaggio scritto da un Utente ad un altro
  • la Sede in cui può avvenire la consegna
  • l'Assegnazione di un Operatore ad una Sede
  • La Categoria di classificazione degli Attrezzi
  • L'Attrezzo messo a disposizione di un Partecipante agli altri Partecipanti
  • La Richiesta espressa da un Partecipante su un Attrezzo altrui
  • Il Prestito concesso dal Proprietario dell'Attrezzo al Richiedente
  • la Ricevuta che attesta l'avvenuto passaggio dell'Attrezzo (1)
  • la Valutazione dell'esperienza di Prestito, espressa dal proprietario e dal richiedente

(1) Per la tracciabilità dei passaggio di un attrezzo, chi riceve un attrezzo deve rilasciare una Ricevuta a chi lo consegna. Le Ricevute sono emesse e registrate nella app, senza necessità di stampe o firme. Se i passaggi dell'attrezzo avvengono direttamente tra proprietario e richiedente: 

  • il Richiedente emette la Ricevuta di consegna quando riceve l'Attrezzo dal Proprietario
  • il Proprietario emette la Ricevuta di restituzione quando riceve l'Attrezzo dal Richiedente

Se i passaggi avvengono con l'intermediazione degli Operatori:

  • l'Operatore emette la Ricevuta di ingresso quando riceve l'Attrezzo dal Proprietario
  • il Richiedente emette la Ricevuta di consegna quando riceve l'Attrezzo da un Operatore
  • l'Operatore emette la Ricevuta di restituzione quando riceve l'Attrezzo dal Richiedente
  • il Proprietario emette la Ricevuta di uscita dalla sede quando riceve l'Attrezzo da un Operatore 

Il Prestito è considerato "in corso" dopo l'emissione della Ricevuta di consegna e "concluso" dopo l'emissione della Ricevuta di restituzione.

Vedremo in questa Guida come tradurre queste informazioni in Entità gestite nella app.

Permessi

I Permessi definiscono cosa possono fare gli Utenti sulle informazioni:

 Il PartecipanteL'OperatoreIl Gestore
UtenteModifica i propri dati personali (password compresa)
Vede il nome degli altri Utenti
Non vede i dati personali degli altri Utenti
Crea l'Utente
Vede e modifica i dati personali di tutti gli Utenti
MessaggioCrea il Messaggio; vede, modifica e cancella i propri Messaggi
Vede i Messaggi altrui di cui è destinatario
SedeVede tutte le SediVede tutte le SediCrea, modifica e sospende tutte le Sedi
Assegnazione Vede tutte le AssegnazioniCrea, modifica e elimina tutte le Assegnazioni
CategoriaVede tutte le Categorie Crea, modifica e sospende tutte le Categorie
AttrezzoCrea l'Attrezzo; modifica i suoi Attrezzi
Vede tutti gli Attrezzi
Vede tutti gli AttrezziVede e modifica tutti gli Attrezzi
RichiestaCome richiedente:
Crea la Richiesta su un Attrezzo altrui
Prima della emissione della Ricevuta di consegna: modifica e elimina le proprie Richieste
Vede le Richieste associate a Prestiti che prevedono la consegna presso la sua SedeVede, modifica e elimina tutte le Richieste
Come proprietario:
Vede le Richieste altrui sui suoi Attrezzi 
PrestitoCome richiedente:
Vede i Prestiti altrui se in risposta a sue Richieste 
Vede i Prestiti che prevedono la consegna presso la sua SedeVede, modifica e elimina tutti i Prestiti
Come proprietario:
Crea il Prestito in risposta ad una Richiesta di un suo Attrezzo
Prima della emissione della Ricevuta di consegna: modifica e elimina i propri Prestiti 
RicevutaCome richiedente:
Crea la Ricevuta di consegna relativa ad una sua Richiesta 
Vede le Ricevute altrui emesse per una sua Richiesta
Crea la Ricevuta di ingresso o di restituzione per uno scambio avvenuto nella sua Sede
Vede tutte le Ricevute relative alla sua Sede
Vede, modifica e elimina tutte le Ricevute
Come proprietario:
Crea la Ricevuta di restituzione o di uscita relativa ad un suo Prestito
Vede le Ricevute altrui emesse per un suo Prestito
ValutazioneCome richiedente:
Crea la Valutazione su un Prestito emesso in risposta ad una sua Richiesta
Vede le Valutazioni altrui emesse per una sua Richiesta
 Vede, modifica e elimina tutte le Valutazioni
Come proprietario:
Crea la Valutazione su un suo Prestito
Vede le Valutazioni altrui emesse per un suo Prestito

Una Richiesta può essere eliminata anche dopo la concessione del Prestito, perché l'Utente potrebbe aver chiesto in parallelo più Attrezzi simili e averne scelto un altro. L'eliminazione di una Richiesta comporta l'eliminazione del Prestito eventualmente concesso, perché privo di senso in assenza della Richiesta. L'eliminazione di un Prestito concesso non elimina la Richiesta, che può essere modificata, ad esempio posticipata. Il coordinamento delle eliminazioni tra Richiesta e Prestito richiede qualche automatismo, per evitare anomalie nella app.

Vedremo in questa Guida come configurare i Permessi in Drupal. 

Percorsi

Come ogni applicazione web, la app si presenta come una sequenza di pagine, visitate dagli Utenti secondo uno o più percorsi predisposti dall'Amministratore, ad esempio mettendo a disposizione comandi agli Utenti. Nella app di esempio, tutti i percorsi partono da una pagina "Cruscotto", che mostra all'Utente le informazioni più importanti o urgenti e una serie di comandi per imboccare i diversi percorsi. In tutte le pagine è presente un comando che riporta immediatamente al Cruscotto. Vedremo da questa Guida in poi come costruire le pagine e di percorsi. 

Ecco i Percorsi previsti nella app ed il corrispondente elenco delle pagine con il contenuto mostrato ai diversi Utenti ed i link che fanno passare ad un'altra pagina.

Al login→
Cruscotto
CRUSCOTTO
UtenteTu
Comando "Tuoi dati"
La comunità
Elenco Messaggi per l'Utente e non ancora letti  → Messaggio
Comando "Tutti i  Messaggi"
Comando "Scrivi Messaggio"
Comando "Le sedi di consegna"
PartecipanteGli Attrezzi
Comando "Magazzino Attrezzi"
Comando "Tuoi Attrezzi"
Le tue Richieste
Elenco Richieste dell'Utente non concluse → Richiesta, Attrezzo, Prestito, Ricevuta, Valutazione
Comando "Archivio Tue Richieste"
I tuoi Prestiti
Elenco Prestiti dell'Utente non conclusi → Richiesta, Attrezzo, Prestito,  Ricevuta, Valutazione
Comando "Archivio Tuoi Prestiti"
OperatoreConsegne nelle tue sedi
Elenco Prestiti non conclusi con consegna nelle sedi dell'Utente → Attrezzo, Prestito, Ricevute
Comando "Archivio Ricevute"
Comando "Operatori di sede"
GestoreGestione app
Comando "Gestione Utenti"
Comando "Gestione Categorie"
Comando "Gestione Sedi"
Comando "Gestione anomalie"

PERCORSO UTENTI

Tuoi datiUTENTE
UtenteSolo sui propri dati: Dati dell'Utente
GestoreDati dell'Utente
Solo se l'Utente è Operatore:
Elenco Sedi assegnati all'Utente → Sede
Comando "Aggiungi Sede a Operatore"
Gestione UtentiGESTIONE UTENTI
GestoreElenco degli Utenti → Utente 
Comando "Aggiungi Utente"
Aggiungi UtenteCREA UTENTE
Gestoremodulo di creazione Utente → Utente 

PERCORSO MESSAGGI

Tutti i MessaggiMESSAGGI
UtenteElenco dei Messaggi inviati o ricevuti dall'Utente → Messaggio
Comando "Scrivi messaggio"
Click su un Messaggio→MESSAGGIO
Utente (se Mittente del Messaggio)Dati del Messaggio
Comando "Tutti i Messaggi"
Utente (se Destinatario del Messaggio) Dati del Messaggio
Comando "Rispondi al messaggio"
Comando "Tutti i Messaggi"
Scrivi messaggio
Rispondi al messaggio
CREA MESSAGGIO
Utentemodulo di creazione di un Messaggio (se da "Rispondi al messaggio" viene precaricato il destinatario) → Messaggio

PERCORSO ATTREZZI

Gestione Categorie→ GESTIONE CATEGORIE
GestoreElenco delle Categorie → Categoria
Comando "Aggiungi Categoria"
Click su una Categoria→ CATEGORIA
GestoreDati della Categoria
Comando "Gestione Categorie"
Aggiungi Categoria→ CREA CATEGORIA
GestoreModulo di creazione di una Categoria → Categoria
Magazzino AttrezziMAGAZZINO ATTREZZI
UtenteElenco Attrezzi disponibili al prestito → Attrezzo
PartecipanteComando "Tuoi Attrezzi"
Tuoi AttrezziTUOI ATTREZZI
PartecipanteElenco Attrezzi dell'Utente → Attrezzo
Comando "Aggiungi Attrezzo"
Comando "Magazzino Attrezzi"
Click su un Attrezzo→ATTREZZO
UtenteDati dell'Attrezzo
Partecipante (se Proprietario dell'Attrezzo)Elenco Richieste non concluse sull'Attrezzo  → Richiesta, Attrezzo, Prestito, Ricevuta, Valutazioni
Comando "Archivio Prestiti Attrezzo"
Partecipante (se diverso dal Proprietario dell'Attrezzo)Elenco Richieste non concluse (senza dati personali e senza possibilità di cliccare) → Richiesta 
Comando "Chiedi Attrezzo in prestito"
Aggiungi AttrezzoCREA ATTREZZO
PartecipanteModulo di creazione di un Attrezzo → Attrezzo

PERCORSO RICHIESTE

Chiedi Attrezzo in prestitoCREA RICHIESTA
Partecipante (se diverso dal Proprietario dell'Attrezzo)Modulo di creazione di Richiesta, con precaricato l'Attrezzo → Richiesta
Click su una Richiesta→RICHIESTA
Partecipante (se autore della Richiesta)Dati della Richiesta → Attrezzo, Prestito, Ricevuta, Valutazioni
Se il Prestito è concesso e non ha ancora ritirato l'Attrezzo: Comando "Emetti Ricevuta di consegna"  
Se il Prestito è concluso: Comando "Valuta il Prestito"
Partecipante (se Proprietario dell'Attrezzo)Dati della Richiesta → Attrezzo, Prestito, Ricevuta, Valutazioni
Se Prestito non già concesso: Comando "Concedi in prestito"
Archivio Tue RichiesteARCHIVIO TUE RICHIESTE
PartecipanteElenco Richieste concluse dell'Utente →  Attrezzo, Richiesta, Prestito, Ricevuta, Valutazioni
Gestione anomalieGESTIONE ANOMALIE
GestoreElenco di tutte Richieste →  Attrezzo, Richiesta, Prestito,  Ricevuta, Valutazioni

PERCORSO PRESTITI

Concedi Attrezzo in PrestitoCREA PRESTITO
Partecipante (se Proprietario dell'Attrezzo)Modulo di creazione di Prestito , con precaricato la Richiesta → Prestito
Click su un Prestito→PRESTITO
Partecipante (se Proprietario dell'Attrezzo)Dati del Prestito → Attrezzo, Richiesta,  Ricevute, Valutazioni
Se consegna diretta e non è presente Ricevuta di restituzione: Comando "Emetti Ricevuta di restituzione"
Se consegna in sede e non è presente Ricevuta di ingresso: Comando "Emetti Ricevuta di ingresso in sede"
Se il Prestito è concluso: Comando "Valuta il Prestito"
Operatore (se assegnato alla sede di consegna)Solo se il Prestito prevede consegna in sede:
Dati del Prestito → Attrezzo, Ricevute
Se non è presente Ricevuta di ingresso: Comando "Emetti Ricevuta di ingresso"
Se non è presente Ricevuta di restituzione: Comando "Emetti Ricevuta di restituzione"
Archivio Tuoi Prestiti
Archivio Prestiti Attrezzo
ARCHIVIO TUOI PRESTITI
PartecipanteElenco Prestiti conclusi dell'Utente →  Attrezzo, Richiesta, Prestito, Ricevute, Valutazioni (limitato all'Attrezzo se da comando "Archivio Prestiti Attrezzo")
Emetti RicevutaCREA RICEVUTA
Partecipante (se Proprietario dell'Attrezzo)
Partecipante (se autore della Richiesta)
Operatore (se assegnato alla sede di consegna)
Modulo di creazione di Ricevuta, con precaricato Prestito (e quindi la sede)→ Ricevuta
Click su una Ricevuta→RICEVUTA
Partecipante (se Proprietario dell'Attrezzo)
Operatore (se assegnato alla sede di consegna)
Dati della Ricevuta → Attrezzo, Richiesta, Prestito
Partecipante (se autore della Richiesta)Dati della Ricevuta → Attrezzo, Richiesta, Prestito
Archivio ConsegneARCHIVIO CONSEGNE
OperatoreElenco delle Ricevute emesse nelle Sedi dell'Utente: → Attrezzo, Prestito, Ricevute

PERCORSO VALUTAZIONI

Aggiungi ValutazioneCREA VALUTAZIONE
Partecipante (se Proprietario dell'Attrezzo)
Partecipante (se Autore della Richiesta)
Modulo di creazione di Valutazione con precaricato il Prestito → Valutazione
Click su una Valutazione→VALUTAZIONE
Partecipante (se Proprietario dell'Attrezzo)Dati della Valutazione del Richiedente e del Proprietario → Prestito
Partecipante (se Autore della Richiesta)Dati della Valutazione del Richiedente e del Proprietario → Richiesta

PERCORSO SEDI

Gestione sedi
Le sedi per le consegne
SEDI
UtenteMappa ed elenco delle Sedi: → Sede
GestoreComando "Aggiungi Sede"
Aggiungi SedeCREA SEDE
GestoreModulo di creazione di Sede → Sede
Click su una Sede→SEDE
UtenteDati della Sede
GestoreElenco delle Assegnazioni di Operatori nella sede → Assegnazione, Utente Operatore
Comando "Aggiungi Operatore a Sede"
Aggiungi Operatore a Sede
Aggiungi Sede a Operatore
CREA ASSEGNAZIONE
GestoreModulo di creazione di Assegnazione → Assegnazione 
Se da comando "Aggiungi Operatore a Sede" con precaricata Sede
Se da comando "Aggiungi Sede a Operatore" con precaricata Operatore
Click su una Assegnazione→ASSEGNAZIONE
GestoreDati dell'Assegnazione → Sede, Utente Operatore
Operatori di sedeOPERATORI DI SEDE
OperatoreElenco delle Assegnazioni di Operatori nelle Sedi cui è assegnato l'Utente

Automazioni

La app provvede automaticamente a:

  • eliminare il Prestito di cui è stata eliminata la Richiesta