Ricordo a tutti che entro il 30 dobbiamo aver finito, anche solo lato backend con frontend fatto malissimo, l'autenticazione, la sessione utente, le richieste di amicizia e il matchmaking (per testare il matchmaking basta fare una pagina bruttissima con un bottone che se lo preme A viene fuori scritto "A" e viceversa per B, giusto per provare che sia A che B stanno lavorando sulla stessa risorsa).
Per il matchmaking servirà un algoritmo che tenga conto delle statistiche degli utenti, ma a questo ci penso io e poi mi direte la vostra su come renderlo più equilibrato e corretto.
Aggiungere al model di MongoDB di User anche i campi pending_friend_requests (lista di username quindi lista di stringhe) e friends_list (lista di username quindi lista di stringhe). Quando un utente A invia una richiesta di amicizia all'utente B, lo username di A finisce nella pending_friend_requests di B. Se B accetta, viene fatta una UPDATE su le friends_list di A e B aggiungendo i reciproci username. Se invece B rifiuta, semplicemente viene rimosso lo username di A dalla sua pending_friend_request.
Volendo possiamo valutare di implementare anche la funzione Block User senza dover per forza notificare l'utente bloccato, che potrà comunque inviare richieste di amicizia ma che finiranno a vuoto senza mai arrivare all'utente che l'ha bloccato.
Implementare la registrazione di un utente con hash della password + sistema di login che lo reindirizzi nella home page, e per verificare che sia dentro la homepage loggato stampare il suo nome nella homepage