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!
Dobrze budowania naszej treści na stronie.
Nasz portal rozpoczniemy od jednego
komponentu wspólnego tak naprawdę dla wszystkich stron naszej aplikacji.
Mianowicie jeżeli zobaczysz na stronie
Dashboard mamy tą górną część napisu z napisem Dashboard.
I mamy te dwa guziki, które jeden służy do eksportu pliku CSV
prawdopodobnie z substytutami z tego startupu.
Natomiast drugi służy do otwarcia command palet.
I tutaj jeżeli chodzi o stronę subskrypcji mamy tak naprawdę bliźniaczo podobny
komponent, gdzie tylko zmieniamy title, także możemy się zająć najpierw
zbudowaniem tutaj tej części naszego portalu.
Przejdźmy do naszego edytora kodu i do naszej przeglądarki.
Ja sobie troszeczkę powiększyłem rozmiar
przeglądarki i powiększyłem rozmiar edytora kodu, żebyśmy mogli lepiej widzieć
co tutaj będzie wyświetlane w miarę postępu naszych prac tutaj.
Także przejdźmy teraz do naszego Dashboard, czyli Application
App Dashboard i tu mamy nasz page Hello from Dashboard.
Na chwilę obecną natomiast
zacznijmy od tego, że zmienimy tutaj na sekcje Będzie to sekcja naszej stronie.
Jeżeli chodzi o opcje
to całą sekcję chcemy żeby ona była na wysokości całego ekranu
I czyli miała padding wielkości 8 to sobie na chwilę obecną ustawimy.
Jeżeli chodzi o tutaj padding już mamy ustawiony dobry tak jak powinien być.
Teraz przejdźmy do edytowania poszczególnych elementów.
Co będziemy potrzebować to na pewno jednym
głównym elementem będzie Top header Web buttons.
To jest ten główny element, który widzimy tutaj w naszym dizajnie.
To jest ten top header buttons i element poniżej.
To będzie cały content dla danej strony.
On będzie, content będzie dynamiczny.
Jak widzisz tutaj jeżeli chodzi o dashboard mamy jakieś statystyki, mamy
podgląd tabelki z subskrypcja i mamy podgląd statystyk dotyczących kategorii.
Natomiast jeżeli chodzi o następną stronę to mamy też statystyki dotyczące
poszczególnych subskrypcji, no i listę wszystkich subskrypcji.
Także jak widzisz treść jest jak najbardziej dynamiczna.
Natomiast jeżeli chodzi o ten komponent
tutaj u góry, to jak najbardziej możemy to myślę ograć jednym komponentem, który
będzie tylko przyjmował propa w postaci tytułu strony na której się znajdujemy.
Przejdźmy do naszego edytora kodu i
zaznaczymy tutaj, że następna część to będzie content.
Zacznijmy odbudowę tego komponentu.
Jeżeli chodzi o nasz, postawimy sobie ten komponent najpierw
tutaj w Dashboard Page, a potem spróbujemy go wyeksportować do osobnego komponentu,
który będziemy mogli sobie również użyć na stronie subskrypcji.
Także zaczniemy od budowy tego content feedera.
Zacznijmy od diva.
Tutaj Jeżeli chodzi o to, to na pewno będziemy potrzebowali jakąś H1, która
będzie określała naszą nasz tytuł naszej strony.
Póki co jako że jesteśmy na dashboard to możemy sobie wpisać dashboard.
Zapiszemy to sobie.
Jeżeli chodzi o kolejny element, który będzie tutaj potrzebny.
To będziemy potrzebowali tak naprawdę
dwa batony, czyli możemy je też ograć tak, że zamkniemy je tutaj w jeden
kontener i to wszystko odsuniemy od siebie.
Bo tak jak widzisz batony zawsze są na końcu po prawej strony.
Czyli możemy sobie skorzystać tutaj z
flexa na cały ten kontener i sci fi content space between.
Sprawi to, że jedynka zawsze będzie po lewej stronie, a te dwa guziki tutaj
zawsze będą po prawej stronie naszego holdera.
Także przejdźmy do poznania teraz kolejnego elementu.
Pod naszym drzewem zrobimy sobie wrapper i tutaj będziemy mieli dwa batony.
Jeden to będzie baton, gdzie
będziemy mieli napis Command Palette i tutaj będziemy potrzebowali sobie
znak specjalny jeżeli chodzi o smak, bo to jest odczyn + K.
Jeżeli chodzi o drugi baton to mamy baton i tutaj będzie export CSV.
Zapiszemy sobie to co mamy.
No widzisz, tutaj nam się już pewne rzeczy pojawiły, natomiast teraz musimy zająć się
stylowo tego wszystkiego, żeby to wyglądało tak jak na naszym designie.
Tutaj także przejdźmy do naszego edytora
kodu i zaczniemy pisać tutaj poszczególne style.
Jeżeli chodzi o sam wrapper, to na pewno musimy sobie
tutaj ustawić jakiś flex, czyli flex items center i just I fit between.
O tym mówiliśmy właśnie, że chcemy sobie
zamknąć to w osobnego diva, żeby te dwa elementy przez ten czas i fit between
elementy po prostu przesuną się od siebie, czyli będą dalej od siebie.
Tak jak widzisz mamy batony po prawej stronie, tytuł strony po lewej stronie.
Teraz przejdźmy do stylu pisania tego tytułu i tutaj zrobimy tekst.
Chcemy powiększyć rozmiar tego tekstu,
czyli zróbmy sobie dwa XL i font, zrobimy sobie semi bold, zapiszemy sobie zmiany.
Już mamy napis Dashboard, tak jak to powinno być w naszym designie.
Tutaj jest prawdopodobnie użyta inna czcionka i używamy Intercity.
Prawdopodobnie jest jakaś płatna czcionka, dlatego zostaniemy z naszym Interem.
Może to troszeczkę się różni od designu.
Wróćmy do naszej strony.
Mamy H1 już postulowaną.
Teraz jeżeli chodzi o ten
tutaj element to też prawdopodobnie będzie flex, no bo chcemy sobie przesunąć te dwa
elementy obok siebie i chcemy wyśrodkować te wszystkie elementy, żeby
były fajnie drukowane, tak horyzontalnie, czyli klasy Flex i Items Center.
No i GAP ustalimy sobie, żeby odsunąć te dwa guziki od siebie.
Na razie na 4 mamy dwa guziki od siebie zostały odsunięte.
Teraz zajmijmy się przez celowanie do tego jednego guzika.
Wtedy prawdopodobnie będziemy mogli sobie tak naprawdę skopiować style z jednego do
drugiego, bo w naszym designie te dwa guziki wyglądają bardzo podobnie.
Także zaczniemy tutaj klasycznym od nazwania pierwszego guzika.
I teraz tak round chcemy zaokrąglić rogi na medium.
Chcemy zrobić border na 2.
Zapiszemy sobie jeszcze zmiany.
Na razie nie widzimy tak naprawdę żadnej
zmiany oprócz tego, że troszkę się to odsunęło.
Kolejna rzecz, którą będziemy potrzebować
to kolor na border border link i zróbmy sobie tutaj 500.
Jeżeli chodzi o biegi to zrobimy sobie beginning i tutaj zrobimy sobie 100 px.
Ustawimy na 4 PR y czyli padding na Y ustalimy sobie na 1 tekst small.
I kolor tekstu ma zasięg 500. Zapiszemy to sobie.
No i już mamy wygląd bardzo zbliżony do tego co dostaliśmy tutaj na dizajnie.
Także myślę, że jak najbardziej możemy się z tym zgodzić, że jest to wystarczające.
I tutaj pozostaje nam nic więcej, nie
mniej nie więcej niż tylko skopiować sobie te style.
I wkleić tutaj do klas name.
Zapiszemy to sobie i już mamy ten główny komponent tutaj header.
No i teraz jak już mamy wystylizowane to co chcieliśmy mieć?
No to sprawdźmy, że w eksportujemy sobie
ten header, żebyśmy mogli go używać, czyli nasze komponenty.
Tutaj zróbmy sobie kolejny komponent app Content header ts x.
No i tutaj zrobimy sobie export default function, app content header i return.
Oczywiście eksport tutaj.
I jako return podamy nasz komponent, który
mamy tutaj, czyli wytniemy to stąd wklejamy tutaj zapiszemy.
Tutaj możemy już użyć naszego AP Content header komponentu.
Zapiszemy to sobie jest wyświetlane to samo, co mieliśmy przed chwilą.
Natomiast z taką różnicą, że możemy teraz
tego samego komponentu użyć też na stronie subskrypcji.
Natomiast zanim to zrobimy, musimy dokończyć konfigurację, no bo chcemy
tak naprawdę dynamicznie przekazywać tytuł do tego komponentu.
Czyli możemy.
Tak naprawdę możemy sobie zapisać tutaj osobny interfejs app Content.
Header. Props.
I dla nas to będzie tak naprawdę title stream.
Zapiszemy to i tutaj title i użyjemy naszego interfejsu.
Jeżeli chodzi o to, to tej wartości użyjemy właśnie w tym miejscu.
Już mamy dynamiczny komponent, który
podpowiada nam o missing type, czyli w tym momencie title dashboard.
Zapiszemy to sobie, mamy wyświetlenia tak jak powinno być, natomiast z tą różnicą,
że teraz możemy sobie swobodnie tutaj przekopiować.
Myślę, że przy kopiujemy to wszystko, wskoczymy do strony subskrypcji.
No i tutaj możemy sobie wkleić naszą zawartość i
podmienić tylko i wyłącznie tytuł, który używamy w naszym komponencie.
I po zapisaniu tego teraz jak będziemy przechowywać dashboard skrypty.
Jak widzisz mamy ten pierwszy komponent, który jest
używany jako baza na wszystkich naszych stronach.
Już za sobą.
Przejdźmy teraz do kolejnej rzeczy, którą będziemy budować na naszym Burdzie.
Mianowicie myślę, że musimy pomyśleć teraz
o zatrzymywaniu danych naszego użytkownika.
Czyli prawdopodobnie zasypujemy naszą bazę danych, żeby ten użytkownik
konkretny, którego mamy aktualnie tutaj dostał jakieś subskrypcje.
No bo na chwilę obecną jak sobie
przejdziemy do naszego terminala i odpalimy nasz
nasz podgląd na naszych danych, to nasz użytkownik ma 0 subskrypcji.
Także prawdopodobnie będziemy musieli odpalić nasz skrypt decydujący, żeby
użytkownika z emailem Daniel Kropka e-mail.
Po prostu dać mu jakieś dane, na których będziemy mogli sobie
teraz dalej sterować, dalej pracować, budować nasze video i na też burcie.