Skip to content

Web Routes (SSR)

Strony i fragmenty HTMX panelu Manager-Content. Serwer Go renderuje HTML z użyciem szablonów i Alpine.js. Autoryzacja oparta na cookie sesji.

Strony

GET /login

Strona logowania. Formularz z dwoma trybami:

  • Kod z aplikacji — wpisanie 8-znakowego kodu alfanumerycznego (wielkie litery + cyfry) wygenerowanego w aplikacji mobilnej
  • E-mail — wpisanie adresu e-mail, następnie kodu weryfikacyjnego

Po udanym logowaniu przekierowanie na /dashboard.

GET /dashboard

Panel główny rodzica. Zawiera podsumowanie aktywności dzieci:

  • Statystyki (XP, poziom, ukończone zadania, seria dni)
  • Ostatnia aktywność
  • Lista połączonych dzieci z możliwością przełączania

GET /content

Lista treści edukacyjnych (zadań). Tabela z paginacją offset (?page=1&per_page=20). Kolumny: tytuł, typ, świat, lokacja, trudność, status. Filtrowanie i wyszukiwanie.

GET /content/new

Formularz tworzenia nowego zadania. Pola: tytuł, opis, typ, trudność, nagroda XP, bloki treści (dodawane dynamicznie przez Alpine.js).

GET /content/:id

Widok szczegółów / edycji zadania. Formularz z wczytanymi danymi, podgląd bloków treści, historia zmian.

GET /worlds

Lista światów. Tabela z paginacją offset. Kolumny: nazwa, liczba lokacji, liczba zadań, status.

GET /worlds/new

Formularz tworzenia nowego świata. Pola: nazwa, opis, kolor, ikona, pozycja na globusie.

GET /worlds/:id

Szczegóły świata z listą lokacji. Edycja danych świata, dodawanie/usuwanie lokacji, zmiana kolejności.

GET /todo

Lista zadań to-do przypisanych do dziecka (widok rodzica). Rodzic widzi cele dziecka i może dodawać sugestie.

GET /settings

Ustawienia konta rodzica:

  • Zarządzanie połączonymi dziećmi
  • Preferencje powiadomień
  • Język panelu
  • Wylogowanie

Fragmenty HTMX (Partials)

Fragmenty zwracają wyłącznie HTML — bez pełnego layoutu strony. Używane do dynamicznego aktualizowania zawartości bez przeładowania.

GET /partials/task-list

Fragment tabeli zadań z paginacją.

Query params:

ParamTypDomyślnieOpis
pageint1Numer strony
per_pageint20Elementów na stronę
searchstringWyszukiwanie po tytule
typestringFiltr: quiz, matching, creative, itp.
world_idstringFiltr po świecie

Nagłówki odpowiedzi:

X-Total-Count: 87
X-Page: 2
X-Per-Page: 20

Użycie HTMX:

html
<div hx-get="/partials/task-list?page=1"
     hx-trigger="load"
     hx-swap="innerHTML">
</div>

<button hx-get="/partials/task-list?page=2"
        hx-target="#task-table-body"
        hx-swap="innerHTML">
  Następna strona
</button>

GET /partials/todo-list

Fragment listy to-do dla wybranego dziecka.

Query params:

ParamTypDomyślnieOpis
child_idstringID profilu dziecka
statusstringFiltr: pending, done

Użycie HTMX:

html
<div hx-get="/partials/todo-list?child_id=prof_a1b2c3"
     hx-trigger="load"
     hx-swap="innerHTML">
</div>

GET /partials/world-list

Fragment tabeli światów z paginacją.

Query params:

ParamTypDomyślnieOpis
pageint1Numer strony
per_pageint20Elementów na stronę

Użycie HTMX:

html
<div hx-get="/partials/world-list?page=1"
     hx-trigger="load"
     hx-swap="innerHTML">
</div>

GET /partials/dashboard-stats

Fragment statystyk na dashboardzie. Aktualizowany co 60 sekund.

Query params:

ParamTypDomyślnieOpis
child_idstringID profilu dziecka

Użycie HTMX:

html
<div hx-get="/partials/dashboard-stats?child_id=prof_a1b2c3"
     hx-trigger="load, every 60s"
     hx-swap="innerHTML">
</div>

Zwraca karty ze statystykami: XP, poziom, ukończone zadania, seria dni, ostatnia aktywność.

Lumos Islands v2 - Dokumentacja Projektowa