Wprowadzenie do Fireback

Fireback accelerates backend and mobile app development, offering powerful code generation tools and standardized architecture. With seamless backend integration and streamlined workflows, Fireback expedites the creation of robust and scalable apps.

Fireback to framework backendowy, odpowiedni dla większości produktów komercyjnych (zastępca dla Gin, Laravel, Nest.js) - serwer http z połączeniem do bazy danych, który jest wyposażony w potężne narzędzia do generowania kodu oraz gotowe do użycia przepływy i wtyczki. Fireback może tworzyć projekty gotowe do produkcji nawet w ciągu jednego dnia roboczego, dając ci pełną kontrolę nad tym, czego potrzebujesz.

Fireback React to także projekt związany z Fireback, który stosuje te same zasady w budowie interfejsu front-endowego (Web, Mobile i Desktop) wysokiej jakości i szybko.

Fireback Android/IOS to eksperymentalne projekty natywne, do których generujemy dużo kodu, ale moje główne dochody pochodzą z Cordova/Web i backendu, więc to główny cel.

Możesz używać backendu fireback z dowolnymi innymi frameworkami (Xamarin, Angular, Vue.js ...), jeśli chcesz. W końcu to normalny serwer http (POST, GET itp.), który obsługuje dokumentację OpenAPI 3 oraz Postmana, ale generowany przez nas kod jest głównie dla React.js; możesz albo ręcznie kodować front, albo otworzyć zgłoszenie w celu uzyskania wsparcia dla generacji kodu.

Fireback może być używany jako wtyczka lub szablon, to twoj wybór. Zauważ także, że Fireback to projekt produkcyjny, co oznacza, że możesz potrzebować kilku godzin nauki, w przeciwieństwie do prostych projektów "hello world" w Ginie. (Fireback używa GINA).

Najszybsza prezentacja demo, jaką pokazałem, trwała około 7 minut na zbudowanie nowej funkcji i jej wdrożenie.

Rozpoczęcie pracy

Masz następujące opcje, aby zainstalować Fireback:

Używając 'go install'

Możesz zainstalować Fireback używając go install github.com/torabian/fireback/cmd/fireback@latest Spowoduje to zainstalowanie go ze źródła i powinno być dostępne w folderze go/bin. Czasami twój folder go/bin nie jest w twojej ścieżce, musisz go dodać. (Sprawdź także następną sekcję)

Jeśli system zgłasza brak polecenia fireback, upewnij się, że dokładnie postępowałeś zgodnie z instrukcjami instalacji Go. Zazwyczaj oznacza to, że katalog go/bin w katalogu domowym użytkownika nie jest w zmiennej środowiskowej PATH. Zazwyczaj musisz również zamknąć i ponownie otworzyć wszelkie otwarte wiersze polecenia, aby zmiany w środowisku wprowadzone przez instalator były odzwierciedlone w wierszu polecenia.

Z binariów wydanych na githubie

Sprawdź wydania na githubie, wydaję je dla głównych systemów operacyjnych. Dla niektórych systemów operacyjnych stworzyłem również instalator, więc możesz z niego skorzystać. Umieść binarny plik i dodaj go do swojej ścieżki, nazwij go fireback lub fireback.exe, aby było łatwiej uzyskać dostęp w Powershell, terminalu Maca lub Linuxa.

  1. Otwórz terminal
  2. Użyj polecenia fireback new --name projectname --moduleName github.com/yourorg/yourproject
  3. Zostanie utworzony folder z Makefile. Sprawdź go, aby zobaczyć, jakie komendy możesz użyć.
  4. Projekt będzie zawierał folder .vscode. Musisz zainstalować rozszerzenie https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave, aby ułatwić generowanie i kompilowanie kodu.
  5. Użyj Command+Shift+P i Tasks: Run Task, a następnie możesz użyć polecenia Generate new module, aby utworzyć nowe moduły.

Ważne: Możesz potrzebować polecenia go mod tidy w katalogu twojego projektu. Ważne: Projekty Fireback nie mają specjalnego systemu budowania. Makefile to wszystko, możesz go modyfikować według swoich preferencji. To czysty projekt golang, więc trzymaj się poleceń go build ... lub go run ....

