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 Partecipante | L'Operatore | Il Gestore | |
| Utente | Modifica 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 | |
| Messaggio | Crea il Messaggio; vede, modifica e cancella i propri Messaggi Vede i Messaggi altrui di cui è destinatario | ||
| Sede | Vede tutte le Sedi | Vede tutte le Sedi | Crea, modifica e sospende tutte le Sedi |
| Assegnazione | Vede tutte le Assegnazioni | Crea, modifica e elimina tutte le Assegnazioni | |
| Categoria | Vede tutte le Categorie | Crea, modifica e sospende tutte le Categorie | |
| Attrezzo | Crea l'Attrezzo; modifica i suoi Attrezzi Vede tutti gli Attrezzi | Vede tutti gli Attrezzi | Vede e modifica tutti gli Attrezzi |
| Richiesta | Come 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 Sede | Vede, modifica e elimina tutte le Richieste |
| Come proprietario: Vede le Richieste altrui sui suoi Attrezzi | |||
| Prestito | Come richiedente: Vede i Prestiti altrui se in risposta a sue Richieste | Vede i Prestiti che prevedono la consegna presso la sua Sede | Vede, 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 | |||
| Ricevuta | Come 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 | |||
| Valutazione | Come 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 |
| Utente | Tu 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" | |
| Partecipante | Gli 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" | |
| Operatore | Consegne nelle tue sedi Elenco Prestiti non conclusi con consegna nelle sedi dell'Utente → Attrezzo, Prestito, Ricevute Comando "Archivio Ricevute" Comando "Operatori di sede" |
| Gestore | Gestione app Comando "Gestione Utenti" Comando "Gestione Categorie" Comando "Gestione Sedi" Comando "Gestione anomalie" |
PERCORSO UTENTI
| Tuoi dati→ | UTENTE |
| Utente | Solo sui propri dati: Dati dell'Utente |
| Gestore | Dati dell'Utente Solo se l'Utente è Operatore: Elenco Sedi assegnati all'Utente → Sede Comando "Aggiungi Sede a Operatore" |
| Gestione Utenti→ | GESTIONE UTENTI |
| Gestore | Elenco degli Utenti → Utente Comando "Aggiungi Utente" |
| Aggiungi Utente→ | CREA UTENTE |
| Gestore | modulo di creazione Utente → Utente |
PERCORSO MESSAGGI
| Tutti i Messaggi→ | MESSAGGI |
| Utente | Elenco 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 |
| Utente | modulo di creazione di un Messaggio (se da "Rispondi al messaggio" viene precaricato il destinatario) → Messaggio |
PERCORSO ATTREZZI
| Gestione Categorie→ | GESTIONE CATEGORIE |
| Gestore | Elenco delle Categorie → Categoria Comando "Aggiungi Categoria" |
| Click su una Categoria→ | CATEGORIA |
| Gestore | Dati della Categoria Comando "Gestione Categorie" |
| Aggiungi Categoria→ | CREA CATEGORIA |
| Gestore | Modulo di creazione di una Categoria → Categoria |
| Magazzino Attrezzi→ | MAGAZZINO ATTREZZI |
| Utente | Elenco Attrezzi disponibili al prestito → Attrezzo |
| Partecipante | Comando "Tuoi Attrezzi" |
| Tuoi Attrezzi→ | TUOI ATTREZZI |
| Partecipante | Elenco Attrezzi dell'Utente → Attrezzo Comando "Aggiungi Attrezzo" Comando "Magazzino Attrezzi" |
| Click su un Attrezzo→ | ATTREZZO |
| Utente | Dati 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 Attrezzo→ | CREA ATTREZZO |
| Partecipante | Modulo di creazione di un Attrezzo → Attrezzo |
PERCORSO RICHIESTE
| Chiedi Attrezzo in prestito → | CREA 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 Richieste→ | ARCHIVIO TUE RICHIESTE |
| Partecipante | Elenco Richieste concluse dell'Utente → Attrezzo, Richiesta, Prestito, Ricevuta, Valutazioni |
| Gestione anomalie→ | GESTIONE ANOMALIE |
| Gestore | Elenco di tutte Richieste → Attrezzo, Richiesta, Prestito, Ricevuta, Valutazioni |
PERCORSO PRESTITI
| Concedi Attrezzo in Prestito→ | CREA 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 |
| Partecipante | Elenco Prestiti conclusi dell'Utente → Attrezzo, Richiesta, Prestito, Ricevute, Valutazioni (limitato all'Attrezzo se da comando "Archivio Prestiti Attrezzo") |
| Emetti Ricevuta→ | CREA 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 Consegne→ | ARCHIVIO CONSEGNE |
| Operatore | Elenco delle Ricevute emesse nelle Sedi dell'Utente: → Attrezzo, Prestito, Ricevute |
PERCORSO VALUTAZIONI
| Aggiungi Valutazione→ | CREA 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 |
| Utente | Mappa ed elenco delle Sedi: → Sede |
| Gestore | Comando "Aggiungi Sede" |
| Aggiungi Sede→ | CREA SEDE |
| Gestore | Modulo di creazione di Sede → Sede |
| Click su una Sede→ | SEDE |
| Utente | Dati della Sede |
| Gestore | Elenco delle Assegnazioni di Operatori nella sede → Assegnazione, Utente Operatore Comando "Aggiungi Operatore a Sede" |
| Aggiungi Operatore a Sede→ Aggiungi Sede a Operatore→ | CREA ASSEGNAZIONE |
| Gestore | Modulo 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 |
| Gestore | Dati dell'Assegnazione → Sede, Utente Operatore |
| Operatori di sede→ | OPERATORI DI SEDE |
| Operatore | Elenco 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