Nazad
Rupa · 2024, napravljeno, još nije lansirano

Rupa — platforma za bilijar klub: rezervacije, turniri, naplata sesija po stolu, sa nativnom aplikacijom i dashboard-om

Kompletna platforma napravljena za planirani bilijar klub — nativna aplikacija za članove na iOS-u i Android-u, dashboard za osoblje na vebu, .NET backend, identity kroz Keycloak, i centralni log kroz Seq. Klub se nikada јоš u planu; sistem je spreman za produkciju.

Priča

Aplikacija koja treba da donese klubu nešto što niko nema, zajedništvo kroz digitalu

Vredno pomena

  • · Izgrađeno do produkcionog kvaliteta;
  • · Tri komponente: .NET backend, Next.js dashboard, nativna iOS + Android aplikacija
  • · Keycloak za identity, Seq za log — enterprise-grade odluke za sistem koji treba da živi godinama

Problem

Planirani bilijar klub trebao je kompletnu operativnu platformu — za članove koji rezervišu stolove, prijavljuju se na turnire i prate svoje mečeve; za osoblje koje upravlja stolovima, turnirima, naplatom i ligaškim sezonama. Sve to od prvog dana.

Šta smo napravili

Tri komponente. .NET, sa punim domenskim modelom (stolovi, rezervacije, turniri sa bracket vizualizacijom, sezone, naplata sesija po stolu, korisnički nalozi, zaposleni). Next.js dashboard za osoblje. Nativna iOS + Android aplikacija (Expo + React Native) za članove. Identity preko Keycloak-a, tako da je autentifikacija članova, SSO između aplikacija i upravljanje ulogama osoblja bilo enterprise-grade od starta. Centralni log preko Seq-a, da svaki incident može da se brzo pronađe.

Moduli i celine

  • Rezervacije stolovaČlanovi rezervišu stolove iz mobilne aplikacije; osoblje vidi i upravlja rezervacijama iz dashboard-a.
  • Turniri sa bracket vizualizacijomPun ciklus turnira — prijava, kreiranje bracketa, praćenje rezultata, finalna tabela. Posebna stranica za vizualni prikaz bracketa.
  • SezoneModul za organizaciju ligaških sezona — kalendar, učesnici, vezivanje turnira za sezonu.
  • Naplata sesija po stolu (turnovers)Praćenje koliko se igralo na kom stolu i koliko je naplaćeno — operativna evidencija za samog vlasnika kluba.
  • Članovi i korisnički naloziRegistracija članova, profili, istorija turnira i rezervacija.
  • Zaposleni i ulogeOsoblje sa različitim nivoima pristupa — operatera, menadžera — sa ulogama.
  • Centralni log (Seq)Svaki bitan događaj u sistemu (kreiranje rezervacije, brisanje, neuspešan auth) ide u Seq, gde se može pretraživati i alarmirati.
  • Nativna mobilna aplikacijaiOS + Android kroz jednu Expo / React Native kod bazu — članovi rezervišu, prijavljuju se na turnire, vide svoju istoriju.
  • Dashboard za osobljeNext.js aplikacija — pregled svih rezervacija, upravljanje turnirima i sezonama, naplata sesija, izveštaji.

Kako smo pristupili

Pristupili smo sistemu kao dugotrajan projekat. Keycloak smo izabrali jer autentifikacija članova nije trivijalna (SSO preko aplikacija, OAuth tok za mobilnu aplikaciju, reset lozinke, role-based pristup) i nismo hteli da to ponovo izmišljamo. Seq smo izabrali jer voditi sistem za klub znači brzo odgovoriti na pitanje "zašto rezervacija ovog člana nije prošla" — bez centralnog loga, to bi bio sat istraživanja po server fajlovima. Clean Architecture za API jer smo očekivali duge cikluse iteracije, sa novim funkcijama dolaze tokom godina rada kluba.

Rezultat

Napravljeno, testirano, spremno za produkciju. Klub se nije otvorio, pa sistem još uvek nije ušao u stvarnu upotrebu. Projekat ostaje u portfoliu kao dokaz kako pristupamo sistemima koji su predviđeni za dugu upotrebu — arhitekturalne odluke i dalje stoje, čak iako se lansiranje još uvek nije desilo.

U upotrebi