00:00 - Start
00:30 - Wstęp
01:20 - Platforma od środka
20:10 - Podsumowanie
Cześć, witam Was bardzo serdecznie w naszym kolejnym odcinku naszego podcastu Just No Code. Ja nazywam się Kamil Tarczyński i dzisiaj opowiem Wam o narzędziu, które nazywa się Xano.
Xano to narzędzie no-code’owe, które, jak same siebie określa, ma swój slogan "Build Scalable No-Code Backend". Co to znaczy? To oznacza, że Xano twierdzi, iż jest w stanie budować skalowalny backend za pomocą no-code. I to jest totalnie prawda. Za pomocą Xano możemy budować ultra wydajny backend, nie używając nawet jednej linijki kodu. Oczywiście, jeżeli taka funkcjonalność będzie potrzebna, możemy dodawać tam funkcję lambda, więc żeby rozszerzać, czy możemy rozszerzać je o inne API-request, czy o jakieś third-party solution. Ale generalnie możemy zbudować backend nie używając nawet jednej linijki kodu.
Jak Xano funkcjonuje? Jak wygląda od środka? Tego dowiecie się w dzisiejszym filmie. Zapraszam.
Dobrze, jak widzicie, jesteśmy już w konkretnej instancji naszego Xano. Troszkę inaczej, jak widzicie, wygląda ten interface, też troszkę inne rzeczy budujemy w Xano, troszkę inaczej się nimi będziemy posługiwać. W Xano budujemy tylko i wyłącznie logikę rozwiązań, to znaczy, że budujemy to, jak dana funkcja ma działać, jakie są jej kolejne kroki, co tam dokładnie ma się dziać. Xano nie umożliwia nam w żaden sposób budowy frontendu. Tutaj budujemy tylko i wyłącznie backend.
Oczywiście, Xano na przykład pozwala nam na regionalizację danych, na bardziej programistyczne podejście przy tworzeniu właśnie tych funkcji backendowych i o nich sobie zaraz poopowiadamy. Pokażę Wam dokładnie jak funkcjonuje. Natomiast najpierw zaznajemy się z dashboardem właśnie naszych instancji.
Jak widzicie, tutaj Xano nas prosi o zafiniszowanie setupu, tego na razie nie będziemy robić, to nas nie interesuje. Mamy tutaj nasz workspace usage, będziemy widzieli, ile API requestów zostało wykonanych w ostatnich 24 godzinach. Możemy sobie to przejrzeć dokładnie naszą historię. Mamy informacje o tabelach w bazie danych czy o po prostu API request. Tak, przez ostatnie 24 godziny żaden API request nie został wykonany, i to by się zgadzało. Mamy ustawienia, settingsy, tutaj mamy tylko tak naprawdę nazwy naszego workspace'u. Możemy klonować nasz workspace, możemy eksportować dane z naszego workspace'u i resetować np. drafty.
Mamy również bazę danych. No i baza danych to jest coś, co jest sercem naszej aplikacji, gdzie de facto my możemy tworzyć nowe tabele w naszych funkcjonalnościach, w naszych API. Te tabele oczywiście możemy sobie rozszerzać, tak jak uważamy za słuszne, dodawać kolejne kolumny, które będą kolumnami odpowiedniego typu. Tego widzicie jest naprawdę sporo, i mamy tutaj nieograniczone możliwości.
Mamy ustawienia naszej bazy danych konkretnej tabeli, czy np. do niej mogą się dostać tylko użytkownicy, którzy są użytkownikami autoryzowanymi. Możemy zadbać o security, variables. Możemy zarządzać wersjami, autocompletami, i tak dalej. Możemy też wyświetlić relacje między tymi tabelami, żeby zrozumieć, jak te relacje, kiedy nasza baza danych się powiększa, jak te relacje między tymi obiektami funkcjonują. To jest oczywiście jakaś mega przykładowa baza danych służąca tylko do treningu, więc niekoniecznie te relacje tutaj są mądre, ale można sobie je podejrzeć.
Możemy również dodawać sobie tabelę, czy importować je z pliku CSV, albo bezpośrednio z Airtable. W każdym miejscu w Xano macie również startowe informacje, jak zacząć pracę z tymi wszystkimi rzeczami, wideo tutoriale, więc będziecie mogli mieć całkiem łatwe wprowadzenie do tego, jak to wszystko dokładnie wygląda.
Następnie mamy API, czyli właśnie serce de facto Xano. To tutaj tworzymy sobie API grupy, w których tworzymy konkretne API endpointy, w których tworzymy konkretne funkcjonalności. Podstawowym API endpointem czy grupą jest ten API endpoint służący do autoryzacji użytkowników. Użytkownik może się zalogować, może się zarejestrować, czy może pobrać informacje po prostu o swoim koncie.
Jak widzicie, panel wygląda w ten sposób, że tutaj mamy informacje o Appie and Pointach, gdzie mamy informacje, o tym jakiego one są typu, jaki jest do nich link oraz opis, jeżeli został dodany. Mamy informację o URLu. Ten URL może być oczywiście naszym URLem. Nie musi to być URL z Xano. W domyśle jest. Mamy również z automatu tworzoną dokumentację w Swaggerze, dzięki czemu będziemy mogli się nią dzielić z deweloperami, czy z kimkolwiek będziemy mieli ochotę.
Aby dodawać API endpointy możemy też zarządzać pewnymi ustawieniami czy właśnie ten swagger jest włączony, czy nie, security variables, jak mają dokładnie wyglądać, jak możemy z nich skorzystać, historię wersji, historię requestów gdzie będziecie po prostu mieli wylistowane wszystkie requesty, które do danego endpointa wpadły. No i dokumentacje właśnie w Swaggerze.
Więc widzicie, mamy tutaj kilka tych fajnych opcji dostępnych. Wejdźmy sobie w jakiś konkretny API Endpoint. Tutaj znowu możecie podejrzeć historię requestów danego Endpointa. Możecie stworzyć jakiś snippet, z którego będą mogli korzystać inni użytkownicy.
W przypadku bazy danych możemy oczywiście tworzyć też indeksy, co jest bardzo istotne z punktu widzenia performancu aplikacji czy performancu back-endu. Tymi back-endami indeksami zarządzamy sobie ręcznie i to od nas zależy jak on będzie wyglądał, dokładnie ten indeks jak on będzie funkcjonował. Mamy także schemat, który możemy sobie wyświetlać, no i również mamy oczywiście referencje dotyczące danej bazy danych.
Wracając do naszego endpointa do loginu, tak jak mówiłem, każdy nasz endpoint jest podzielony na 3 sekcje: inputy, function stack, czyli te gdzie tworzymy całą funkcję, no i w jakiej formie jest zwrócony response. W inputach tworzymy pola, które mają trafić do naszego endpointa o ile jakichś mają trafiać. Więc musimy zdefiniować ich nazwę, czy one są required czy nie. Możemy je opisać, możemy powiedzieć czy to jest lista, czy to jest pojedynczy rekord, czy jest nullable czy nie. No i czy jest public, private albo internal only. Oczywiście tutaj wysyłamy email i tekst, password. Więc wysyłamy te dwie informacje. No i tutaj już stworzymy sobie cały function stack. Jak widzicie, w przypadku logowania najpierw sprawdzamy czy dany użytkownik istnieje, później sprawdzamy precondition. Jeżeli jakiś użytkownik nie istnieje, no to jeżeli jest wartość ta null, gdzie sobie zrobiliśmy wyszukiwanie get record, szukamy maila czy taki mail istnieje, możemy tutaj sobie skonfigurować, jak powinien dokładnie wyglądać output.
Oczywiście tutaj możemy sobie dodawać różne funkcjonalności. Jak widzicie, mamy database requesty, gdzie tych opcji mamy naprawdę sporo: query, all records, get record, has records, edit records, add multiple records in bug, add or edit record, database transaction, clear records, direct database query, które są po prostu napisane SQL-owymi statementami. Widzicie, tego jest tutaj opcji naprawdę sporo i są naprawdę zaawansowane, a to tylko database.
Mamy data manipulation, gdzie możemy tworzyć zmienne, aktualizować je, tworzyć conditionale, tworzyć pętlę, wykonywać obliczenia matematyczne, tworzyć arraje, tworzyć obiekty czy teksty. Mamy następnie rzeczy dotyczące security, jak stworzenie UID, authentication token, by date password, generate password i tak dalej, różne tokeny, dekodowanie, enkodowanie ich, enkrypcje i dekrypcje.
Mamy data caching do Redisu, możemy sobie zarządzać całym data cachingiem, który jest właśnie oparty o Redis. Mamy custom funkcje, które możemy dodawać sobie z zewnątrz lub możemy tworzyć własne. Mamy różne utility functions, czyli HTTP header dodawanie, precondyciny, spałzowanie naszego workflow, environment variables, tego typu rzeczy jest tutaj sporo.
W całej funkcji wrzucamy sobie, że zatrzymaj się w tym momencie i wyrzuć mi coś, jakąś zmienną, np. usera czy pass result, co tam się dokładnie zadziało. Możemy sobie to przetestować. Zobaczcie run and debug. No i tutaj powiedzmy sobie wpisze jakiegoś maila, kamil plus jeden have no code.io ojoj, raz dwa trzy no i kliknę run now, invite credentials mamy wywalone informacje, precondition nie został najwidoczniej spełniony możemy wejść sobie w debugger.
Widzicie tych opcji tutaj mamy naprawdę bardzo wiele. Mamy również Content Upload, mamy external API request, gdzie możemy po prostu tworzyć sobie właśnie integrować się z jakimiś zewnętrznymi API więc dzięki temu znowu nasze możliwości tworzenia zaawansowanego backendu wzrastają. Mamy mikroserwisy w wyższych planach oraz funkcje lambda.
I tak naprawdę chyba mamy wszelkie możliwości do tego, aby stworzyć naprawdę mega zaawansowany, mega responsywny, mega szybki świetnie działający backend za pomocą tylko i wyłącznie no-codu przerzucając kolejne elementy czy ustawiając sobie logikę tego jak to wygląda. Chciałbym Wam pokazać jeszcze jedną rzecz jak dokładnie wyglądają pętle, ponieważ myślę że jest to bardzo ciekawe.
Data manipulation, zróbmy sobie loopa. Mamy oczywiście różne for each, for while lub break lub continue for each lub remove entry weźmy sobie for each no i for each loop on tutaj oczywiście nie musimy wziąć jakąś listę żadnej listy tutaj nie wzięliśmy, bo tutaj bierzemy pojedynczy rekord no to tutaj w tym staku sobie dodajemy już kolejne kolejne rzeczy na przykład sobie tutaj chcemy stworzyć jakąś zmienną w każdej iteracji, żeby coś tam się nam dokładnie działo. Oczywiście to mówię tutaj o bardzo teoretycznych rzeczach, nie mówimy o żadnym konkretnym workflow, tylko o tym jak on będzie wyglądał.
No i coś co jest jeszcze bardzo ciekawą rzeczą w przypadku Xano to jest to, że my konkretnie możemy sobie definiować to jak chcemy żeby wyglądała nasza odpowiedź. Jeśli na przykład będziemy chcieli sobie zwrócić jakąś zmienną - rekord. To klikamy Customize this. Ja nie chcę żeby on zwracał wszystkie informacje o tym użytkowniku. Chcę tylko żeby zwrócił jego e-mail i password. Więc jeżeli będziemy zwracali sobie te informacje, możemy by manipulować tym, jakie chcemy żeby informacje były zwracane w responsie naszej odpowiedzi, to znaczy to, że ściągamy mniej danych na frontend, dzięki czemu możemy tym totalnie manipulować i mówić OK, fajnie, to ja chcę żeby mój frontend ładował się szybciej, to będzie miał po prostu mniej danych. Jointy na tabelach, bardzo zaawansowane query na tabelach czy tego typu rzeczy to wszystko jest jak najbardziej możliwe.
Zobaczcie, że nasze rekordy również możemy filtrować właśnie przez joiny czy przez jakieś custom query. Znowu możemy manipulować tym jak będzie wyglądał output, w jakiej zmiennej będzie, czy on będzie posortowany czy będzie miał paginację itd. No i jak on będzie wyglądał w external odpowiedzi, w tej zewnętrznej robionej z zewnątrz, a nie wewnątrz naszej funkcjonalności. Więc jak widzicie, pozwala nam to po prostu budować mega zaawansowany backend.
Mamy tutaj również tak zwane cron-joby, czyli background tasks, czyli takie tasks, które nie są wywołane przez konkretny request, tylko na przykład są wykonywane każdego dnia o godzinie 20. Tutaj ich edycja wygląda w ten sam sposób. Budujemy jakiś function stack i ustawiamy jego timing, jak często on jest powtarzany, kiedy się kończy, czy kiedy on ma po prostu wystartować. Dzięki temu możemy zrobić takie background taski, które będą sobie to wszystko przewalały.
Następnie mamy zakładkę library, w której mamy właśnie różne funkcje, customowe funkcje dodane z zewnątrz czy stworzone przez nas, dzięki czemu właśnie możemy tworzyć różne snippety. Mamy Addony, które pozwalają nam "Enrich Your Data", to jest świetne wyrażenie. Pozwalają nam one wzbogacać nasze dane o pewne inne dane. Więc tutaj jak widzicie możemy sobie, to jest bardzo coś podobnego do GraphQL, które pozwalają właśnie nam dodawać kolejne rzeczy do naszych API queries, czy response'ów, które są po prostu zwracane.
No i mamy również pliki. Czasami pliki są nam niezbędne do przechowywania na back-endzie, żeby po prostu je móc wyświetlać czy pokazywać. Mamy Marketplace, w Marketplace właśnie mamy różne snippety, różne integracje gotowe z których możemy sobie korzystać żeby po prostu tworzyć coś szybciej, czy to właśnie procesy płatności, czy wysyłanie jakichś wiadomości, czy coś dotyczącego security, czy user authentication. Jeżeli byście chcieli się zintegrować ze Stripe'em, no to tutaj pewne integracje macie już gotowe, możecie sobie podejrzeć co one w sobie zawierają, macie Extor Live Demo, czy możecie to po prostu dodać do swojego endpointu.
Widzicie one mają pięc endpoints, jedną bazę danych, jedną environment variable, więc od razu widzicie po prostu, co będzie dodane do waszego back-endu. Mamy również private. Tutaj może nie będę na ten moment wchodził. No i mamy connect, gdzie możemy po prostu integrować nasz backend z różnymi rozwiązaniami, m.in. np. z Webflow. No i również mamy settings, gdzie mamy pewne informacje.
Jak widzicie Xano ma bardzo wiele opcji tworzenia tylko i wyłącznie back-endu, ale za to back-endu bardzo zaawansowanego. Tutaj odsyłam was do dokumentacji Xano, bo zobaczycie, że funkcjonalności, które Xano oferuje są dużo bardziej obszerne niż te, które pokazałem wam w tym filmie. Jest ich naprawdę bardzo wiele. Dodatkowo Xano ma wszelkie certyfikacje poświadczające jego bezpieczeństwie, performance, itd. typu ISO, SOC itd. Możemy też dodać dodatkowe, gdybyśmy np. chcieli na terenie Stanów zjednoczonych budować jakieś rozwiązanie mettechowe, więc jest tu naprawdę świetne rozwiązanie do budowania bardzo skomplikowanego back-endu. Ja mam nadzieję, że ten film wam pokazał co Xano potrafi i jakiego ma typu możliwości i że po prostu wam coś rozjaśnił. To tyle ode mnie w tym filmie, dziękuję wam bardzo za uwagę, do zobaczenia, cześć!
Podcast No-Code / Low-Code to podcast o technologii, w którym opowiadamy o digitalizacji, automatyzacji i tworzeniu stron, budowaniu aplikacji oraz platform internetowych. Poznasz wady i zalety low code i no code oraz zrozumiesz podstawy tych narzędzi. W odcinkach podcastu eksperci firmy havenocode poruszają także tematy biznesowe, wskazują najlepsze platformy low code i najlepsze platformy no code.
Dowiedz się jak korzystać z platform no-code i low-code, takich jak: Bubble.io, Xano, Webflow, Flutter Flow, AppSheet czy Zapier. Naucz się tworzyć aplikacje bez kodowania. Poszerz swoją wiedzę i zostań citizen developerem. Sprawdź, jak rozwija się branża low code i no code w Polsce i na świecie. Słuchaj i oglądaj podcast Just No Code!