Wyzwanie
SwimSport potrzebował czegoś więcej niż standardowy panel administracyjny. System musiał wspierać codzienne działanie szkoły pływania, w tym korzystanie z aplikacji przez instruktorów bezpośrednio podczas zajęć. Aplikacja miała przyspieszyć sprawdzanie obecności, uprościć zarządzanie grupami i ograniczyć ręczną koordynację między administracją, instruktorami i rodzicami.
Jednym z najważniejszych elementów projektu był elektroniczny dziennik obecności. Instruktorzy potrzebowali szybkiego sposobu na podgląd przypisanych grup, sprawdzanie obecności, przenoszenie kursantów między zajęciami i rejestrowanie odrobienia nieobecności bezpośrednio w trakcie lub w pobliżu zajęć na basenie. Dlatego wygodna obsługa mobilna i czytelny interfejs kalendarza były kluczowymi elementami wdrożenia.
Kolejnym wyzwaniem było zarządzanie płatnościami. SwimSport nie opierał się wyłącznie na płatnościach online, dlatego system potrzebował mechanizmu sprawnego rejestrowania przelewów bankowych. Zamiast ręcznego sprawdzania każdej płatności osobno, aplikacja miała umożliwiać import plików CSV z banku i dopasowywanie przelewów do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego.
Jednym z najważniejszych elementów projektu był elektroniczny dziennik obecności. Instruktorzy potrzebowali szybkiego sposobu na podgląd przypisanych grup, sprawdzanie obecności, przenoszenie kursantów między zajęciami i rejestrowanie odrobienia nieobecności bezpośrednio w trakcie lub w pobliżu zajęć na basenie. Dlatego wygodna obsługa mobilna i czytelny interfejs kalendarza były kluczowymi elementami wdrożenia.
Kolejnym wyzwaniem było zarządzanie płatnościami. SwimSport nie opierał się wyłącznie na płatnościach online, dlatego system potrzebował mechanizmu sprawnego rejestrowania przelewów bankowych. Zamiast ręcznego sprawdzania każdej płatności osobno, aplikacja miała umożliwiać import plików CSV z banku i dopasowywanie przelewów do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego.
Rozwiązanie
Zaprojektowałem i zbudowałem dedykowaną aplikację Laravel, Inertia.js i Vue.js z kilkoma połączonymi modułami: kalendarzem instruktora, kontami kursantów i rodziców, panelem administracyjnym, zapisami na obozy, zarządzaniem cennikami, obsługą płatności i ewidencją obecności.
System pozwala SwimSport zarządzać grupami, harmonogramami, kursantami, instruktorami, obozami, regułami cenowymi, zniżkami, dniami wolnymi i danymi obecności z jednego miejsca. Obsługuje także generowanie list i eksporty do Excela, dzięki czemu aplikacja jest użyteczna nie tylko w codziennej pracy, ale również w administracji i raportowaniu.
Wdrożyłem też mechanizm importu płatności bankowych. Administrator może wgrać plik CSV wyeksportowany z banku, a system dopasowuje przychodzące przelewy do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego. Ograniczyło to ręczne sprawdzanie płatności i umożliwiło obsługę przelewów offline bez pełnej bramki płatności online.
System pozwala SwimSport zarządzać grupami, harmonogramami, kursantami, instruktorami, obozami, regułami cenowymi, zniżkami, dniami wolnymi i danymi obecności z jednego miejsca. Obsługuje także generowanie list i eksporty do Excela, dzięki czemu aplikacja jest użyteczna nie tylko w codziennej pracy, ale również w administracji i raportowaniu.
Wdrożyłem też mechanizm importu płatności bankowych. Administrator może wgrać plik CSV wyeksportowany z banku, a system dopasowuje przychodzące przelewy do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego. Ograniczyło to ręczne sprawdzanie płatności i umożliwiło obsługę przelewów offline bez pełnej bramki płatności online.


