Swimtopia to system dla trenera pływania, który wyrósł z arkuszy, raportów i potrzeby zobaczenia całego procesu treningowego w jednym miejscu: od planu sezonu, przez obecność i wykonanie zadań, po statystyki zawodnika i grupy.
Obecnie działa w ograniczonym zakresie — korzysta z niej trenerka koordynatorka, a pełniejsze wdrożenie w sekcji planowane jest na wrzesień.
Nie brakowało narzędzi. Brakowało jednego miejsca.
Przed Swimtopią miałem już wiele rozwiązań: arkusze obecności, raporty, osobne automatyzacje i narzędzia do konkretnych zadań. Problem polegał na tym, że każde z nich działało osobno.
Z czasem takie podejście przestawało być wygodne w codziennej pracy. Arkusze były dobre do wpisywania danych, ale słabe do głębszej analizy. Google Apps Script pomagał automatyzować powtarzalne czynności, ale miał swoje ograniczenia, między innymi czas wykonania skryptów i trudność pracy na coraz większej ilości danych.
Najbardziej brakowało mi raportów, które pokazują pełniejszy obraz: kto ile przepłynął w konkretnej strefie, jak wyglądają proporcje pracy względem planu, co zmieniła nieobecność zawodnika i jakie trendy pojawiają się w kolejnych tygodniach.
Problem
Arkusze pokazywały fragment obrazu
W arkuszach dało się zapisać obecność, kilometraż albo proste podsumowanie. Trudniej było jednak zobaczyć cały proces: plan, wykonanie, frekwencję, styl pracy, strefy i rozwój zawodnika w czasie.
Przy większej liczbie danych brakowało też wygodnego UI do zarządzania całym procesem. Arkusz dobrze obsługuje jedną tabelę. Swimtopia miała obsłużyć pracę trenera jako całość.
Dla kogo
Koordynator, trenerzy i zawodnicy
Najwyżej w aplikacji jest koordynator, który widzi całość i zarządza pracą sekcji. Trenerzy prowadzą treningi, obecność i analizę. Wybrani zawodnicy mają swoje konta i ograniczony dostęp do danych, które ich dotyczą.
Projekt jest przygotowany tak, żeby mógł działać nie tylko dla jednej grupy, ale potencjalnie również dla wielu klubów.
Co robi system
Od planu sezonu do Pływaka 360
DashboardPokazuje, kto wymaga uwagi, jak wygląda kilometraż i rozkład zadań.
TreningiJednostki treningowe zbudowane z bloków, zadań, stylów, stref i intensywności.
PeriodizacjaMakrocykle, mezocykle i mikrocykle jako kontekst dla planowania pracy.
Obecność i wykonanieObecność powiązana z treningiem oraz wykonanie liczone per zadanie i globalnie.
StatystykiFrekwencja, planowany i wykonany kilometraż, style, kategorie zadań, strefy i porównania.
Pływak 360Pełniejszy widok zawodnika: frekwencja, plan, wykonanie, testy, strefy i trendy.
Import wynikówOsobny proces importu wyników, który pomaga łączyć trening z danymi startowymi.
Role i grupyKoordynator, trener i zawodnik z różnym zakresem dostępu.
Treningi są zebrane w jednym miejscu, zamiast być rozproszone po arkuszach i osobnych narzędziach.Trener buduje trening z bloków i zadań, a dystans wynika z danych wpisanych w planie.
Planowanie treningów
Trening jako zestaw zadań, nie opis w jednej komórce
Trener tworzy trening, a data wybiera się automatycznie. W treningu dodaje zadania, określa ich typy, strefy, dystanse, style, intensywność i opis. Jednostka jest zbudowana z bloków, więc może być prosta albo bardzo szczegółowa.
System automatycznie liczy łączny kilometraż treningu. Rozróżnia też plan i wykonanie, dzięki czemu można później sprawdzić, ile pracy było zaplanowane, a ile faktycznie zostało wykonane.
Obecność i wykonanie
Dane z treningu są od razu gotowe do analizy
Obecność jest powiązana z konkretnym treningiem. Trener może szybko oznaczyć wszystkich jako obecnych, nieobecnych lub zwolnionych, a potem doprecyzować wykonanie zadań.
Wykonanie działa per zadanie, a system liczy z tego wynik globalny. Dzięki temu nie trzeba wybierać między prostą obecnością a dokładną analizą pracy — oba poziomy mogą istnieć obok siebie.
Obecność i rzeczywiste wykonanie są częścią jednego treningu, a nie osobnym arkuszem do późniejszego ręcznego łączenia.
Statystyki i raporty
Najważniejszy był szerszy obraz
Największą wartością Swimtopii są raporty i statystyki, których brakowało w arkuszach. System może pokazać frekwencję, planowany i wykonany kilometraż, rozkład pracy po stylach, kategoriach zadań i strefach.
Dzięki temu trener może sprawdzić nie tylko, czy trening się odbył, ale też jak wyglądała praca zawodnika albo grupy w czasie. Widać trendy, różnice między planem a wykonaniem oraz miejsca, które wymagają uwagi.
Dashboard
Kto wymaga uwagi
Dashboard jest głównym widokiem pracy. Pokazuje między innymi zawodników wymagających uwagi, kilometraż i rozkład zadań.
Chodziło o to, żeby trener nie musiał przeklikiwać kilku arkuszy, żeby zrozumieć, co dzieje się w grupie.
Pływak 360
Jeden profil zawodnika
Pływak 360 zbiera w jednym miejscu frekwencję, planowane i wykonane kilometry, style, strefy, testy oraz trendy zawodnika.
Dzięki temu trener nie patrzy tylko na pojedynczy trening, ale na szerszy obraz pracy zawodnika.
Statystyki pokazują rozkład pracy, którego trudno pilnować ręcznie w arkuszach.Pływak 360 łączy dane o zawodniku w jednym profilu, zamiast rozrzucać je po osobnych miejscach.
Technicznie
Jedna aplikacja zamiast kolejnych arkuszy
Technicznie Swimtopia składa się z backendu w FastAPI, frontendu w React/Vite, bazy PostgreSQL i środowiska uruchamianego w Dockerze. Do migracji używam Alembica.
Dostęp do aplikacji jest chroniony przez Cloudflare Access, a później użytkownik loguje się przez AD. O szczegółach infrastruktury nie piszę publicznie, bo aplikacja jest przeznaczona dla wybranych użytkowników.
Część związana z wynikami korzysta z osobnego procesu importu danych. Dzięki temu trening, obecność, wykonanie i wyniki mogą być częścią jednego szerszego obrazu.
Swimtopia jest gotowym działającym produktem po fazie pilotażowej. Obecnie korzysta z niej trenerka koordynatorka, a pełniejsze wdrożenie w sekcji planowane jest na wrzesień.
Aplikacja nie jest publicznie otwartą stroną. Dostęp jest kontrolowany i przeznaczony dla wybranych użytkowników.
Kolejny krok
Od arkuszy do pełnego systemu
Blogowa seria „Automatyzacja obecności” pokazuje wcześniejszy etap tej drogi: jak zaczęło się od Google Sheets, walidacji danych i raportów z Apps Script.