Case studies › RegioBus Systems · Transport · Backend + mobile · 2026

Sześć miesięcy planu. Cztery tygodnie do produktu.

RegioBus Systems planował nowy system biletowy NFC na sześć miesięcy. Po czterech tygodniach mieli działający produkt w produkcji. Z czterech programistów dedykowanych do utrzymania starego systemu zostawili jednego — z asystentem AI, z większą prędkością niż dotychczasowy zespół.

Miejski autobus nocą za oszronioną szybą, światło walidatora NFC
6 mc → 4 tygczas dostarczenia
3 z 4 osób uwolnione0 odejść · Java · Kotlin · NFC
setki tys. PLNroczne oszczędności

Skala pilota: tak wygląda pierwszy kwartał, gdy zespół ma 4 osoby. Przy 30+ pracujemy falami, zespół po zespole.

01 / Kontekst klienta

Monolit z 2008 roku, czteroosobowa drużyna i plan na pół roku.

RegioBus Systems obsługuje regionalne linie autobusowe na południu Polski — dziesiątki tysięcy pasażerów dziennie, kilkaset pojazdów, ponad dwadzieścia lat na rynku. System biletowy, na którym jeżdżą, powstał w 2008 roku jako monolit napisany w Javie 6, z mobilną aplikacją w starym Androidzie z 2014. Wszystko utrzymywała czteroosobowa drużyna: dwóch starszych deweloperów, którzy znali kod na pamięć, i dwóch młodszych, którzy dopiero odkrywali, dlaczego nic tu nie ma testów.

Każda zmiana w kodzie zajmowała tygodnie — nie dlatego, że była trudna, ale dlatego, że nikt nie chciał ryzykować dotknięcia części, której nie rozumiał. Plan zarządu był ambitny: nowy system biletowy NFC, integracja z infrastrukturą operatorów płatności, otwarcie API dla aplikacji partnerskich. Czas: sześć miesięcy. Wycena od trzech zewnętrznych dostawców: 1.4–2.1 mln PLN.

02 / Kto to prowadził

Dwie osoby, jeden numer telefonu, code review we dwóch przez cały kwartał.

Maciej StopaLead operacyjny
Backend Spring Boot 3, warstwa mobile NFC w Kotlinie wraz z UI dla kierowców, migracja Oracle 11 → PostgreSQL 16. 12 lat w mobile, 5 w fintechu i transporcie, wcześniej platform owner u operatora płatności (4M+ MAU).
Tomek WojciechowskiAI workflow
Setup Claude Code, dwa custom MCP servery (DB read-only z białą listą + logi produkcyjne), CLAUDE.md (280 linii konwencji zespołu). Prowadził też wszystkie rozmowy z zarządem i CTO klienta.

03 / Problem · Co naprawdę bolało

Pierwsze pytanie nie dotyczyło technologii.

Pierwsze pytanie podczas analizy nie dotyczyło technologii. Brzmiało: „Co się stanie z waszym zespołem, jak skończycie ten projekt?". Cisza w pokoju trwała kilkanaście sekund.

  • Po stronie biznesu: sześć miesięcy bez wpływów z nowego systemu, ryzyko, że operatorzy płatności pójdą do konkurencji.
  • Po stronie IT: czterech ludzi, którzy wiedzą, że po wdrożeniu nowego systemu zostaną z aplikacją, której nie tworzyli i nie rozumieją. Dwóch z nich już rozmawiało z rekruterami.
  • Po stronie zarządu: przekonanie, że można „zamówić" system biletowy jak meble. Brak doświadczenia z tym, jak modernizacja wygląda od środka.

04 / Podejście SZRON

3 miesiące, stała opłata, modernizacja z ich zespołem.

Po dwóch dniach analizy zaproponowaliśmy alternatywę: 3 miesiące, stała opłata, modernizacja prowadzona z udziałem ich zespołu. Główne założenia, które wpisaliśmy do oferty:

  • Modernizujemy wspólnie z waszymi programistami. Każdy commit produkcyjny piszą oni — my obok. Po 3 miesiącach to oni mają ownership nowego kodu.
  • Stała opłata, zamknięty zakres. Nie rozliczamy się godzinami — nie mamy interesu w przedłużaniu. Co jest w zakresie — robimy. Co nie jest — wpisujemy do listy następnych iteracji.
  • Nowy stack, ale realistyczny. Spring Boot 3 (bo Java to ich język), Kotlin do warstwy NFC, PostgreSQL jako baza. Bez przepisywania na „modne" technologie, których ich zespół nie utrzyma.
  • AI tooling z CLAUDE.md od dnia 1. Claude Code + dedykowane MCP servery do bazy i do logów. Konkretny workflow opisany w pliku, który zostaje w repo.
Zarząd zaakceptował ofertę nie dlatego, że była najtańsza (nie była). Zaakceptowali ją, bo była jedyną, która adresowała „co zrobimy z zespołem". Ostatecznie wybrali ją wszyscy: zarząd, CTO i czterech programistów.
Decyzja, która zmieniła wszystko — wniosek SZRON