Kluczowe funkcje
Aplikacja zawiera moduły do zarządzania kursantami, rodzicami, instruktorami, grupami zajęciowymi, harmonogramami, obecnością, obozami, cennikami, zniżkami i płatnościami.
Jedną z głównych funkcji jest elektroniczny dziennik obecności. Instruktorzy mogą szybko przeglądać przypisane grupy, sprawdzać obecność, rejestrować nieobecności, zarządzać odrabianiem zajęć i korzystać z systemu bezpośrednio na urządzeniach mobilnych podczas lekcji pływania.
System zawiera również mechanizm importu płatności bankowych. Administratorzy mogą wgrywać pliki CSV wyeksportowane z banku, a aplikacja dopasowuje przychodzące przelewy do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego.
Dodatkowe funkcje obejmują generowanie list, eksporty do Excela, konfigurowalne reguły cenowe, obsługę zniżek, zarządzanie dniami wolnymi oraz narzędzia administracyjne do zarządzania strukturą szkoły pływania.
Jedną z głównych funkcji jest elektroniczny dziennik obecności. Instruktorzy mogą szybko przeglądać przypisane grupy, sprawdzać obecność, rejestrować nieobecności, zarządzać odrabianiem zajęć i korzystać z systemu bezpośrednio na urządzeniach mobilnych podczas lekcji pływania.
System zawiera również mechanizm importu płatności bankowych. Administratorzy mogą wgrywać pliki CSV wyeksportowane z banku, a aplikacja dopasowuje przychodzące przelewy do należności kursantów na podstawie unikalnego identyfikatora płatności lub numeru konta bankowego.
Dodatkowe funkcje obejmują generowanie list, eksporty do Excela, konfigurowalne reguły cenowe, obsługę zniżek, zarządzanie dniami wolnymi oraz narzędzia administracyjne do zarządzania strukturą szkoły pływania.
Zakres techniczny
Aplikacja została zbudowana w oparciu o Laravel, Inertia.js i Vue.js. Laravel odpowiadał za logikę backendową, strukturę bazy danych i reguły biznesowe, a Inertia.js oraz Vue.js zostały wykorzystane do stworzenia dynamicznych interfejsów dla administratorów, instruktorów, rodziców i kursantów.
Wdrożyłem role użytkowników, konta kursantów i rodziców, widoki instruktora, zarządzanie zajęciami w oparciu o kalendarz, obsługę obecności, logikę płatności, eksporty danych, endpointy API oraz moduły administracyjne do zarządzania strukturą szkoły pływania.
System został zaprojektowany tak, aby wspierać zarówno pracę administracyjną na desktopie, jak i użycie mobilne przez instruktorów podczas zajęć na basenie. Wybrane dane są także udostępniane przez Laravel API i prezentowane na publicznej stronie SwimSport.
Wdrożyłem role użytkowników, konta kursantów i rodziców, widoki instruktora, zarządzanie zajęciami w oparciu o kalendarz, obsługę obecności, logikę płatności, eksporty danych, endpointy API oraz moduły administracyjne do zarządzania strukturą szkoły pływania.
System został zaprojektowany tak, aby wspierać zarówno pracę administracyjną na desktopie, jak i użycie mobilne przez instruktorów podczas zajęć na basenie. Wybrane dane są także udostępniane przez Laravel API i prezentowane na publicznej stronie SwimSport.
Efekt
Finalna aplikacja dała SwimSport jedną dedykowaną platformę do zarządzania codziennym działaniem szkoły pływania. Zamiast korzystać z osobnych arkuszy, ręcznej koordynacji i rozproszonej komunikacji, firma może zarządzać kursantami, zajęciami, instruktorami, obecnością, zapisami i płatnościami z jednego systemu.
Dla instruktorów mobilny dziennik obecności ułatwia pracę bezpośrednio podczas zajęć. Dla administracji system poprawia kontrolę nad grupami, harmonogramami, płatnościami i raportowaniem.
Projekt jest nadal rozwijany o nowe funkcje i usprawnienia. Wciąż współpracuję z klientem, utrzymując i rozbudowując aplikację Laravel. Część danych z systemu jest także udostępniana przez Laravel API i wyświetlana na stronie SwimSport, którą zbudowałem jako customowy motyw WordPress z integracjami i własnymi blokami Gutenberg.
Dla instruktorów mobilny dziennik obecności ułatwia pracę bezpośrednio podczas zajęć. Dla administracji system poprawia kontrolę nad grupami, harmonogramami, płatnościami i raportowaniem.
Projekt jest nadal rozwijany o nowe funkcje i usprawnienia. Wciąż współpracuję z klientem, utrzymując i rozbudowując aplikację Laravel. Część danych z systemu jest także udostępniana przez Laravel API i wyświetlana na stronie SwimSport, którą zbudowałem jako customowy motyw WordPress z integracjami i własnymi blokami Gutenberg.
