Home Digital WorldFormazione Stage Project: Masterchef Web Application

Stage Project: Masterchef Web Application

by Psydis
Masterchef Web Application

Ho sopranominato Masterchef Web Application il mio primo progetto affidatomi in stage, un modo carino per sviluppare il primo servizio API REST per gestire dei comuni TODO. Si è concluso ieri con la scelta del tutor di rimandare a momenti più proficui lo sviluppo della parte Websock, così da lunedì partirà il secondo progetto formativo.

Le specifiche erano chiare:

  • Sviluppo full-stack con backend in Spring Boot e frontend in Angular, appoggiandosi ad un database relazione.
  • Gestione utenti tramite autenticazione JWT
  • Full Text Search su alcuni campi
  • Gestione della cancellazione di User e Todo con business logic di integrità referenziale
  • CRUD per operazioni API
  • JUnit Test CRUD e autenticazione
  • Utilizzo di Hibernate e JPA Repository
  • Tag multipli con CHIPS di Angular Material
  • Utilizzo di PrimeNG per il layout frontend
  • Paginazione e Ordinamento gestito in backend

La verità è che non è stato per nulla semplice partire da zero e lanciarsi nel mondo Typescript e Spring, ho impiegato molto tempo su Stackoverflow o sui portali relativi ai software alla ricerca di strategie ma, con gli inizi di Gennaio, tutto ha cominciato a diventare molto più semplice una volta entrato nella meccanica specifica delle HTTP Request, Status Code e le facilitazioni intrinseche di JPA Repository.

Per scelta del tutor molto l’ho svolto da solo per imparare in autonomia la ricerca e matching del codice, del debug e del reverse engineering, ma è comunque sempre stato presente per districare i miei problemi insormontabili con il giusto consiglio. Grazie ad essi, negli ultimi giorni, ho anticipato la consegna da me prevista con l’aggiunta insperata di un dataloader dinamico all’avvio.

Principalmente ho dovuto scontrarmi con il CORS e il JWT che erano gestioni a me sconosciute, così come il routing strutturato gerarchicamente con preautorizzazioni e eccezioni legate ai permessi di accesso. Anche le prime relazioni ManyToMany mi han dato non pochi problemi a livello di persistenza e trasient, finchè non ho capito il fattore di entità parziale o necessità di gestire correttamente l’inserimento/update dei dati per mantenere l’integrità referenziale.

L’insegnamento principale di questo progetto è che per partire a sviluppare un’app web occorre seguire degli step precisi, altrimenti si perde tempo a cambiare tanto codice e ritestare parti già fatte ed assodate. Aver aggiunto dopo il JWT, il routing, la paginazione e l’ordinamento mi ha costretto a rivedere tutti i controller e cambiare tutto il codice frontend per migrare dalla paginazione/ordinamento automatici di PrimeNG alla versione lazy con diverse proprietà e metodi esposti.

La piccola demo in copertina della Masterchef Web Application riporta goliardicamente nove task di altrettanti giudici o maitre   internazionali della serie gastronomica, dall’Italia, agli USA, fino all’Australia e Inglesi. Ogni task viene colorato con badge se è scaduto, in procinto di scadere in settimana o se è completato. Allo stesso modo vengono distinti i tags e viene mostrato con quello viola se all’utente loggato è stato assegnato un tag o se ne è il creatore. La paginazione è impostata a 8 quindi dinamicamente viene creata l’opportunità di chiedere la seconda pagina. Come vezzo ho aggiunto anche l’opportunità di richiedere solo i task ancora attivi. Nell’ultima colonna è possibile modificare, completare o  cancellare un task.

La scelta è stata di assegnare il ruolo di admin a due pezzi forti, Antonino Cannavacciuolo come chef e Gordon Ramsay come sous-chef. Per Iginio MassariMatt Preston e Fred Sirieix invece il ruolo rispettivamente di Pastry, Capopartita e Maitre. Ovviamente solo gli admin posso assegnare/modificare/cancellare task, pertanto ne consegue uno scenario particolare con diverse autorizzazione dove solo l’utente assegnato (o l’admin) possono completare il task con l’apposito bottone.

Ora è tempo di ricominciare da zero, partendo con le basi di Spring e vaire aggiunte tramite Maven, ma orientandosi ad un full-stack monolitico tramite Spring MVC e Thymeleaf. Non vi svelo i dettagli, ma ho già in testa qualche strana ideuzza per realizzarlo in maniera nerd!

 

You may also like

Leave a Comment


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.