Powrót do listy

Pony Academy — Platforma rezerwacji dla szkoły jazdy konnej

Przyjazna strona, planowanie dostępności i zaplecze oparte na Aurum

AurumNuxtSystem rezerwacjiDomain-Driven DesignPłatnościVue.js

Przegląd

Dedykowana strona Nuxt i moduł rezerwacji Aurum, które łączą ofertę lekcji, dostępność koni i instruktorów, płatności online, konta klientów oraz administrację szkoły.

Używane technologie

Nuxt
Vue.js
TypeScript
Node.js
MongoDB
Tailwind CSS

O projekcie

Pony Academy prowadzi indywidualne lekcje jazdy konnej dla dzieci. Dla rodzica rezerwacja zaczyna się od zrozumienia doświadczenia: przebiegu lekcji, dostępnego sprzętu i sposobu, w jaki instruktor wspiera dziecko. Dla szkoły każda rezerwacja musi pasować do rzeczywistego harmonogramu instruktorów i koni.

Zbudowałem publiczną stronę oraz moduł rezerwacji Pony Academy na bazie mojego frameworka Aurum. Zakres łączy dedykowany frontend z dostępnością, rezerwacjami, integracją płatności, dostępem klientów i panelem administracyjnym.

Zobacz Pony Academy

Strona główna Pony Academy z informacjami o lekcjach i czytelnym przejściem do rezerwacji

Spokojna droga od poznania oferty do rezerwacji

Strona wyjaśnia przebieg pierwszej lekcji, zanim poprosi rodzica o decyzję. Łączy informacje o bezpieczeństwie, profil instruktorki, ofertę i odpowiedzi na częste pytania z wyraźnym przejściem do rezerwacji.

Proces rezerwacji dzieli złożony wybór na sześć kroków: oferta, termin, instruktor, koń, dane kontaktowe i płatność. Interfejs prezentuje dostępność przez API rezerwacji, zamiast wymagać od użytkownika porównywania osobnych kalendarzy. Obsługuje rezerwacje gościnne i konta klientów; założenie konta jest opcjonalne.

Frontend korzysta z Nuxt, Vue, TypeScript i Pinia. Rezerwacje, konta i integracje treści mają własne granice modułów, dzięki czemu komponenty prezentacyjne nie muszą zawierać reguł harmonogramu ani płatności.

Początek rezerwacji Pony Academy z opcjonalnym kontem klienta i sześcioma etapami procesu

Planowanie dwóch zasobów jednocześnie

Lekcja wymaga zarówno instruktora, jak i odpowiedniego konia. Wolny instruktor nie wystarcza, jeśli koń jest niedostępny, ma już rezerwację albo potrzebuje przerwy.

Zamodelowałem dostępność na podstawie harmonogramów instruktorów, blokad koni, istniejących rezerwacji, długości lekcji i reguł obciążenia konia. Kalendarz wylicza poprawne terminy z tych danych, zamiast utrzymywać drugi, potencjalnie niespójny zbiór dostępnych godzin.

Backend chroni również przed równoczesnymi żądaniami. Utworzenie tymczasowej blokady terminu i zmiana harmonogramu używają tych samych blokad zasobu i dnia w transakcji bazodanowej. Konflikty pozostają więc regułą biznesową egzekwowaną przez serwer także wtedy, gdy dwóch klientów lub administrator działa jednocześnie.

Domena harmonogramu nie zależy od Vue, HTTP, sterowników bazy danych ani dostawcy płatności. Te same reguły mogą obsługiwać publiczną rezerwację i operacje administracyjne.

Płatność jako cykl życia rezerwacji

Powrót z bramki płatniczej nie jest dowodem opłacenia lekcji. Ekran powrotu odczytuje stan rezerwacji i rozróżnia potwierdzenie, oczekiwanie oraz niepowodzenie.

SytuacjaZachowanie systemu
Klient rozpoczyna płatnośćTymczasowo zablokuj wybrane zasoby i utwórz płatność z kluczem idempotencji.
Powiadomienie o płatności przychodzi ponownieZastosuj zmianę rezerwacji tylko raz przez transakcyjny rejestr zdarzeń.
Blokada terminu wygasa przed otrzymaniem płatnościObsłuż spóźnioną płatność przez trwałe zlecenie zwrotu.
Klient wraca z bramki płatniczejOdczytaj stan rezerwacji przed pokazaniem potwierdzenia.

