Nie ma apki, której szukasz? Zbudowałem własną w weekend, gadając z AI w terminalu
Od jakiegoś czasu gram w Magic: The Gathering — na luzie, żeby wgryźć się w zasady. Ostatnio wyskoczyliśmy całą ekipą na weekendowy wyjazd i chcieliśmy rozegrać to na poważnie: każdy z każdym raz, mecz do dwóch wygranych. A wtedy chcesz mieć tabelkę, na którą wszyscy patrzą – a nie zdjęcie kartki, którą ktoś zgubił po drodze do lodówki.
Wcześniej ratował nas arkusz w telefonie. Wiadomo, jak to działa: jeden edytuje, reszta widzi wersję sprzed godziny, a przy trzecim piwie nikt już nie wie, kto z kim wygrał. Moje leniwe serce postanowiło z tym skończyć.
No dobra, mógłbym poświęcić te 5-10 minut na przeszukanie sklepu z apkami mobilnymi. Pewnie coś by się znalazło — z tym, że połowa każe się najpierw zarejestrować, druga wpycha konto, powiadomienia i logowanie przez Google, a ja chcę zwyczajną tabelkę, którą otworzy cała ekipa z linku. Ale prawda jest taka, że chodziło o coś innego: chciałem sprawdzić, co realnie wyciągnę z Claude Code + bdy CLI. Magic był tylko pretekstem.
Więc zrobiłem apkę. Ale nie przez godziny klikania po panelach w chmurze – całość wygadałem z AI w terminalu. No i to mnie rozłożyło.

O co w ogóle chodzi
Wchodzisz, robisz własną „drabinkę”, dostajesz link do podania ekipie plus hasełko do edycji. Dorzucasz graczy, wbijasz wyniki, a tabela aktualizuje się na żywo u wszystkich, którzy mają link. Link jest do oglądania publiczny – hasło odblokowuje wpisywanie. Prosto. Chcesz najpierw zobaczyć, o czym gadam – mtgladder.live.page.