Powinieneś być w stanie utworzyć swój binarny plik, a Makefile domyślnie umieszcza utworzony binarny plik w twojej ścieżce. Modyfikuj Makefile według własnych preferencji korzystania z golang.

Projekt to tylko aplikacja Go, możesz ją uruchamiać tak, jak chcesz, ale sprawdź Makefile i cmd/fireback/Makefile, to wygodne skrypty do budowy (Tylko na macu w momencie pisania tego tekstu)

Oglądaj na youtube (Jak zbudować backend w 15 minut)

https://www.youtube.com/watch?v=G2Wjeq7ZmS0

O Fireback

Fireback to framework programistyczny backend/systemowy, który ma na

celu generowanie backendu w ciągu minut zamiast miesięcy, daje opiniowany sposób struktury oprogramowania i dostarcza proces, napisany w Golang i C++.

Produkty Fireback wykorzystują język Module2 yaml jako podstawę logiki biznesowej, a produkty stworzone za jego pomocą korzystają z automatycznie generowanego SDK dla Androida w Javie, SwiftUI, React.js, z kompletnym dto, działaniami, eksponowaniem RPC.

Fireback zaczyna od konfiguracji zerowej, zawsze będzie skompilowanym oprogramowaniem, zużywa 5MB RAM i waży mniej niż 10MB dla serwera, 30MB dla komputera stacjonarnego, a wersja C++ może być skompilowana dla urządzeń z mniej niż 1MB pamięci na chipie.

Główne zasady

Powodem rozpoczęcia tego projektu było zmienienie kierunku działań dla całego rozwoju oprogramowania, w którym uczestniczę przez najbliższe 30 lat, obejmujące między innymi:

  • Najbardziej ekspresowe kompilowanie (w ciągu 10 sekund lub mniej), najmniejsze zużycie pamięci (mniej niż 5MB w trybie bezczynności) i zapewnienie bezpieczeństwa typów.
  • Produkty powinny mieć minimalny okres eksploatacji wynoszący 20 lat po ich pierwszej budowie.
  • Nigdy nie przepisuj kodu ze względu na strukturę z tyłu lub pominięcie ważnych szczegółów (usuń linijkę "Miło by było").
  • Osiągnięcie niezależności maszynowej bez polegania na Dockerze lub innych podobnych narzędziach.
  • Kompilacja dla różnych platform, w tym webowej, natywnych mobilnych (iOS, Android), desktopowej i wbudowanych urządzeń.
  • Nie adresowanie niejednoznaczności dotyczących ról, przestrzeni roboczych, uprawnień ani autoryzacji za pośrednictwem e-maili/SMS-ów/OAuth.
  • Wykorzystanie SQL z zorganizowaną strukturą danych.
  • Priorytet na zarządzanie kodem nad generacją kodu.
  • Znaczące skrócenie czasów kompilacji dla klientów w Androidzie, React, Angularze i SwiftUI.
  • Użyj backendu bez żadnej konfiguracji dla deweloperów front-endu lub aplikacji.
  • Zawsze dostarczaj więcej niż ktokolwiek potrzebuje, zawsze zanim się zapytają

Szybki przegląd projektów Fireback

Sam Fireback to projekt backendowy, oparty na Golangu, ale w folderze clients znajdują się kilka innych projektów. Założenie jest takie, że budujemy backend w Go, a front-end w React, aplikacje mobilne na Androidzie i IOSie. Fireback dobrze wspiera inne frameworki, takie jak react native, angular, ... ale nie dostarczamy szablonów. Buduj backend w Fireback, a korzystaj z jego API REST lub generatora SDK, jeśli jest dostępny dla twojego frameworka.

fireback-golang [Gotowy do produkcji]

To backend z kilkoma modułami, takimi jak zarządzanie użytkownikami, uprawnienia, generacja kodu oparta na Gin i Gorm. Jest gotowy do produkcji, dostajesz go, klonując to repozytorium.

fireback-react [Gotowy do produkcji]

To szablon front-endu (różni się od generowania kodu React) daje ogólne ekrany aplikacji, logowanie, rejestracja. Będzie aktualizowany z czasem, ale jest wystarczająco niezawodny, aby go użyć.

fireback-android [W trakcie tworzenia]

