24.08.2026 16:24

Porządki pod podłogą

⏱️ 4 min read
Share:

Moonlight urósł do rozmiaru, w którym nikt już nie trzyma całości w głowie. Dwa tysiące adresów, prawie trzysta kontrolerów, sto sześćdziesiąt serwisów. Przy takiej skali dzieje się rzecz nieprzyjemna: funkcja może być napisana, wdrożona i nie działać, a nikt tego nie zauważy, bo nikt akurat tamtędy nie przechodził.

Postanowiłem to sprawdzić uczciwie. Nie z pamięci, nie z dokumentacji — z kodu.

Najpierw spis treści

Powstał katalog wszystkiego, co platforma robi: komiksy, książki, muzyka, animacja, fanpage z forum i wiki, czat, kino, anime, mozaiki, PinIT, marketplace, merch, certyfikaty autorstwa, studia, nauka japońskiego, bitwy artystyczne. Każda domena z opisem, gdzie mieszka w kodzie i czy ma testy.

Potem sprawdziłem sam katalog — automatycznie, klasa po klasie. Pierwsza wersja pominęła sześćdziesiąt trzy kontrolery. To już samo w sobie było odpowiedzią na pytanie „czy da się to ogarnąć na oko".

Potem szukanie dziur

Napisałem sto dwa testy dla siedemdziesięciu miejsc, które wcześniej nie miały ani jednego. Nie żeby zaliczyć metrykę — żeby zobaczyć, co pęknie.

Pękło sporo.

Bitwy artystyczne nie dojeżdżały do końca. Drabinka powstawała, uczestnicy się rejestrowali, płacili wpisowe — i na tym się kończyło. Rundy nie posuwały się dalej, zwycięzca nie był wyłaniany, pula nagród zostawała w depozycie. Cały mechanizm czekał na cztery zadania cykliczne, których nikt nie włączył. Teraz chodzą co kwadrans.

Publikacja z datą nie publikowała. Ustawiasz rozdział na wtorek dziesiątą, wtorek mija, rozdział stoi. Zadanie odpowiedzialne za wypuszczanie zaplanowanych treści również nie miało wpisu w harmonogramie.

Osiem stron witało błędem serwera. Lejek rejestracji, metryki weryfikacji, analiza spamu, alerty, pulpit analityki twórcy, statystyki książki i rozdziału, strona rekomendacji. Kontrolery były gotowe, dane liczone — brakowało samych widoków. Dopisane.

Analityka pokazywała zera. Profil zainteresowań czytelnika wypełniał się z metod, które zwracały pustkę, a jego odświeżanie było zakomentowane przy okazji jakiegoś dawnego debugowania i nigdy nie wróciło. Efekt: cztery segmenty odbiorców w panelu twórcy były nieosiągalne matematycznie, niezależnie od tego, jak ktoś się zachowywał. Wskaźniki liczą się teraz z realnych danych — różnorodność czytanych treści, tempo sięgania po nowości, przywiązanie do twórców, ryzyko odpłynięcia mierzone własnym rytmem czytelnika, a nie sztywną liczbą dni.

Raport przychodów albumu był martwy. Odpytywał tabele skasowane migracją rok wcześniej. Sprzedaż jednorazowa i przedsprzedaż, dotąd twarde zero, wreszcie się liczą.

Do tego pomniejsze: ranking aktualności wywracał się na premii dla subskrybentów, więc subskrybent widział to samo co przypadkowy gość. Odebranie komuś uprawnień w zespole nie działało od razu, bo stary wpis w pamięci podręcznej dalej je przyznawał. Jedenaście zadań sprzątających nie chodziło, więc pliki tymczasowe scen, dźwięku i PDF-ów zostawały na dysku w nieskończoność. Serwis rekomendacji potrafił zadławić kolejkę zadań w tle.

Osobno przeszedłem ścieżkę bezpieczeństwa płatności i utwardziłem obsługę cofniętych transakcji. Bez szczegółów — to akurat obszar, którego nie opisuje się publicznie.

Co z tego wynika

Najbardziej nauczyło mnie to, że kod, który nikogo nie budzi w nocy, wcale nie musi działać. Nie było zgłoszeń o bitwach, bo nikt nie doszedł do finału i nie miał czego zgłosić. Nie było zgłoszeń o pustych segmentach, bo skąd czytelnik ma wiedzieć, że powinien być gdzieś przypisany. Cisza nie jest dowodem sprawności — bywa dowodem, że funkcji po prostu nikt nie używa, bo się nie da.

Stąd te sto dwa testy. Nie zastąpią przeglądu funkcja po funkcji, ale od dziś siedemdziesiąt miejsc, które wcześniej nie miały żadnego zabezpieczenia, odezwie się samo, zanim ktokolwiek na nie trafi.

Zostały rzeczy do decyzji: kilka tysięcy linii kodu, do którego nie prowadzi żaden adres — w tym dwie równoległe kopie działających systemów — oraz analityka fanpage, gdzie osiemnaście metod nadal zwraca pustkę. Jedno i drugie do osobnego zamachu.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.