Flaem
Natywny klient platformy hostingowej Flaem na Windows i Linux, napisany w C# na Avalonii, bez wbudowanej przeglądarki. Logowanie z kodem dwuetapowym, pulpit, wszystkie usługi konta, szczegóły serwera z akcjami zasilania zgodnymi z jego typem, powiadomienia, rozliczenia, sklep, zgłoszenia i bezpieczeństwo konta. Adres instalacji Flaem podaje się w aplikacji, więc ten sam program łączy się z każdym operatorem.
Wprowadzenie
Flaem to nasza platforma hostingowa: rdzeń w Ruście, który prowadzi konta, rozliczenia i węzły, panel w przeglądarce, strona produktu oraz aplikacje na telefon i komputer. Klient desktopowy to natywne okno na tę platformę dla Windows i Linuksa, napisane w C# na Avalonii.
Nie jest opakowaną stroną. Rozmawia bezpośrednio z API Flaem, z tym samym, z którego korzysta panel w przeglądarce, i rysuje własne, natywne ekrany.
Panel, w którym siedzi się cały dzień
Administrator serwerów gier nie zagląda do panelu raz na tydzień. Ma go otwartego przez cały dzień obok konsoli, klienta gry i komunikatora. W takim trybie kolejna karta w przeglądarce to nie wygoda, tylko piąte koło u wozu: ginie w tłoku zakładek, nie ma własnej ikony na pasku i nie reaguje na skróty systemowe.
Chcieliśmy dać ten sam zakres co panel w przeglądarce, ale jako aplikację, która zachowuje się jak reszta programów na pulpicie. Jeden twardy warunek: bez opakowanego Chromium. Skoro administrator ma tu spędzać większość dnia, aplikacja musi być lekka, natychmiastowa i swoja na jego systemie, a nie kolejnym oknem przeglądarki udającym program.
Jeden kontrakt z API Flaem
Klient desktopowy nie ma własnego zaplecza ani uproszczonej wersji API. Każde wywołanie przechodzi przez jedną klasę klienta HTTP, która dokleja adres instalacji i token sesji oraz obsługuje błędy, które Flaem zwraca jako zwykły tekst, i odpowiedzi bez treści. Restart serwera z okna na pulpicie idzie tym samym kontraktem co restart z przeglądarki.
Najważniejsze wywołania
| Akcja | Punkt API |
|---|---|
| Logowanie | POST /auth/login |
| Lista usług | GET /resources |
| Szczegóły usługi | GET /resources/{id} |
| Stan zasilania VPS | GET /resources/{id}/power |
| Akcja zasilania | POST /resources/{id}/power |
| Pakiety | GET /plans |
Adres instalacji zamiast zaszytego serwera
Flaem stawia u siebie każdy operator, więc aplikacja nie ma wpisanego żadnego serwera. Adres instalacji ustala od najbardziej szczegółowego: najpierw ten zapisany na tym komputerze, w pliku konfiguracji w katalogu danych użytkownika, potem zmienna środowiskowa, a na końcu adres lokalny. Ten sam program łączy się więc z instalacją każdego operatora, a w repozytorium nie leży żaden sekret.
Token sesji z logowania zostaje zapisany lokalnie, więc aplikacja wraca zalogowana po ponownym uruchomieniu.
Ekrany
adres instalacji, nazwa albo e-mail, hasło i opcjonalny kod dwuetapowy.
każda usługa z ikoną typu, nazwą pakietu, krótkim identyfikatorem, adresem i kolorowym statusem, a usługi zakończone są przygaszone, ale nigdy ukryte.
dla VPS stan zasilania na żywo, limity pakietu pokazywane tylko wtedy, gdy naprawdę przyszły z API, wykresy, konsola i parametry startowe.
powiadomienia z preferencjami, rozliczenia, sklep, zgłoszenia z odpowiedziami, profil, hasło, kody zapasowe i aktywne sesje.
Akcje zasilania zgodne z typem usługi
Przyciski zasilania wynikają wprost z kontraktu backendu. Serwer gry ma start, stop, restart i wymuszone zatrzymanie, VPS start, wyłączenie i restart, a hosting WWW i domena nie mają żadnych. Akcja, której nie ma, nie jest rysowana jako wyszarzony przycisk, a akcje niszczące wymagają potwierdzenia.
Natywnie, bez Chromium
Warstwę widoku rysuje Avalonia przez Skia, tą samą ścieżką na Windows i na Linuksie, z ciemnym motywem Fluent i skompilowanymi widokami, w których każde powiązanie danych jest sprawdzane już przy kompilacji. Czysta logika, czyli decyzje o akcjach zasilania, formatowanie i statusy, ma własne testy w osobnym projekcie, a aplikacja wychodzi jako samodzielne binarium, bez instalowania środowiska .NET u użytkownika.
Jaki jest finalny efekt?
Administrator dostaje program, który trzyma się paska zadań jak każda inna aplikacja, łączy się z instalacją Flaem swojego operatora i pokazuje te same usługi co panel w przeglądarce, bo czyta je z tego samego API. Okno nie ginie wśród kart, nie pokazuje przycisków, które nic nie robią, i nie wymaga niczego poza jednym plikiem.
Po stronie Flaem desktop nie jest osobnym produktem z własną logiką do utrzymania, tylko kolejnym klientem tego samego API. Nowa możliwość w backendzie trafia na pulpit tym samym kontraktem, z którego korzystają przeglądarka i telefon.
Pytania o Flaem
Więcej projektów
Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.
Masz podobny projekt?
Napisz do nas - wycena jest bezpłatna i wraca w godzinę.