Co mówią cyferki
- Zero zależności – czysty Node, wbudowane moduły. Bez
npm install, bez frameworka (tak, da się). - Prawdziwy serwer – realny Linux, który zapisuje wyniki do pliku. Dzięki temu cała ekipa patrzy na jedną tabelę, bez rozjeżdżających się wersji.
- Multi-tenant – każdy robi własną drabinkę, nie depczecie sobie po wynikach.
- Hasła po scrypt – hasło do edycji nie leży nigdzie otwartym tekstem (bo link idzie w świat, a w każdej ekipie jest jeden, co spróbuje wywrócić tabelkę).
- Live scoreboard – osobny ekran meczu na telefon, stukasz w gracza i dajesz mu punkt.
Jak to poszło w praktyce
Najlepsze jest to, że ani razu nie otworzyłem żadnego panelu w chmurze. Żadnego „kliknij tutaj, wybierz region, przeciągnij suwak”. Powiedziałem AI, czego chcę, po ludzku – a ono znało narzędzie i po prostu to robiło: kupiło domenę, postawiło analitykę, założyło repo, odpaliło serwer, podpięło domenę i ustawiło pipeline, który przed każdym wdrożeniem odpala testy i nie wpuści zepsutej wersji.
Nie zapamiętałem ani jednej komendy. Mówisz — dzieje się.
Bo umówmy się – z każdą apką problem nie leży w tym, żeby ją napisać. Problem jest: gdzie to, do cholery, wrzucić, żeby ekipa weszła z linku? FTP? Trochę 2008 i modlisz się, żeby nic nie nadpisać. Vercel albo inny hosting? Spoko, tylko to kolejne konto, kolejny „połącz repo, ustaw build, dodaj zmienne”, kolejna konfiguracja od zera. A ja Buddy miałem już od dawna – więc nie zakładałem niczego nowego, po prostu powiedziałem, gdzie ma to stanąć.
Całość stoi właśnie tam – na realnym linuxowym serwerze (sandbox). I tu ciekawostka: my sami tak deployujemy Dailyweb. Ten sam patent – pipeline, który odpala testy, wrzuca zmiany na produkcję i pika na Slacku „gotowe” – chodzi u nas pod maską redakcji, tak samo jak pod devowym repo. Robimy to od dawna, tyle że z panelu. Nowość jest taka, że teraz to samo ogarniesz z terminala jednym CLI, gadając z AI, zamiast klikać.
Aha, i tak — pracuję w DW od strony technicznej, a przy Buddym siedzę i go rozwijam — i właśnie dlatego chciałem pokazać, jak mało dziś trzeba, żeby odpalić taki pomysł. Domena z fajną nazwą (mtgladder.live.page)? Za friko. A apkę sklepałem sam – bugi były moje.
Ale uczciwie, bo nie znoszę wpisów w stylu „postawiłem apkę w 10 minut”. Te 10 minut to bzdurа. W minuty zeszła ta nudna część – domena, hosting, wdrożenie – czyli to, co normalnie zjada całe popołudnie przeklikiwania się między zakładkami. Sama apka to był weekend prawdziwego dłubania: bezpieczeństwo, przypadki brzegowe, bugi na mobilce. AI nie zrobiło roboty za mnie. Zdjęło mi z głowy tę nudną część między pomysłem a wystawieniem czegoś w sieć — a to właśnie na niej normalnie się wykładam i odpuszczam.
Czego nie zamiatam pod dywan
Nie było różowo od początku.
- Wdrożyłem nową funkcję, front się zaktualizował, a nowy endpoint zwracał 404 – bo serwer trzymał w pamięci starą wersję kodu. Nauczka: wdrożenie apki z serwerem to nie samo skopiowanie plików, trzeba jeszcze zrestartować proces. Oczywiste jak się już wie.
- Tabela wyłaziła poza ekran na telefonie. Zamiast zgadywać po CSS, kazałem AI odpalić przeglądarkę w trybie telefonu i zmierzyć realną szerokość. Jedna linijka i po sprawie.
- Nie jestem devem od backendów i nie udaję. Nie oceniam, czy zrobiłbym to „poprawnie” – oceniam, że działa, a ekipa gra.

Na telefonie przy stole wygląda to tak, jak chciałem – nic nie wyłazi, wszystko się układa w słupek.
Na plus
- Cała nudna infra zeszła z drogi – zostałem z tą częścią, która jest fajna.
- Realny serwer i baza (no, plik), a nie znikający
localStorage. - Ekipa faktycznie tego używa – i to mi wystarczy.
Na minus
- To nadal weekend roboty, nie magiczny przycisk. Kto liczy na „opisz i gotowe w 5 minut” – obudzi się.
- Trzeba wiedzieć, co się chce dostać. AI dowozi infrę, ale to Ty decydujesz, że apka w ogóle ma sens.
Werdykt
Jeśli masz w głowie jakiś głupi pomysł, który utknął na „eee, ale potem trzeba by to gdzieś wystawić” – to samo „gdzie to wystawić” nie jest już tą barierą, co kiedyś. Nie musisz być devopsem – ja nie jestem, a Magic ma w końcu porządną tabelkę.
I jeszcze jedno – sandbox to dopiero wierzchołek. Z tego samego CLI da się dłubać artefakty, statyczny hosting, domeny, całe pipeline’y – sporo zabawy, o której tu nawet nie liznąłem. Jak temat się poniesie i wyświetlenia będą, zrobię z tego serię – więcej technicznych smaczków, co jeszcze ciekawego wyciągniesz z bdy poza postawieniem jednej apki.
To nie jest tekst dla ludzi, którzy chcą recenzji frameworka. To jest dla tych, co mają pomysł i im się nigdy nie chciało. Wejdźcie, zobaczcie: mtgladder.live.page. Ja swoją głupotę już odklikałem – teraz Wasza kolej!