7.07.2026 14:00 | Aktualizacja: 7.07.2026 15:06

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.

cover 1200 v2

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.

01 landing

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.

02 board public scaled

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.

03 scoreboard

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!