To zestaw komponentów do budowy aplikacji na Androida. Nie zależy to naprawdę od backendu fireback, ale to szybki start do budowy projektu na Androida. To czysty projekt Androida w Javie bez żadnej modyfikacji struktury Androida. Dodano kilka bibliotek, takich jak RxJava, ... Logowanie, rejestracja, ... i kilka ekranów i aktywności są dostępne, i można je zmodyfikować.

fireback-ios [W trakcie tworzenia]

Podobnie jak fireback-android, jest to również szablon do budowy aplikacji IOS za pomocą SWIFT i SWIFTUI. Istnieje cocopod, a także wygenerowane SDK fireback w środku, zainstalowano bibliotekę Promise, oraz kilka ekranów wprowadzania, itp.

fireback-ios i fireback-android

Możesz klonować te projekty niezależnie jako szablony, nawet bez fireback. Ponadto możesz utworzyć aplikację androidową lub iosową z fireback, bez tych projektów, to tylko pomoże ci ruszyć naprzód szybciej, dając kilka ekranów. Ponadto te szablony, nie są "biblioteką". Po sklonowaniu ich, każda aktualizacja, która pochodzi od nas, będzie manualna, z wyjątkiem fireback gen android/ios, który generuje sdk z twojego backendu.

fireback-* i inne/* katalog

Fireback może również z czasem dodać i ulepszyć obsługę react native, ionic, flutter, istnieje również w pełni napisana w backendzie wersja C++ i Java. Te projekty nie mają być głównym celem fireback, są to moje osobiste narzędzia do obsługi klientów z tymi technologiami.

Terminy Fireback

Fireback to ogólna nazwa, ale odnosi się do kilku produktów w sobie. Fireback mikrousługi to sposób uwierzytelniania innych projektów backendowych, które mogą być napisane w dowolnych innych językach programowania, takich jak node.js, php, itp. Fireback Module2 to język, deklaratywny sposób defini

owania jednostek (zarówno modeli, jak i logiki biznesowej), Fireback Core, który jest źródłem frameworka, który używam wewnętrznie dla projektów klientów, i nie cały zestaw narzędzi jest eksponowany. Fireback dla Androida, to narzędzia Androida napisane w Javie do łączenia się z głównymi produktami Fireback, to samo dotyczy Fireback React i Fireback Swift. React-Iron i React-Native-Iron to dwa szablony dla react i react-native, które są otwartym źródłem, i trochę sposobem na rozpoczęcie projektów react(native?), ale wpływane przez Fireback w każdym razie.

Główne cechy na backendzie

  • Wsparcie dla aplikacji desktopowych za pomocą Wails
  • Binarki gotowe do osadzenia w aplikacjach Android i IOS natywnych, a także cordova do offline'owego użycia backendu (ta sama baza kodu)
  • Zbudowane na bazie Golang. Szybki czas kompilacji, błyskawiczna szybkość działania, minimalne zużycie pamięci.
  • Terminal (CLI) do wszystkiego, nawet do rejestracji użytkowników, zapomnienia hasła
  • Użytkownik/Rola/Przestrzeń robocza wbudowane we wszystko.
  • Zarządzanie uprawnieniami użytkownika
  • Wsparcie dla baz danych relacyjnych (Sqlite/Mysql/Oracle/Postgres)
  • Obsługa obiektu zagnieżdżonego, tablicy w obiekcie, obiektu w tablicy
  • Wielojęzyczność wbudowana w definicję
  • System wysyłania plików, wirtualne katalogi oparte na przerwanym wysyłaniu plików (TUS)
  • Walidacja formularza, nawet dla obiektów zagnieżdżonych
  • Strumieniowe zapytanie reaktywne oparte na WebSocket w Module2
  • Zapytanie zbiorcze (Aktualizacja) dla każdej jednostki.
  • Dostępność publiczna w porównaniu z chronionymi działaniami użytkownika/przestrzeni roboczej
  • Definicja niestandardowych działań, automatyczne rzutowanie z HTTP i CLI
  • Generowanie Post, Patch, Query, Delete, Bulk Patch, dla każdej jednostki
  • Przechowywanie treści HTML i RTF
  • Dynamiczne dane za pomocą obsługi JSON, a także przechowywanie danych ERD
  • QueryDSL dla każdej jednostki, aby wyszukiwać, filtrować, sortować je, bez dodatkowych zależności
  • Wbudowany mechanizm wyszukiwania
  • Wielojęzyczny system menu, paska bocznego, projektowania paska zakładek.
  • Generowanie API i działań do pracy z dziećmi (zagnieżdżone elementy) wewnątrz innej jednostki (dodawanie/usuwanie/itp.)
  • Automatyczna obsługa unikalnych identyfikatorów i relacji między elementami nienestowanymi
  • Formatowanie dat, waluty, czasu, na podstawie regionu klienta
  • Tłumaczenie błędów backendowych na podstawie języka akceptacji
  • Kompletny i jednolity przewodnik po stylu odpowiedzi JSON Google, bez jednego wyjątku
  • System mockowania manualnego i automatycznego wbudowany we wszystkie jednostki
  • System seeder do dołączania początkowej lub wymaganej zawartości do jednostek do zbudowania w binarny (yaml/json/csv)
  • Zaawansowana operacja na drugim planie dla importu/eksportu wszystkich jednostek
  • Domyślna i niestandardowo zdefiniowana definicja uprawnień
  • Generowanie szablonu danych CSV/yaml do wypełnienia i importu
  • Automatyczna dezynfekcja treści
  • Zaawansowana i czysta walidacja formularza, tworzenie treści z fragmentami
  • Rzutowanie dto/jednostki z parametrów CLI
  • Eksport PDF dla zapytań (beta) bez jakiejkolwiek zależności od stron trzecich
  • JsonDSL (dla złożonych warunków zapytań) i QueryDSL (zapytanie tekstowe)
  • Wstępnie zdefiniowane zapytania na SQL (operacje Pivot i Recursive CTE dla wszystkich jednostek)
  • System zdarzeń dla zmian na jednostce i nadawanie komunikatów do pokoi za pomocą WebSocket
  • Czyszczenie jednostek w CLI (rozwój) i wielowybranie
  • Automatyczne wymuszanie uprawnień użytkownika na treści, których mogą tworzyć lub modyfikować
  • Wiele przestrzeni roboczych i wielu ról w każdej przestrzeni roboczej
  • Wiele typów przestrzeni roboczych (takich jak Szkoła, Student itp.)
  • Bezpośrednia rejestracja w zespole poprzez publiczny klucz dołączania
  • Operacja distinct według flagi operacji użytkownika, przestrzeni roboczej
  • Interaktywne narzędzia CLI do tworzenia jednostek, a także tradycyjne
  • Obsługa złożonych enumów, które rzutowane są na wszystkie główne języki programowania

Cechy kompilatora TypeScript

  • Definicje działań, błędów, dto i jednostek
  • Informacje o polach
  • Automatyczne generowanie niezbędnych elementów formularza
  • Metody backendowe post/get/... z bezpieczeństwem typów
  • Automatyczne mapowanie zdarzeń na socket i aktualizowanie UI
  • Pamięć podręczna, filtry, wiele obsług aktualizacji
  • Bezpieczeństwo typów tłumaczeń
  • Obsługa błędów dla każdego analizatora wejścia

Cechy kom

pilatora Go

  • Generowanie aplikacji dla telefonów komórkowych w kilka sekund
  • Instalator gotowych do instalacji dla systemów Linux/Windows/Mac
  • Wydajny sposób pracy z wieloma przestrzeniami roboczymi
  • Obsługa aktualizacji z rozwiązaniem lokalnym i zdalnym
  • Wsparcie dla wszelkiego rodzaju konfiguracji
  • Obsługa modułów (Kompatybilność ze starszymi wersjami go)
  • Wsparcie dla wielu typów baz danych, migracje

Obecnie wspierane języki programowania

  • Golang (Gin, Gorm)
  • Typescript (React.js)
  • Swift (SwiftUI)
  • Java (Android)
  • Dart (Flutter)

Co dalej?

Pracuję nad rozwojem Fireback każdego dnia, ale potrzebuję czasu na osiągnięcie wszystkich celów. Moje aktualne tempo pracy na projekcie wynosi około 30-60 godzin tygodniowo. Jeśli jesteś zainteresowany, możesz pomóc mi rozwijać Fireback, zwłaszcza pisząc dokumentację, udoskonalając mechanizmy walidacji, tworząc kod dla innych języków programowania. Dziękuję za wsparcie!

Jeśli masz jakiekolwiek pytania, nie wahaj się pytać!