Bodyspace: od przejętego kodu do monorepo z 14 pakietami

Przejęcie kodu po poprzednim wykonawcy i przebudowa do monorepo Melos w Clean Architecture: ~12 tys. linii testów, 6 procesów w Codemagic, poprawki OTA przez Shorebird, PostHog i Crashlytics.

Klient
Bodyspace
Rola
Jedyny programista
Okres
2024 — obecnie
Platformy
iOS · Android

01 · Kontekst

Aplikacja z karnetami i zapisami na zajęcia, przejęta od wykonawcy

Bodyspace sprzedaje karnety i vouchery na siłownię oraz przyjmuje zapisy na zajęcia w jednej aplikacji w App Store i Google Play. W lutym 2024 RSApps przejęło kod stworzony przez poprzedniego wykonawcę i zostało jedynym programistą aplikacji.

02 · Problem

Bez struktury, bez testów, bez zabezpieczeń

Przejęta aplikacja była jednym pakietem bez warstw: wszystkie wywołania API siedziały w jednej klasie, jedynym testem był niezmieniony szablon Fluttera, nie było CI ani raportowania awarii. Płatność za koszyk nie była dokończona, a kod wciąż był pisany pod Darta 2.

03 · Co zrobiłem

Najpierw stabilizacja, potem przebudowa do monorepo

W pierwszych miesiącach RSApps uporządkowało aplikację na miejscu, przeniosło ją na BLoC, go_router, GetIt i bezpieczny magazyn danych, uruchomiło płatności Przelewy24 i dodało Crashlytics. Potem przebudowało aplikację do monorepo Melos w Clean Architecture i wydało ją w lutym 2026.

  • 4 aplikacje i 14 pakietów, ~59 tys. linii Darta: Cubity na klasach sealed, DI przez GetIt i typowana nawigacja go_router
  • ~12 tys. linii testów automatycznych
  • 6 workflowów w Codemagic: wersje testowe, wydania do sklepów z tagów wersji, łatki Shorebird i flagi wersji
  • Analityka i flagi funkcji w PostHog, Crashlytics oraz wymuszanie aktualizacji sterowane tymi flagami
  • Płatności Przelewy24, koszyk działający offline, zapisy na zajęcia grupowe, sterowanie maszynami na siłowni kodem QR, usuwanie konta i zarządzanie zgodami

04 · Efekt

Rutynowe wydania, pilne poprawki bez przeglądu w sklepie

Wydanie zaczyna się teraz od tagu wersji, a CI buduje aplikację i publikuje ją w obu sklepach. Pilne poprawki mogą trafić do użytkowników jako łatki Shorebird bez czekania na przegląd w sklepie, a PostHog i Crashlytics pokazują, co dzieje się na produkcji. Motywy są oparte na markach, a na tej samej platformie powstaje już aplikacja drugiego klienta: początek produktu white-label dla wielu marek.

Ekran główny Bodyspace z promocjami i polecanymi karnetami, każdy z ceną. Ekran strefy z listą karnetów, ich ceną i liczbą wejść oraz przyciskiem dodania do koszyka. Strona produktu ze zdjęciem, opisem, ceną i przyciskiem „Dodaj do koszyka”. Koszyk z jednym karnetem, jego ceną i przyciskiem przejścia do płatności.
Wydana wersja aplikacji, 3.0.8, na symulatorze iPhone’a, na koncie testowym.

Masz kod, który potrzebuje podobnej pracy?