Kinto to platforma do obsługi obiektów sportowych (jak siłownie, kluby fitness, baseny) czy też szkółek lub wypożyczalni sprzętu. Aplikacja zapewnia zarówno panel administracyjny dla właścicieli i pracowników, jak i stronę członkowską dla klientów, obejmując kluczowe aspekty zarządzania oraz interakcji z klubem. Projekt stworzony w konwencji mobile-first, z możliwościa rozwoju do PWA lub pełnoprawnej aplikacji mobilnej w przyszłości.
Członkowie klubu mogą przeglądać dostępne zajęcia, zapisywać się na sesje i śledzić swój harmonogram w kalendarzu. Przy zapisach członek wybiera formę płatności - może skorzystać z aktywnego karnetu lub opłacić pojedyncze wejście ze swojego portfela. Dla każdego uczestnika rejestrowana jest obecność, co pozwala monitorować frekwencję i kontrolować wykorzystanie karnetów. Administratorzy mogą definiować limity uczestników, harmonogramy zajęć, powiązania z grupami oraz zasady anulowania zapisów.
Grupy pozwalają zrzeszać członków wokół konkretnych dyscyplin, poziomów zaawansowania lub drużyn. Każda grupa posiada własną tablicę ogłoszeń, gdzie administratorzy i trenerzy mogą publikować posty widoczne dla wszystkich jej członków. Do grup można dołączać poprzez otwarte zapisy - z opcjonalnym formularzem aplikacyjnym i ręcznym zatwierdzaniem kandydatów przez administratora. Grupy mogą być również powiązane z konkretnymi zajęciami, dzięki czemu członkowie grupy są automatycznie zapisywani na sesje (np. drużyna pływacka na trening).
Członkowie mogą rezerwować dostęp do obiektów, takich jak korty tenisowe, sale treningowe, baseny lub sprzęt. Administratorzy mają możliwość definiowania limitów uczestników, godzin otwarcia obiektu oraz zasad anulowania rezerwacji.
Platforma integruje się z zewnętrznym systemem płatności, zapewniając każdemu członkowi indywidualny portfel. Środki można doładowywać online, a następnie wykorzystywać do opłacania zajęć, karnetów i rezerwacji. W panelu płatności członek widzi pełną historię transakcji, saldo konta oraz wystawione faktury. System obsługuje również karnety - czasowe, ilościowe i bezterminowe - które można kupować, zamrażać na czas nieobecności i odnawiać. Administrator może z poziomu panelu przyznawać karnety ręcznie oraz monitorować ich wykorzystanie.
Każdy członek klubu posiada kartę członkowską funkcjonującą poprzez kod QR. Karta może być okazana przy wejściu na obiekt lub podczas uczestnictwa w zajęciach.
Platforma pozwala połączyć pojedynczego członka z wieloma kontami użytkowników, umożliwiając opiekunom zarządzanie subkontami dzieci lub podopiecznych. Opiekunowie mogą przeglądać harmonogramy zajęć, dokonywać zapisów i opłacać usługi w imieniu swoich podopiecznych.
Administratorzy i pracownicy klubu mają dostęp do panelu administracyjnego, który umożliwia zarządzanie każdym z wymienionych powyżej obszarów.
Kontrola dostępu w panelu administracyjnym - RBAC i ograniczenie dostępu do obiektów nie powiązanych z danym pracownikiem.
Domyślnie zdefiniowane są dwie role:
- Administrator - pełny dostęp do wszystkich funkcjonalności i obiektów
- Pracownik - dostęp do obiektów przypisanych w panelu administracyjnym, z ograniczonymi uprawnieniami (brak możliwości zarządzania płatnościami lub członkami, zarządzanie swoimi zajęciami, grupami i innymi obiektami)
Członkowie klubu otrzymują powiadomienia o zapisach na zajęcia, zmianach w harmonogramie, nowych postach w grupach i innych istotnych wydarzeniach.
Powiadomienia są wysyłane poprzez:
- email (domyślnie SendGrid)
- SMS (domyślnie SMSAPI)
- web push (VAPID)
Powiadomienia korzystają z templatów nunjucks (+ mjml dla email). Pliki szablonów znajdują się w resource/template.
- SendGrid
- SMSAPI
- Web Push
- tpay
- P24
- payu
| next.js 15 |
| tailwind |
| react-admin v5 + mui v7 (panel administracyjny) |
| postgresql + prisma (orm) |
| better-auth (magic link + hasło, weryfikacja email) |
| react-query |
| zustand |
| zod |
| react-hook-form |
| fullcalendar |
| lexical |
| motion |
| sendgrid (powiadomienia email) |
| smsapi (powiadomienia SMS) |
| nunjucks + mjml (szablony powiadomień) |
| jose |
| s3 (przechowywanie plików) |
| date-fns |
| cron |
| docker (container) |
| react-i18next (i18n, partial, admin panel) |