Przeglądarka może zachować sesję blokady rezerwacji, aby umożliwić odzyskanie procesu po odświeżeniu. Wygaśnięcie blokady, zdarzenia płatnicze i zasady anulowania pozostają pod kontrolą backendu. Powiadomienia i planowanie przypomnień są zapisywane razem ze zmianami rezerwacji, wiążąc dalszą pracę z zatwierdzonym stanem.

Aurum dla operacji, Aurora dla treści

Moduł Pony Academy integruje się z kontraktami Payments, Customers, Notifications, Storage i Translations w Aurum. Panel szkoły skupia oferty, konie, instruktorów, dostępność, blokady, rezerwacje i ustawienia powiadomień.

Tożsamość klienta należy do modułu Customers. Rezerwacja zachowuje własną historyczną kopię danych kontaktowych i oferty, a zweryfikowane konta mogą uzyskać dostęp do powiązanych rezerwacji. Dzięki temu zapis lekcji pozostaje zrozumiały także po późniejszej zmianie danych klienta lub oferty.

Aurora pozwala wizualnie edytować teksty i obrazy strony. Osadzona aplikacja wysyła intencje zmian do zaufanej aplikacji nadrzędnej, która autoryzuje i zapisuje edycję; publiczny frontend nie przechowuje tokenów administracyjnych. Opublikowane treści są pobierane podczas renderowania po stronie serwera, z określonymi wartościami domyślnymi na wypadek niedostępności usługi treści.

Projekt rozszerza Aurum poza strony nieruchomości: wspólne usługi platformy obsługują inną domenę biznesową, a publiczna strona zachowuje własną tożsamość.

Weryfikacja i efekt inżynierski

Kod rezerwacji zawiera testy konfliktów zasobów, równoczesnych blokad terminów i koni, uprawnień, idempotencji płatności oraz granicznych reguł harmonogramu. Scenariusze płatnicze mogą korzystać z lokalnego symulatora dostawcy, pozwalając sprawdzać ścieżki błędów bez rzeczywistych transakcji.

Publiczna strona i początek rezerwacji działają online. Efektem inżynierskim jest spójny produkt: rodzic poznaje ofertę i przechodzi przez uporządkowaną rezerwację, a implementacja daje szkole wspólny model zasobów, terminów, płatności i komunikacji.

Kluczową decyzją było pozostawienie reguł biznesowych w domenie rezerwacji, a wspólnych możliwości w Aurum. Dzięki temu frontend może się rozwijać bez powielania zasad chroniących harmonogram szkoły.

Zainteresowany podobnym projektem?

Get in touch

KB / PRYWATNOŚĆ

Twoja prywatność. Twój wybór.

Strona działa tak samo niezależnie od Twojej decyzji. Statystyki są domyślnie wyłączone.

Jeszcze nie dokonano wyboru

Zapamiętanie wyboru

W przeglądarce przechowujemy wyłącznie Twoją decyzję i datę jej podjęcia (localStorage). Wybór obowiązuje przez 180 dni. To nie jest identyfikator reklamowy.

Dobrowolne statystyki

Po zgodzie GoatCounter na naszym serwerze zlicza odsłony, kliknięcia kontaktu, CV, projektów, linków zewnętrznych i pobrania Saldo oraz użycie przykładowych dem, widoczność sekcji i postęp czytania. Nie przesyłamy treści formularzy, wyszukiwania ani danych wpisywanych w demach. Przetwarzamy adres strony bez parametrów i fragmentów, tytuł, domenę źródła wejścia, przeglądarkę, system, język, szerokość ekranu i przybliżony kraj. Adres IP służy do obsługi połączenia i określenia kraju; nie zapisujemy go w statystykach. Nie korzystamy z cookies analitycznych ani nagrywania sesji. Dane statystyczne przechowujemy do 180 dni. Sygnały Do Not Track i Global Privacy Control wyłączają pomiar.

Zgodę możesz wycofać w dowolnej chwili przez „Ustawienia prywatności” w stopce. Wycofanie zatrzymuje dalszy pomiar; nie usuwa już zebranych zbiorczych statystyk. Odmowa nie powoduje wysyłania zdarzeń analitycznych.

Administratorem danych jest Kamil Bartczak Software Development, Czarnowo 100, 66-600 Czarnowo, Polska, NIP 9261697200. Pytania o prywatność: office@kamilbartczak.dev.