21 sierpnia 2025 zrobiłem pierwszy commit juz-ide-mobile-app. Tytuł: feat: initial setup.
Cztery słowa, zero funkcji, cały świat do zbudowania.
Dlaczego backend był pierwszy
Mogłem zacząć od mobilnej. Zrobiłem formularz, hardkodowałem dane, pokazałem znajomym. Feedback. Pivoty. Normalna ścieżka.
Wybrałem inaczej: najpierw domenę, potem interfejs.
Powód był praktyczny. juz-ide.pl to aplikacja o miejscu zamieszkania i zaufaniu — o tym, że ktoś naprawdę mieszka w tej dzielnicy Starachowic i może być zaufanym usługodawcą dla sąsiadów. To jest złożona logika domenowa: weryfikacja adresu, uprawnienia uzależnione od lokalizacji, zdarzenia związane z przeprowadzkami.
Gdybym zaczął od mobilnej, ta logika wylądowałaby w komponentach React Native. Trudno przetestowalna, zrośnięta z widokami, niemożliwa do ponownego użycia.
Cztery miesiące budowania backendu dało mi jedną pewność: wiem, co ta aplikacja robi domenowo. Mobilna implementuje to, nie wymyśla.
Decyzja o designie: Neo-Brutalizm
Kiedy zaczynałem mobile, musiałem wybrać design system. Normalne opcje: Material Design, iOS Human Interface Guidelines, jakaś gotowa biblioteka.
Wybrałem Neo-Brutalizm — styl, który ignoruje subtelność. Grube obramowania, wysoki kontrast, wyraźna hierarchia. Wygląda jak plakat drukowany na maszynie, nie jak „profesjonalna aplikacja”.
Dwa powody:
Pierwszy: dostępność. Aplikacja ma docierać do mieszkańców Starachowic — nie tylko do młodych technologów. Grubsze fonty, wyraźniejsze kontrasty, większe targety dotykowe — to nie jest estetyczna fanaberia, to inkluzywność.
Drugi: wyróżnienie. W App Store jest tysiąc pastelowych aplikacji o sąsiadach. Jedna wyraźna identyfikacja wizualna zapamiętuje się lepiej.
Pierwsze trzy tygodnie
Wrzesień to był maraton. W ciągu czterech dni (10–13 września) powstało: pełna Clean Architecture, logowanie z OAuth, rejestracja z weryfikacją e-mail, system nawigacji z deep linkingiem, interceptory HTTP, pierwszy formularz tworzenia usługi.
To nie był dobry rytm. To było nadrabianie czasu. Ale architektura zrobiła swoje: nie miałem kodu domenowego zrośniętego z widokami. Każdy widok komunikował się przez warstwę use-case, każdy use-case komunikował się przez API — czysto.
Jeden system, dwa ekrany
Widzę juz-ide jako jeden system — nie „backend + aplikacja mobilna”. Backend to mózg: logika, zasady, dane. Mobilna to oczy i ręce: to, przez co człowiek rozmawiamy z tym mózgiem.
Kiedy myślę o nowej funkcji, zaczynam od pytania: „co ta reguła znaczy domenowo?” — nie „jak to wygląda na ekranie”. Mobilna jest wynikowa.
We wrześniu 2025 ten model przestał być teorią. Zaczął być kodem.