‫-: Bentornati all'ultimo video della sezione.
‫E in questa sezione abbiamo quasi finito il nostro
‫progetto, sia l'API che il sito web renderizzato,
‫almeno per ora.
‫Quindi, ancora una volta, congratulazioni per essere arrivato a questo punto e
‫per aver passato oltre 30 ore di video, ascoltando sempre
‫la mia voce.
‫Ad ogni modo, in quest'ultimo
‫video, volevo affrontare rapidamente alcuni argomenti
‫che avremmo potuto aggiungere all'API e al sito
‫Web, e fondamentalmente lasciarli come sfide, se lo
‫desideri.
‫Quindi avremmo potuto aggiungere una logica di business
‫in più al nostro progetto, ad esempio
‫aggiungendo una restrizione per cui gli utenti possono rivedere solo un tour
‫che hanno effettivamente prenotato.
‫E questo avrebbe molto senso, no?
‫Quindi voglio che tu lo provi da solo,
‫se ne hai voglia.
‫Ora queste sfide non le risolverò da solo, a
‫meno che non ci sia davvero molta richiesta per una di esse.
‫E in effetti
‫ho lasciato questo tipo di sfide più
‫complicate per gli studenti da fare da soli negli altri
‫miei corsi, e ho visto davvero alcuni risultati creativi in molti casi.
‫Quindi spero che anche tu ne provi qualcuna.
‫Ora, comunque, in seguito,
‫potresti anche implementare alcuni percorsi di prenotazione nidificati, ad
‫esempio, ottenendo tutte le prenotazioni per un determinato tour
‫e ottenendo tutte le prenotazioni per un determinato
‫utente, quindi in base agli ID.
‫Inoltre potresti migliorare notevolmente le date del tour, e ciò
‫che intendo con questo è che potresti aggiungere un partecipante
‫e un campo soldOut a ciascuna delle date.
‫E la data diventa
‫una specie di esempio del tour.
‫Quindi, quando un utente prenota effettivamente un
‫tour, deve selezionare una delle date disponibili, quindi
‫la tua prenotazione in
‫una delle date aumenterà il numero di
‫partecipanti nella data fino a quando non sarà tutto
‫esaurito, quindi in pratica quando i partecipanti sono maggiori
‫rispetto alla dimensione massima del gruppo.
‫Ora, finalmente, quando l'utente desidera prenotare
‫un determinato tour in una certa data,
‫è necessario verificare se il tour è ancora disponibile
‫in quella data selezionata.
‫Va bene?
‫Quindi questa è in realtà una sfida piuttosto
‫sofisticata ma anche molto divertente da
‫implementare e aggiungerebbe davvero una logica aziendale significativa
‫a questo progetto.
‫Infine, potresti anche implementare alcune
‫delle funzionalità di autenticazione avanzate di
‫cui abbiamo già parlato un po' prima
‫nella sezione sicurezza.
‫Ad esempio, potresti confermare l'indirizzo e-mail di un utente
‫fondamentalmente inviandogli un'e-mail con un collegamento su
‫cui deve
‫fare clic e solo
‫dopo il clic l'utente è realmente registrato nell'applicazione e
‫può fare cose come l'acquisto di tour.
‫Inoltre potresti mantenere gli utenti
‫registrati con qualcosa chiamato token di aggiornamento.
‫E anche questo è un po' complicato da
‫implementare, ma se cerchi su Google come funziona,
‫allora sono sicuro che puoi trovare
‫una buona soluzione o puoi anche inventarne una da solo.
‫Infine, potresti anche implementare l'autenticazione a due fattori, ma
‫questa sta facendo un ulteriore passo avanti.
‫Quindi, in pratica, quando un
‫utente accede, riceve qualcosa come un messaggio
‫di testo sul proprio telefono con un
‫codice che deve
‫inserire nell'applicazione per essere autenticato dopo quel secondo passaggio.
‫Quindi queste sono alcune belle
‫sfide che potresti davvero implementare sul sito API,
‫fondamentalmente del progetto.
‫Ma ci sono anche cose che puoi fare sul sito web.
‫Ad esempio, potresti implementare il modulo di registrazione, che
‫dovrebbe essere molto simile al modulo di accesso.
‫Quindi non l'ho fatto davvero perché è così simile
‫al modulo
‫di accesso, e quindi non volevo perdere tempo a farlo.
‫Ma ovviamente puoi andare avanti e
‫implementare anche quello.
‫Quindi un'altra cosa carina che potresti fare sul sito Web è
‫che nella pagina dei dettagli del tour,
‫puoi consentire a
‫un utente di aggiungere una recensione direttamente sul
‫sito Web, ma solo se l'utente ha effettuato quel tour.
‫Quindi dovresti controllare se l'utente attualmente connesso
‫ha effettivamente prenotato il tour corrente
‫e anche se il tempo del tour è già trascorso.
‫E in tal caso, puoi aggiungere un modulo alla
‫pagina in cui l'utente può aggiungere
‫una nuova recensione, ad esempio utilizzando la nostra API di revisione.
‫O anche, e questo è un po'
‫correlato, puoi nascondere l'intera sezione di
‫prenotazione nella stessa pagina dei dettagli del tour se l'utente
‫corrente ha prenotato il tour.
‫Va bene.
‫Ciò impedirebbe quindi allo stesso utente di prenotare
‫lo stesso tour due volte.
‫E poi, poiché lo stai già facendo sul
‫front-end, dovresti anche evitare prenotazioni
‫duplicate sul back-end nel tuo modello.
‫In realtà sarà
‫molto simile a prevenire recensioni duplicate dallo stesso utente.
‫Va bene.
‫Inoltre, potresti
‫implementare una funzionalità simile al tour molto carina.
‫Quindi, dove hai qualcosa come un pulsante Mi
‫piace o un cuore nel tour, e
‫poi quando l'utente fa clic
‫su di esso, viene aggiunto ai suoi preferiti.
‫E poi sul
‫sito web, potresti avere una pagina dei preferiti o solo un pannello dei preferiti in
‫cui l'utente può vedere tutti i suoi tour preferiti.
‫Quindi non è davvero difficile, ma
‫penso che sia molto divertente da implementare.
‫Successivamente, nella pagina dell'account utente, potresti implementare
‫la pagina Le mie recensioni, che ha
‫già un collegamento in questo
‫momento, e su quella pagina l'utente potrebbe
‫quindi vedere e forse anche modificare ed eliminare tutte le proprie recensioni.
‫Ora, se conosci React, questo
‫sarebbe davvero un modo fantastico per
‫utilizzare l'API Natours e allo stesso tempo allenare le tue
‫abilità React.
‫E una volta che lo fai
‫con React, puoi effettivamente ricreare l'intera pagina come
‫un'applicazione a pagina singola con React o
‫qualcosa del genere.
‫Quindi, come Angular o Vue, funzionerebbe anche per questo.
‫Destra.
‫Quindi sarebbe davvero fantastico se
‫lo facessi, e mi piacerebbe davvero vederlo implementato.
‫Infine, per gli amministratori, puoi implementare
‫le pagine Gestisci, dove gli amministratori
‫possono quindi creare, leggere, aggiornare ed eliminare tutte
‫le risorse, quindi tutti
‫i tour, gli utenti, le recensioni e le prenotazioni.
‫Ancora una volta, React potrebbe essere adatto a
‫questo, o in caso contrario,
‫anche il normale Javascript sul front-end funzionerebbe
‫molto bene, ad esempio, aggiornare tutte queste risorse utilizzando le chiamate Ajax.
‫Quindi c'è davvero un sacco di cose che potresti implementare
‫per migliorare ancora di più il nostro progetto
‫e il nostro sito web.
‫Destra?
‫E sono sicuro che
‫potresti anche inventare ancora altre cose qui.
‫Quindi, di nuovo, sarebbe davvero
‫fantastico vedere alcune di queste funzionalità effettivamente implementate da te.
‫E se ne fai uno o anche di più,
‫assicurati di condividere il tuo risultato nella sezione
‫Domande e risposte del corso.
‫Comunque, questo è tutto per questo video e per questa
‫sezione e anche quasi per questo corso.
‫Quindi un ottimo lavoro ancora una volta e ora il prossimo,
‫tutto ciò che resta davvero da fare è
‫preparare l'applicazione per la distribuzione
‫e quindi distribuirla effettivamente su un server di produzione live per condividere davvero
‫il nostro progetto con il mondo.