# Luca Pezzino E-commerce

# Premessa

Luca Pezzino E-commerce è una PWA (ProgressiveWebApp) che pur essendo fruibile come un normale sito, su dispositivi Android (e a breve anche su Apple) può trasformarsi in App (quindi icona sullo schermo lanciante l'applicazione), semplicemente premendo "OK" alla richiesta di installazione.

La PWA in numeri:

  • Paesi di spedizione: 88
  • Lingue: 2 (italiano e inglese)
  • Listini: 9
  • Valute: 4 (euro €, sterlina inglese £, yen giapponese ¥, dollaro americano $)
  • Prodotti (in funzione del colore): 893
  • Skus (prodotti in funzione del colore e della taglia): 7345
  • Immagini: 3870 (da moltiplicare per le varie dimensioni)

WARNING

Il confronto è con la versione sviluppata da Still4, ditta per la quale ho lavorato fino a metà aprile 2019 (società fallita, ringrazio per non avermi versato il TFR, pur continuando i proprietari con una società gemella). Da Still4, avevo ricevuto incarico di mantenere il progetto (pollini.com) realizzato da un ex collega, licenziato un anno prima del mio licenziamento e un altro, licenziato a sua volta ancor prima del mio arrivo. In questa settimana, vedo che la nuova ditta (che non ha nulla ha che fare con Still4) si è occupata del restyling grafico (saggia scelta). Per motivazioni legate al copyright, ho dovuto sostituire le immagini (prevalentemente scarpe e borse), con altre più generiche.

Lo scopo di questo progetto è:

  1. Sviluppare un'App che sia estremamente performante e facile da usare per il cliente finale (quindi migliori profitti)
  2. Dimostrare le mie capacità come FullStackDeveloper (FrontEnd framework + RESTful API + BackEnd framework)
  3. Sviluppare un gestionale che sia estremamente facile da usare per chiunque non abbia conoscenze tecniche
  4. Dimostrare le mie capacità e trovare un nuovo impiego

# Sviluppo

La PWA attualmente online, è stata rifatta da zero, senza tenere una sola riga di codice del sito ufficiale: partendo dai CSV con i quali Pollini carica i propri prodotti (l'ultima versione a mia disposizione, datati 18/02/2019) e dalle relative immagini, ho progettato il DataBase. Memore dell'enorme fatica che il codice del monolite originale causa nello sviluppo di nuove features (così come nel debug di problemi), ho cominciato a suddividere il BackEnd (Laravel, framework PHP, unicamente come API responder) e il FrontEnd (realizzato in Vuejs e Vuex, che rispettivamente si rifanno ad Angular e Flux/Redux), interfacciati dalle RESTful API (NON "restish"). Ho anche diviso il sito pubblico dal gestionale (chissà perchè, molti lo considerano BackEnd, ma è solo un FrontEnd protetto): e siamo a 4 suddivisioni!

Per quanto riguarda il BackEnd (ma qualora entrasse in produzione, anche il FrontEnd subirà il medesimo trattamento) ho approciato la codifica in modalità DomainDrivenDesign, quindi scomponendolo ulteriormente in moduli (tecnicamente packages): attualmente l'intero progetto è composto da ben 22 moduli (destinati ad aumentare). Il beneficio è ovvio: è come se ogni volta che usciamo, volendo un determinato paio di scarpe, lo dobbiamo cercare in un enorme scatolone in cui sono state buttate a caso centinaia di scarpe (il monolite del sito), oppure se le troviamo al primo colpo riposte nel corretto scaffale (i moduli della PWA).

Oltre che in modalità DDD, i packages sono stati sviluppati anche in modalità Test Driven Development: in sostanza, prima si scrive il test per la feature da implementare, in seguito il codice per superare il test. I tests dei moduli, sono indipendenti da tutto il resto dell'applicazione. In questo caso, le migliorie nel scegliere questo tipo di sviluppo, servono a limitare al massimo la possibilità di bugs inaspettati.

I moduli sono stati inoltre sviluppati per poter essere reimpiegati anche in altri progetti (quindi il più possibile generici)

# Conclusioni

Avrei voluto continuare a sviluppare il progetto, ma mi sono autoimposto questa settimana come ultimo termine: nelle vacanze di Natale, sistemerò qualche cosetta, probabilmente rifarò questo sito, allegando anche qualche video sulla facilità di utilizzo della PWA sviluppata e il relativo gestionale. E' stato fatto moltissimo (non è ad esempio visibile il gestionale, col quale fra le molte cose, chiunque riesce a settare i saldi in pochi click del mouse, mentre nel sito, occorre un DataBaseAdmin e svariate ore di lavoro), ma è rimasta fuori ad esempio la sitemap per il SEO su Google: vedrò sempre durante le vacanze... In riferimento ai punti della premessa:

  1. Obbiettivo decisamente raggiunto: mi ripropongo di pubblicare un video, ma un nuovo cliente che arriva sul sito, riesce a portare a termine l'acquisto in pochissimi clicks del mouse (pagamento incluso). Perchè non c'è il login/registrazione? Semplice, i dati li recupero direttamente dal server del gateway di pagamento. Il cliente viene automaticamente registrato anche nel mio DataBase (svilupperò comunque un'area riservata, per visualizzare gli acquisti effettuati).
  2. Direi obbiettivo raggiunto, ma me lo confermerà chi mi assumerà 😉
  3. Vedi accenno ai saldi, ma in realtà è tutto incentrato sull'automatizzazione e sulla sempiclità d'uso: nel sito c'era ad esempio una complessa sequenza di pulsanti da premere per il caricamento dei prodotti (avevo realizzato anche una sorta di manualino, perchè l'addetta non si ricordava mai la sequenza), nella PWA c'è un unico pulsante (ma prevedo di levarlo, e inserire automaticamente i prodotti, quando i CSV sono stati caricati sul server, o qualora Pollini optasse per usare la mia API, meglio ancora).
  4. Vedremo... Le tecnologie che ho usato si distinguono per eccellenza tecnica e sono appanaggio di pochi eletti a livello mondiale

Le potenzialità di penetrazione del mondo mobile per un E-Commerce sfruttando le PWA, sono enormi (v. es. Ali Express ) e l'adozione di questa tipologia di software da parte di tutti i venditori importanti, non dovrebbe essere un'opzione, ma una regola.