05 / Przebieg projektu · 4 tygodnie do produkcji

Pierwsi pasażerowie w czwartym tygodniu.

Plan kwartalny przewidywał 12 tygodni do pełnego wdrożenia z transferem wiedzy. Działający produkt zobaczył pierwszych pasażerów w czwartym tygodniu — pilotowo na jednej linii. Reszta kwartału to skalowanie, integracje i przekazanie.

Tydzień 1

Diagnoza i decyzje techniczne

Czytanie istniejącego kodu, mapa zależności, pierwsze decyzje stack-owe. Setup CLAUDE.md, MCP serverów, parowanie z każdym z 4 programistów.

Tydzień 2

Core domeny

Model bilet–trasa–pasażer. Pierwsze endpointy Spring Boot. Pierwszy moduł NFC w Kotlinie. Wszystko pisane parami programista RegioBus + SZRON.

Tydzień 3

Integracje i CI/CD

Operator płatności, terminale w autobusach, GitHub Actions z testami. Pierwsze ćwiczenia code review prowadzone przez zespół RegioBus.

Tydzień 4

Pilot produkcyjny

Linia 215 (mała, kontrolowana). 1 200 transakcji NFC pierwszego dnia, 0 błędów krytycznych. Zarząd zobaczył wpływy z nowego systemu.

Tygodnie 5–10

Skalowanie + uczenie zespołu

Rolowanie na kolejne linie. Programiści RegioBus prowadzą feature'y samodzielnie, my robimy review.

Tygodnie 11–12

Przekazanie

Dokumentacja, mapa „co dalej", finalna wersja CLAUDE.md. Decyzja zarządu: dwóch programistów przesunąć do innego projektu, jeden zostaje przy systemie biletowym z asystentem AI.

06 / Wynik

W liczbach i w kulturze.

~6× szybciej4 tygodnie zamiast 6 miesięcy do produktu
0 odejśćz 4 osób została 1 z AI, 3 przesunięto
7% → 68%pokrycie testami (unit + integration)
Pokrycie testami7% → 68%
Każdy nowy moduł pisany z testami — unit i integration.
Wskaźnik change-rate3 dni zamiast 14
Średnia zmiana wdrażana w 3 dni zamiast 14.
Zaplanowaliśmy 6 miesięcy na nowy system. Po czterech tygodniach mieliśmy działający produkt. Z czterech programistów zostawiliśmy jednego, z asystentem AI.
Marek Zawadzki — CTO, RegioBus Systems · LinkedIn i pełne dane referencyjne na życzenie po NDA · współpraca z Maciejem Stopą i Tomkiem Wojciechowskim

07 / Stack technologiczny

Dokładnie to, co utrzymują dalej.

Zasada „nie kupuj zespołowi narzędzi, których nie utrzyma" przekłada się na konkretne wybory:

BackendJava 21 · Spring Boot 3.2
Java 21, Spring Boot 3.2, Spring Data JPA, Flyway. Ten sam język, ale współczesny — żaden z programistów nie musiał uczyć się od zera.
Mobilne / NFCKotlin + Android NFC API
Migracja z Javy do Kotlina zrobiona przez parowanie — w 3 tygodnie cały zespół pisał już w Kotlinie naturalnie.
BazaPostgreSQL 16
PostgreSQL 16 z partycjonowaniem po dacie. Migracja z Oracle 11 zrobiona Flywayem, krok po kroku, bez downtime.
AI workflowClaude Code + 2 MCP
Claude Code jako daily driver, dwa custom MCP servery — jeden do bazy (read-only z białą listą), drugi do logów produkcyjnych. CLAUDE.md liczy 280 linii — wszystkie konwencje zespołu.
InfrastrukturaAWS ECS Fargate + RDS
AWS ECS Fargate + RDS, terraform pisany razem z DevOps po stronie klienta. Nic, czego nie mogą sami zmienić.

08 / Co zostało po nas

Po wyjściu z projektu zostawiliśmy cztery rzeczy.

01

Działający system biletowy NFC

Obsługujący 100% pasażerów RegioBus.

02

Programistę, który prowadzi rozwój samodzielnie

Z asystentem AI jako narzędziem, nie jako zastępcą. Średnia: 3–4 mergowane PR-y dziennie, każdy z testami.

03

CLAUDE.md + 2 MCP servery + dokumentacja

Wzorzec, który da się powielić przy kolejnym module.

04

Trzech programistów uwolnionych do nowych projektów

Żaden z nich nie odszedł z firmy. To, czego najbardziej obawiali się we wstępnej rozmowie, nie nastąpiło.

30 dni po zakończeniu projektu byliśmy na „call when needed". Wpadliśmy raz — pomóc z migracją pierwszego dużego operatora płatności. To było 90 minut konsultacji, nie tydzień pracy.

Macie podobny problem?

Wasza aplikacja też planowana na pół roku?

Audyt 90 minut wystarczy, żeby ocenić, czy taki sam skok jest możliwy u Was. Bez sprzedaży.