Strona z rekordami pływackimi KS Posnania Poznań. Projekt powstał z potrzeby zawodników i mojej własnej potrzeby z czasów, gdy sam pływałem: mieć jedno miejsce, w którym można szybko sprawdzić rekord w swojej kategorii.
Rekordy klubowe są dla zawodników punktem odniesienia, celem treningowym i sposobem na zobaczenie, gdzie jest się na tle historii klubu.
Kiedy sam pływałem, brakowało mi w klubie miejsca, w którym można byłoby łatwo sprawdzić rekordy. Później, kiedy byłem już po drugiej stronie basenu jako trener, zobaczyłem, że ten problem dalej istnieje. Zawodnicy i rodzice pytali o rekordy, ale nie było wygodnej, aktualnej strony, na której można byłoby je szybko sprawdzić.
Wcześniej rekordy funkcjonowały bardziej jako coś statycznego: kartka w klubie, ręczne aktualizacje i dane, które łatwo było przegapić albo odłożyć „na później”. Chciałem zrobić coś, co będzie prostsze w utrzymaniu i bardziej dostępne dla zawodników.
Dla kogo
Dla zawodników i rodziców
Projekt zrobiłem głównie dla zawodników. Chciałem, żeby mogli wejść na stronę po treningu, przed zawodami albo z ciekawości i sprawdzić, jaki wynik jest aktualnym rekordem w ich kategorii.
To narzędzie jest też wygodne dla rodziców i trenerów, bo nie trzeba szukać danych w plikach ani pytać za każdym razem, gdzie znajduje się aktualna tabela.
Zakres danych
Kategorie i filtry
Strona pokazuje rekordy pływackie klubu w kategoriach wiekowych, osobno dla krótkiego i długiego basenu.
Dane można filtrować między innymi po klubie, płci, basenie 25 m / 50 m, wieku i konkurencji. Przy rekordzie widoczny jest zawodnik, rocznik, czas, data i miejsce uzyskania wyniku.
Jak to się zaczęło
Od statycznej strony do aktualizacji danych
Pierwsza wersja nie była dużym systemem. Zaczęło się od potrzeby uporządkowania danych i pokazania ich w czytelnej formie.
Na początku stworzyłem statyczną stronę z rekordami. To już rozwiązywało część problemu, bo rekordy były dostępne publicznie i wyglądały lepiej niż zwykła tabela.
Szybko jednak pojawiło się pytanie: co z aktualizacją?
Ręczne poprawianie strony przy każdej zmianie rekordu nie miało sensu. To byłoby dokładnie to samo, co wcześniej, tylko w trochę ładniejszym opakowaniu. Dlatego kolejnym krokiem było zbudowanie procesu, w którym dane można przetworzyć i wyświetlić bez mozolnego grzebania w HTML-u.
Przepływ danych
Jak działa aktualizacja
Aktualizacja jest wykonywana raz w tygodniu jako prosta operacja. Nie jest to już ręczne przepisywanie rekordów do strony, tylko uporządkowany proces przetwarzania danych.
plik z wynikami→przetworzenie danych→wewnętrzna baza→wybranie najlepszych wyników→publiczna strona
Dane wejściowe pochodzą z pliku z wynikami. Następnie system, który zbudowałem, przetwarza je, normalizuje i zapisuje w bazie. Najważniejsze nie było samo wyświetlenie tabeli. Najważniejsze było to, żeby poprawnie wybrać rekordy.
System musi sprawdzić, czy dany wynik jest najlepszy w swojej kategorii. Musi też obsłużyć sytuacje, w których młodszy zawodnik uzyskuje wynik lepszy niż rekord w starszej kategorii. W takim przypadku taki wynik również powinien być widoczny wyżej, bo rekord młodszego zawodnika może być jednocześnie rekordem starszej kategorii.
Dane wejściowe nie były gotową tabelą rekordów. Trzeba było je przetworzyć, porównać i zapisać tylko najlepsze wyniki.Najważniejsze było to, żeby zawodnik mógł szybko znaleźć rekord w swojej kategorii.
Najtrudniejsza część
Dużo pracy było pod spodem
Największym wyzwaniem było przetwarzanie danych. Plik z wynikami nie jest gotową bazą rekordów. To zbiór rezultatów, które trzeba dopiero przeanalizować.
Trzeba odczytać konkurencje, płeć, roczniki, basen, czasy, daty i miejsca zawodów. Potem trzeba porównać wyniki, wybrać najlepsze i zapisać je w taki sposób, żeby dało się je szybko wyświetlić na stronie.
Dużo pracy było też w rzeczach, których użytkownik końcowy nie widzi: normalizacji nazwisk, dopasowywaniu danych z arkuszy, mergowaniu danych z bazą, pilnowaniu kategorii wiekowych, optymalizacji czasu wykonania i poprawianiu sposobu odwoływania się do konkretnych arkuszy oraz zakresów.
Technologie
Prosty zestaw, dużo nauki
Google Sheets
Python
pandas
HTML, CSS, JavaScript
Cloudflare Pages
Cloudflare Workers
Cloudflare D1
Dlaczego ważny
Pierwszy większy projekt
To był mój pierwszy większy projekt, w którym tak dużo działo się „pod spodem”. Z zewnątrz widać tabelę z rekordami i filtry. Dla mnie była to jednak nauka pracy z danymi, bazą, transformacją wyników i publikacją gotowego narzędzia.
Rekordy klubu były jednym z pierwszych projektów, w których połączyłem pływanie z IT w praktyczny sposób. Dzięki temu mogłem rozwijać się w kierunku większych projektów, takich jak Swimtopia.
Zobacz projekt
Publiczna strona z rekordami
Strona jest dostępna publicznie i pokazuje aktualne rekordy w czytelnej formie z filtrami.