Przejdź do treściARIKU://CV (PDF)

← Wszystkie projekty

cat ~/projects/ariku-pl/README

ariku.pl

Platforma webowa2026działa produkcyjnie

Ta strona: portfolio, panel społeczności serwera Discord z serwerami gier, kreator koszulek i panel właściciela. Działa na moim homelabie, ma własny pakiet testów E2E.

Cel

Jedno miejsce na portfolio, narzędzia dla społeczności z Discorda (role, serwery gier, kronika rozgrywek) i prywatny panel do pilnowania infrastruktury, bez płacenia za hosting i bez oddawania danych zewnętrznym usługom.

Rozwiązanie

Aplikacja Next.js (App Router) z kilkoma trybami: IT PRO dla rekruterów, GAMING i SYSTEM dla członków serwera po logowaniu przez Discorda, PERSONAL tylko dla właściciela. Obok strony działają boty Discord oparte na lokalnych modelach (Ollama) i Gemini, generowanie grafik przez ComfyUI oraz integracje z serwerami gier.

Architektura

  1. Next.js 16 jako jeden proces produkcyjny uruchamiany przez systemd w kontenerze LXC na Proxmoxie; reverse proxy przed nim terminuje TLS.
  2. PostgreSQL przechowuje dane trwałe (historia testów, Radar, kronika, decyzje), Redis stan bieżący i cache.
  3. Logowanie Discord OAuth2 i Steam OpenID; uprawnienia z ról na serwerze Discord, sesja po stronie serwera.
  4. Boty Discord jako osobny pakiet npm z własnym kontraktem; modele językowe lokalnie (Ollama) albo przez Gemini.
  5. Wdrożenie: build i restart usługi po przejściu pełnego pakietu testów Playwright na osobnym kontenerze.

Decyzje techniczne

Jeden proces zamiast mikroserwisów
Strona, API i panele żyją w jednej aplikacji Next.js. Przy jednym autorze i jednym hoście to mniej rzeczy do wdrażania i monitorowania; osobno działają tylko boty i zadania cykliczne.
Self-hosting zamiast chmury
Wszystko działa na domowym Proxmoxie. Koszt to prąd i sprzęt, a w zamian mam pełną kontrolę nad danymi i środowiskiem, na którym mogę ćwiczyć utrzymanie produkcji.
Testy jako warunek wdrożenia
Zmiana nie idzie na produkcję bez pełnego pakietu E2E. Wynik ostatniego przebiegu jest publicznie widoczny na stronie głównej.

Problemy i rozwiązania

Test czyścił ustawienia na produkcji
Spec konfiguracji AI w sprzątaniu usuwał zapis zamiast przywrócić poprzedni stan. Testy dotykające współdzielonych ustawień zapamiętują i odtwarzają wartość, a domyślny model ustawiłem na działający.
Utrata katalogu zależności na produkcji
Katalog node_modules trafił do repozytorium jako dowiązanie i znikał przy aktualizacji. Usunąłem go z historii śledzenia i dodałem hook pre-commit, który blokuje powtórkę.