Cosa costruiremo?

Una panoramica del lavoro da fare, entrando più nel profondo dell'analisi. Dalle entità in gioco a qualche cenno sulla realizzazione grafica.
francesco
Francesco Malatesta
29/06/2014 in

Benvenuto!

Questa pagina raccoglierà i vari capitoli della serie “Making of Larabox”, dedicata alla creazione di un’applicazione completa con il nostro framework preferito. Sarà, tuttavia, solo la prima di tante altre serie.

La prima cosa da fare, prima di buttarci a capofitto nel codice, è pensare. Abbiamo un progetto in testa, dobbiamo prima “raccontarlo” e poi costruirlo. In troppi pensano che buttarsi sul codice, provare e “vedere come va” sia l’approccio giusto. Basta: è una delle cose peggiori.

L’Idea

Innanzitutto, proviamo a racchiudere la nostra idea in meno di 140 caratteri. La semplicità è importante, la capacità di sintassi anche.

“Larabox è un servizio che ti permette di caricare un file per un periodo limitato di tempo, da condividere poi al volo con chi vuoi.”

Si: direi che come inizio non c’è male. 134 caratteri incluse le virgolette.

Scherzi a parte, dilunghiamoci leggermente di più.

Larabox è una web application che ti permette di condividere, per un periodo limitato di tempo a tua scelta, un file su internet. Come? Semplicemente, dopo esserti iscritto ti viene mostrato un form di caricamento. Scegli il file da caricare e avvii la procedura. I “periodi di permanenza” disponibili sono:

  • 30 minuti
  • 1 ora
  • 2 ore
  • 3 ore
  • 12 ore
  • 1 giorno
  • 2 giorni

Una volta terminata la procedura di upload viene mostrata una schermata con il link da condividere, per permettere a chiunque tu voglia di scaricare il file. Opzionalmente, inoltre, è possibile specificare una password per bloccare il file e restringere il download solo a chi ne è in possesso.

I casi d’uso possibili saranno:

  • Uploader: l’utente che carica il file. Effettua l’accesso (o si registra, nel caso non l’abbia già fatto), accede alla schermata di upload e procede con il caricamento (specificando anche i dettagli quale il periodo di memorizzazione e l’eventuale password). Una volta completato il caricamento gli viene mostrato il link del rispettivo file;
  • Downloader: l’utente che scarica il file precedentemente caricato da qualcuno (o da se stesso). Accede alla pagina del file tramite il link univoco (inserendo la password se necessario) e preme il pulsante “Download” per procedere con l’operazione;

Solo due casi d’uso ed entrambi molto semplici, come si può vedere.

Pagine ed Entità

Possiamo quindi delineare quali saranno le pagine da creare:

  • Home page : questa pagina avrà il semplice ruolo di landing page al momento dell’arrivo dell’utente sul sito. Nel caso in cui l’utente abbia già effettuato l’accesso verrà visualizzato un link alla pagina di upload. In caso contrario, invece, due pulsanti (uno di registrazione ed uno di login).
  • Pagina di caricamento file: da questa pagina l’utente (solo se ha effettuato l’accesso) può caricare il file desiderato e sceglierne i vari parametri (durata sul server, eventuale password e così via).
  • Pagina del risultato: su questa pagina, dopo l’upload, si vedranno i dettagli del file appena caricato, come il nome ed il link da usare per la condivisione.
  • Pagina di iscrizione del nuovo utente: non c’è molto da dire. L’utente inserisce i propri dati in modo tale da poter risultare come utente iscritto al servizio.
  • Pagina di accesso dell’utente già iscritto: l’utente si è già iscritto e vuole effettuare l’accesso. Anche qui nulla di troppo complicato.
  • Pagina di recupero credenziali: gli utenti sono smemorati. Fosse per loro scorderebbero di tutto. Ah, e lo fanno. Una pagina in cui inserire l’email per farsi mandare un link per il reset della password serve.
  • Pagina di reset della password: dopo aver cliccato sul link presente nell’email di recupero l’utente si trova su questa pagina. Sarà qui che sceglierà una nuova password.
  • Pagina dell’esito del caricamento: l’utente si trova sulla home page, sceglie il file da caricare, specifica i vari dettagli e clicca su “Carica”… e poi? Questa è la pagina da dove poter capire come sono andate le cose. Sempre da qui, inoltre, è possibile prendere il link univoco al file caricato.
  • Pagina del download: una pagina che mostra il minimo indispensabile. Un messaggio di benvenuto, l’eventuale box per l’inserimento della password (nel caso in cui il file caricato sia protetto) ed un bel pulsantone “Download”.

Direi che ci siamo: l’idea comincia a prendere forma, vero?

Anzi, vediamo subito quali sono le entità in gioco in questo progetto e quali proprietà memorizzarne.

Utente: l’utente che si iscrive ed usa il servizio;

  • Nome
  • Cognome
  • Email
  • Password

Upload: il file che viene caricato per un periodo limitato di tempo;

  • Nome
  • Percorso
  • Data di Scadenza
  • Password di Lettura

Per quanto riguarda l’utente c’è ben poco da dire. Sono solo quattro campi, i classici per eccellenza. Per il file, invece, occorre precisare un paio di cose per avere tutto chiaro dall’inizio.

Il percorso sarà il nome univoco del file una volta caricato. Supponiamo di avere un file di nome “foto.jpg” che stiamo caricando. Una volta terminata la procedura, il nome del file verrà memorizzato in “Nome”, mentre il file vero e proprio verrà rinominato con una stringa univoca di 40 caratteri. Precisamente, sarà un hash SHA1 della stringa “nome_file” + “data_caricamento”.

In questo modo ogni file avrà sempre un nome univoco, che verrà memorizzato anche in “Percorso”, in modo tale da collegare il file fisico al rispettivo record su database.

Realizzazione Grafica

Essendo un progetto didattico non ci complicheremo la vita riguardo l’aspetto grafico della nostra applicazione. Useremo l’ottimo Bootstrap ma quello che realizzeremo, in realtà, non sarà neanche un template.

D’altronde è anche vero che si tratta di un’applicazione molto semplice! In ogni caso ecco un piccolo logo, giusto per dare un minimo sindacale di carattere.

Chiedo pietà: avevo solo cinque ore di sonno.

Detto questo abbiamo tutto quello che ci serve per partire: manca solo preparare l’ambiente di sviluppo.