Aplikacja webowa dla klubu sportów walki PrideMMA Gliwice. Klub prowadził ewidencję członków i karnetów w prostym systemie na gotowym szablonie — obecności, płatności i przedłużenia żyły w osobnych miejscach, skaner wejść był dostępny bez logowania, a aplikacja miała poważne luki bezpieczeństwa. System został przebudowany w spójną całość z trzema rodzajami użytkowników: członkowie mają panel z kodem QR i historią treningów, trenerzy rejestrują wejścia skanerem w telefonie, a administrator obsługuje karnety, płatności i raporty w jednym panelu. W demo jest 12 członków w różnych stanach karnetu, 57 płatności i 478 wejść.
Przebudowa istniejącego systemu: analiza kodu i audyt bezpieczeństwa, nowy projekt bazy danych oraz skrypt migrujący działającą bazę produkcyjną bez utraty danych.
Backend w PHP 8 z bazą MySQL, panel administratora na AdminLTE 3 / Bootstrap 4 z tabelami DataTables, czysty JavaScript bez frameworka.
Mobilny skaner wejść jako Progressive Web App (manifest + service worker) — trener instaluje go na telefonie jak aplikację, kody QR czyta biblioteka html5-qrcode.
Zabezpieczenia: zapytania przygotowane (SQL injection), escapowanie wyjścia (XSS), tokeny CSRF w formularzach i API skanera, limit prób logowania, bezpieczne sesje, ponowne kodowanie przesyłanych zdjęć i ochrona eksportu CSV przed wstrzykiwaniem formuł.
Generator realistycznych danych testowych, testy oraz dokumentacja techniczna i instrukcja obsługi dla klubu.
01
Panel członka z kodem QR
Członek rejestruje się online i od razu dostaje osobisty kod QR do pokazania na wejściu (można go zapisać w telefonie). Na górze panelu widzi, do kiedy ważny jest karnet i ile dni zostało, a niżej statystyki i wykres treningów, historię wejść pogrupowaną po miesiącach oraz historię płatności.
02
Mobilny skaner wejść dla trenera
Po zeskanowaniu kodu skaner od razu pokazuje kolorem wynik: zielony — karnet aktywny, pomarańczowy — karnet wygasł (wejście i tak jest zapisane), niebieski — osoba była już skanowana w ciągu 30 minut, czerwony — kod nierozpoznany. Trener może też dopisać członka ręcznie po nazwisku albo dodać gościa na trening próbny.
03
Płatności z automatycznym przedłużaniem karnetu
Zaksięgowanie płatności w jednej transakcji zapisuje wpłatę i przelicza datę ważności karnetu — od końca obecnego okresu, więc członek nie traci opłaconych dni. Kwota uzupełnia się sama (cena × liczba miesięcy), a okres to 1, 3, 6, 12 miesięcy lub własna data.
04
Pulpit administratora
Na start administrator widzi liczbę członków, aktywne, wygasające i wygasłe karnety, wejścia dziś, przychód w miesiącu oraz nowych członków. Lista karnetów wygasających w ciągu 7 dni ma przycisk szybkiego przedłużenia.
05
Obecność i raporty
Lista obecności z wybranego dnia z możliwością dopisania zapomnianego wejścia, raport frekwencji członków w wybranym okresie oraz raport przychodów z podziałem na rodzaje karnetów i metody płatności. Listę członków można wyeksportować do Excela (CSV).
06
Role i konta personelu
Trzy role: administrator, trener i członek. Trener ma dostęp wyłącznie do skanera. Konto odchodzącego trenera wyłącza się zamiast usuwać, więc historia wejść zachowuje jego nazwisko, a system nie pozwala odebrać sobie uprawnień ani usunąć ostatniego administratora.
07
Odświeżona strona klubu
Publiczna strona klubu z sekcjami zajęć, grafikiem i cennikiem, aktualnościami dodawanymi z panelu, postami z Facebooka oraz kontaktem z mapą. Rodzaje karnetów, godziny otwarcia i dane klubu zmienia się w ustawieniach bez programisty.
// NASTĘPNY KROK
Potrzebujesz podobnego systemu?
Dopasujemy aplikację do Twojej firmy — napisz, czego potrzebujesz, a przygotujemy wycenę.