Cześć. Uczę się Reacta i NodeJSa. Zrobiłem w ramach tej nauki proste portfolio do kryptowalut. Najpierw trzeba przejść przez login system w NodeJS, który łączy się z bazą danych MySQL. Trzeba podać nazwę użytkownika, maila (może być zmyślony), hasło i potwierdzenie hasła. W przypadku nie wypełnienia któregoś z pól, formularz zrobiony przy pomocy MUI wyświetla komunikat. Jeśli wszystkie pola są wypełnione, to przed wysłaniem requesta sprawdzam w React, czy oba podane hasła są takie same. Jeśli nie, to wyświetla się błąd z animacją pojawiania i znikania. Jeśli wszystko gra, to idzie request do backendu i w response, jeśli e-mail nie jest zajęty, przychodzi potwierdzenie rejestracji. Jeśli email jest zajęty, to wyświetla się podobny błąd do tego od confirm password. Po udanej rejestracji można się zalogować. Tutaj analogicznie do sprawdzenia emaila przy rejestracji, backend sprawdza czy hasło pasuje do użytkownia. Jeśli tak, to następuje logowanie. Od razu po zalogowaniu idzie request do API Coingecko, z którego pobieram nazwy wszsystkich kryptowalut i chowam je do tablicy. Jest to potrzebne do zrobienia propozycji w dropdownie przy wpisywaniu nazwy kryptowaluty. Wpisywanie nazwy kryptowaluty to właśnie pierwsza z czynności, którą trzeba zrobić. Po wybraniu nazwy należy wpisać ilość i cenę, po jakiej kupiło się wpisaną kryptowalutę. Przy wciskaniu przycisku 'add transaction' następuje walidacja. Jeśli wpisana kryptowaluta nie istnieje, albo w ilości lub cenie zostało wpisane coś innego niż liczba większa od -1, to transakcja zostaje dodana do bazy MySQL przed backend w NodeJS, tak samo jak przy rejestracji użytkownika. Po otrzymaniu potwierdzenia z backendu, że transakcja została dodana, lista transakcji na dole się aktualizuje, a następnie pobierane są aktualne ceny z Coingecko dla wszystkich kryptowalut użytkownika i liczony jest zysk (albo strata) dla każdej transakcji z osobna i ogólny zysk. Takie samo przeliczenie następuje od razu po zalogowaniu, jeśli użytkownik ma już jakieś transakcje dodane podczas innej sesji. Wszystko jest liczone w PLN. Transakcje można usuwać. W .htaccess zrobiłem przekierowania www/non-www itd na jeden adres, żeby nie było problemów z CORS. Aplikacja chodzi na hostingu MyDevil. Reactowe pliki są zwyczajnie wrzucone przez FTP, a backend w NodeJS jest odpalony przez "forever" w CLI.
Aplikacja powstała w celach niekomercyjnych. Chętnie usłyszę opinie dotyczące użytkowania aplikacji i jakości jej kodu. Chciałbym jak najwięcej się nauczyć, więc piszcie śmiało co sądzicie o czymkolwiek związanym z tą apką, zachęcam do dyskusji.
Adres: https://crypto.vyost.usermd.net
Github: https://github.com/MarekSzczepanski/react-crypto-portfolio
Pozdrawiam. :)