Projekt aplikacji SaaS
8 godz. 8 min · Next.js · Full-stack i Programowanie
Daniel NoworytaFull stack DeveloperNaucz się tworzyć bezpieczne systemy uwierzytelniania i autoryzacji, korzystając z Clerk. Pokażę Ci, jak to robić krok po kroku, aby Twoje aplikacje były bezpieczne i profesjonalne.
Zrozumiesz, jak skutecznie i bezboleśnie połączyć swoją aplikację Next.js z bazą danych PostgreSQL na DigitalOcean. Pokażę Ci, jak używać Prismy, aby ułatwić ten proces.
Dowiesz się, jak zarządzać routingiem i nawigacją w swojej aplikacji, aby użytkownicy mogli łatwo i intuicyjnie poruszać się po Twojej stronie.
Pokażę Ci, jak z łatwością wdrożyć swoją aplikację na Vercel, jednym z najpopularniejszych środowisk hostingowych dla aplikacji Next.js.
Nauczysz się zarządzać stanem aplikacji i jak wykorzystać server actions w praktyce, co pozwoli Ci na tworzenie bardziej zaawansowanych i dynamicznych funkcji.
Ten kurs jest dla osób, które już mają pewne doświadczenie z JavaScript i chcą zgłębić swoje zrozumienie Next.js. Zakładamy, że znasz podstawy TypeScript, TailwindCSS, ale nie potrzebujesz doświadczenia z Next.js - wszystko wyjaśnię Ci od podstaw!
Teraz, jeżeli mamy już naszą pierwszą statystykę, którą chcemy wyświetlać
naszemu użytkownikowi, może naprawimy sobie ten problem z wyświetlaniem.
Generalnie to powinno być przesunięte do prawej strony.
Jest to związane z tym, że
nie zapakowaliśmy tych naszych dwóch statystyk w jeden
wrapper, który byłby odpowiedzialny za to, żeby one były koło siebie.
No i oczywiście ten wrapper musimy sobie też odpowiednio oscylować.
W naszym przypadku to wystarczy Flex i Items Center.
No i jeszcze zrobić nowy GAP na przykład na wartość 6.
Zapiszemy to sobie.
No i już mamy to tutaj dużo lepiej usytuowane.
Jeżeli chodzi o tą pierwszą statystykę, to możemy się jej pozbyć na chwilę obecną.
No bo generalnie to była nasza próbna, kiedy budowaliśmy ten nasz komponent.
Pozbędziemy się teraz tego na chwilę.
Zapiszemy sobie nasz komponent i zajmiemy
się teraz kolejną porcją statystyk, które chcemy wyświetlić naszemu użytkownikowi.
Mianowicie to, ile już zapłacił i to ile ciągle ma do zapłaty w tym miesiącu to
będą dwie kolejne statystyki, które wyświetlimy.
Przejdźmy więc do implementacji tej logiki.
Wróćmy do naszego edytora kodu.
Teraz przyda nam się funkcja, która pozwoli nam liczyć
sumę opłaconych i nie opłaconych subskrypcji dla danej waluty.
Będzie troszkę bardziej rozbudowana wersja funkcji, którą mieliśmy tutaj także
function i w naszym przypadku niech to będzie samo Payment mount.
No i jeżeli chodzi o property, które chcemy przekazać, no to będzie to
analogicznie do tej funkcji takie same dane przekazujemy.
Jeżeli chodzi o logikę tej funkcji tutaj,
to w środku musimy sobie stworzyć kilka rzeczy.
Na pewno będziemy potrzebowali kilku zmiennych total paid in euro i nadpłaty na
euro i analogicznie dla wszystkich naszych walut.
Czyli mamy wartości wszystkich zapłaconych
opłat w euro, dolarach, w złotówkach, tutaj
niezapłaconych w euro, niezapłaconych w dolarach i niezapłaconych w złotówkach.
Teraz oczywiście analogicznie jak w poprzedniej funkcji stworzymy sobie pętlę
for gdzie i równe zero i będzie mniejszy niż jeden lęk i plus plus.
To jest pierwsza część naszej Pięknej,
gdzie wchodzimy do środka i sterujemy sobie przez wszystkie nasze subskrypcje.
Kolejna rzecz, przez którą będziemy musieli sobie i sterować to nasze payment.
Tak, musimy sprawdzić ile opłat ma dana substytucja w sobie wrzuconych.
My na chwilę obecną mamy tak naprawdę 1 Payment person skrypcie.
Natomiast jeżeli nasza aplikacja będzie
się rozrastać, użytkownik będzie dłużej miał konto Nasze aplikacje to będziemy
mieli historyczne dane dotyczące jego opłata.
Tego też będzie tutaj trzeba kierować
poprzez wszystkie payment czyli let i od równa się 0 zrobimy w tym
przypadku dalej zrobimy sobie J jest mniejsze niż subskrypcje payment.
Tylko w tym przypadku potrzebujemy nasze i naszą wybraną subskrypcję.
Tutaj będą payment i lęk i j + +.
Czyli tutaj Teraz wchodzimy w środek i sterowania po opłatach.
No i tutaj teraz możemy sobie zrobić
instrukcję warunkową IF, gdzie pierwszym elementem to będzie subskrypcja.
Możemy sobie zrobić tak naprawdę tak.
Skopiować tą część tutaj w Payments tutaj będzie j.
To jest nasz iterator.
I jeżeli chodzi o.
My sprawdzamy sobie amount, sprawdzamy sobie status statusu.
Jeżeli status jest równy payment status zaczniemy od tych zapłaconych.
Wejdziemy do środka w naszą logikę i else.
Tutaj druga część, czyli te niezapłacone.
To są dwa warunki, które musimy sobie tutaj obsłużyć.
No i pierwsza część tutaj
w środku dla zapłaconych jeszcze tutaj u góry wyciągnijmy amount dla danej
subskrypcji, czyli kwotę, którą będziemy używać Let Amount.
Niech będzie subskrypcja.
Możemy sobie tak naprawdę to skopiować tylko na końcu użyjemy tutaj Amount.
To jest wartość, którą będziemy sobie dopisywać do poszczególnej zmiennej.
Zdarza się tego, gdzie wpadniemy tutaj w naszym warunku.
I tutaj kolejna instrukcja.
W środku możemy sobie zrobić kolejną instrukcję warunkową IF.
Już na tym levelu zagnieżdżenia może to ograć też swój czas i tak.
Natomiast tutaj myślę, że jest jak najbardziej w porządku.
Na chwilę obecną
nie mamy też dużo tych walut, czyli tutaj currency i równa się subskrypcja karencji.
Jeżeli to od euro.
Jeżeli to jest euro no to dopisujemy amount do total euro page.
Tak, total euro paid total euro page i robimy sobie plus równa się amount.
To jest pierwsza część.
Teraz możemy sobie zrobić IF dla naszej
drugiej, dla naszej drugiej waluty, czyli dla USB.
No i w tym momencie w else if dopisujemy sobie total euro USD.
Page Tak jest, mam.
Teraz analogicznie musimy tutaj postąpić jeżeli chodzi o kolejną naszą wartość.
Natomiast jeżeli chodzi o złotówki
musimy sobie przypisać total PLN paid Tak total PLN.
Jeżeli chodzi o opłacone już mamy to załatwione.
Teraz tutaj wskoczymy w warunek gdzie subskrypcje nie są opłacone.
Tak naprawdę możemy się tego pozbyć, bo to jest już jeżeli coś nie jest zapłacone.
Mamy tylko dwa warunki.
No i tutaj środku
możemy sobie tak naprawdę skopiować tą logikę, żeby nie musieć się powtarzać.
Natomiast w naszym przypadku będziemy
tutaj musieli sobie dodać wartość total euro, no i złotówka.
No i mamy logikę.
Powtórzmy sobie jeszcze raz i to robimy po
naszej subskrypcji i tolerujemy po opłatach te subskrypcje,
bo przypominam, że to może być tablica opłat.
No i jako pierwsza rzecz wyciągamy
wartość danej opłaty, w którą akurat wskakujemy po indeksie J.
I tutaj sprawdzamy najpierw status.
Jeżeli status jest opłata jest zapłacona, no to musimy dla odpowiedniej
dla odpowiedniej waluty dopisać tą wartość tutaj do naszej zmiennej.
Natomiast w jednym przypadku musimy sobie
dopisać tą wartość do nie opłaconej w danej walucie.
No i teraz na końcu tutaj możemy sobie zwrócić tak naprawdę cały obiekt.
Natomiast jeszcze zanim to, to myślę, że
warto byłoby tutaj troszeczkę popracować sobie z tymi danymi.
Po pierwsze moglibyśmy sobie skonwertować
te amount do liczb z dwoma miejscami po przecinku.
Myślę, że to będzie jak najbardziej potrzebne wyświetlaniu naszych statystyk i
do tego tutaj musimy sobie skopiować tak naprawdę te nasze zmienne.
To będzie szybsze kopiuj wklej, to tutaj zaznaczymy.
Wszystko to możemy usunąć.
Jeżeli chodzi o równa się to też tutaj logika będzie bardzo podobna.
Będziemy potrzebowali parts float
oczywiście w produkcyjnej wersji tej aplikacji.
Moglibyśmy sobie tą logikę jakoś zrobić bardziej globalnie.
Natomiast myślę, że na chwilę obecną jest to jak najbardziej ok.
Jeszcze tutaj będziemy, bo tutaj to jest w dwóch miejscach po przecinku.
No i jako nasze wartości staram wartość tych zmiennych, tak?
Czyli jak widzisz to jest pierwszy draft takich statystyk.
Myślę, że
w wersji produkcyjnej pewnie potrzebna byłaby tu jakaś znacząca refaktoryzacji.
Natomiast na chwilę obecną możemy sobie
zrzucić ten obiekt w postaci naszych zmiennych, które mamy tutaj.
Czyli możemy sobie zrobić po raz drugi coś takiego.
I tutaj zamiast
tych znaków użyjemy sobie przecinków i tutaj wszystkie kasujemy dobrze, mamy
dane, które już nam będą potrzebne do tego, żeby obliczyć sobie
kolejne sumy, czyli totalne jeżeli chodzi o zapłacone i jeżeli chodzi o nie.
Także możemy sobie teraz zrobić tutaj kolejne const const sam
i tutaj wykorzystamy sobie naszą nową funkcję const.
Payment Amount i tutaj wykorzystamy naszą najnowszą funkcję, którą stworzyliśmy.
Samo Right Payment amount tak.
Nie przekazujemy też subskrypcji.
I teraz jeżeli chodzi o Page sam możemy
sobie zrobić logikę związaną z tym, że payment mając total euro też razy 4 7.
Jeżeli wykorzystujemy drugi raz to samo to
myślę, że ma to teraz sens jak najbardziej sobie tutaj zrobić kurs czyli EUR tu.
Bezrobocie PLN to jest 4,7
to kont usd, pln to jest 4,5.
Te dwie rzeczy będziemy potrzebowali w tym momencie.
Możemy sobie to tutaj zamienić.
To jest nasz kurs euro do złotówki, to jest nasz kurs USD do złotówki.
I tutaj też analogicznie możemy wykorzystać już te zmienne.
Czyli jeżeli chodzi o pages, będziemy potrzebowali trzy rzeczy sumować.
Tutaj potrzebujemy USD.
I tutaj oczywiście potrzebujemy zmiennej PSD jeżeli chodzi o kurs.
No i + ostatnia wartość.
Czyli jeżeli jakaś subskrypcja byłaby w złotówce to total template.
Analogicznie jeżeli chodzi o sumy subskrypcji, które nie zostały
jeszcze zapłacone przez danego użytkownika czyli Page sam albo Steal to ok.
I wszystkie Payment amount.
Możemy tutaj korzystać z Not bad.
Zapisujemy to sobie.
Teraz wykorzystamy nasz komponent ponownie.
Tutaj najpierw zrobimy sobie tapetę sam.
Czyli pat tekst i jeżeli chodzi o nasz
MOK to było already pat czyli tutaj pat.
I analogicznie możemy sobie wrzucić
statystykę dotyczącą tego, co jeszcze tutaj będzie do zapłacenia.
Styl.
Zapisujemy to sobie. Przejdźmy do naszej aplikacji.
Mamy już kolejne statystyki, które
odzwierciedlają sytuację tak naprawdę aktualną, jeżeli chodzi o nasze dane.
Zobacz, że jeżeli chodzi o rzeczy, które
mamy do zapłacenia, to mamy tutaj cztery dokładnie sztuki.
Jedna kosztuje tutaj 5 69, 89, 999.
Natomiast jeżeli chodzi o te zapłacone, to jest tego troszkę tutaj więcej.
Dlatego też jeżeli przyjrzymy się naszym
statystykom, to myślę, że jak najbardziej te wartości się zgadzają.
Teraz przejdziemy do kolejnego elementu.
Mianowicie zaczniemy budować tą drugą część związaną ze statystykami dla
poszczególnych kategorii naszych subskrypcji.