Jegyértékesítő és közösségi platform klubokhoz és rendezvényekhez
Ez a legnagyobb rendszer, amit eddig építettem: jegyértékesítő platform klubokhoz és rendezvényekhez. Katalógus, kosár, fizetés, jegykiadás, számlázás, mobil API és minden, ami ezek körül kell. 2025 februárja óta fejlesztem, és azóta is folyamatosan bővül.
Az elejétől én tervezem és fejlesztem.
A jegyeladás csak az első lépés. Ha valaki jegyet vesz, kell neki a jegy e-mailben, számla, beléptetés a kapunál, és jó esetben egy emlékeztető is a buli előtt. Ezeket általában külön rendszerek csinálják, és ott szoktak elveszni az adatok.
Az volt a célom, hogy mindez egy rendszer legyen. A weboldal, a mobilapp, a kapunál használt app, az admin és a pénztári rendszerek ugyanabból dolgozzanak, és ha valami elromlik, egy helyen kelljen keresni.
Katalógus és SEO
Klubok, szervezők, események, fellépők és kereső. A címek keresőbarátak, a sitemap automatikus, a tartalom többnyelvű, gépi fordítás segítségével.
Kosár és fizetés
Vendég és bejelentkezett kosár (belépéskor összefésülve), kuponok. A fizetésnél a bevétel közvetlenül a szervezőhöz kerül, a rendelés pedig a fizetési visszajelzés alapján zárul le.
Jegy és számla
PDF jegy e-mailben, a jegy átadható másnak, a számlázás automatikus a szervezőnek megfelelő szolgáltatóval, és a hibás számlákat újrapróbálja.
Mobil API és push
Verziózott API a mobilappnak: regisztráció, katalógus, kosár, jegyek, push értesítések, mélylinkek, és az appból átugrás a webes fizetésre.
Hűség és VIP kártyák
Kedvezményes kártyák saját oldallal, hűség-pénztárca egyenleggel és tranzakciókkal, a külső pénztári rendszerrel összekötött lekérdezéssel és terheléssel.
Közösségi réteg
Barátok, követés, posztok, 24 órás sztorik, valós idejű csevegés. Funkciókapcsolóval, felhasználónként fokozatosan lehet bekapcsolni.
Keresés időpont és hely szerint, gyors elérés a saját QR-kódokhoz, kiemelt események.
Naptár, helyszín-, kategória- és szervező-szűrők, események kártyákon, dátummal és zenei stílusokkal.
A klub bemutatása, értékelés, zenei stílusok, korhatár, nyitvatartás és galéria.
Leírás, dress code, korhatár, a jegyek megtekintése és a helyszín egy helyen.
Márka- és ügyfélnevek, valamint személyes adatok nélkül (kivéve az alkalmazás áruházi képeit).
Több kliens, egy rendszer
A weboldal, a vásárlói mobilapp, a beléptető app, az admin és egy külső pénztári rendszer is ugyanazt az API-t és adatmodellt használja.
A pénz a szervezőhöz megy
A fizetést úgy építettem meg, hogy a bevétel közvetlenül a szervezőhöz vagy a klubhoz kerül. A rendelést a fizetési visszajelzés zárja le. Arra nem építhetek, hogy a vásárló visszatér az oldalra, mert nem mindig teszi.
Fokozatos élesítés
A közösségi funkciókat (barátok, posztok, sztorik, chat) funkciókapcsoló mögé tettem. Felhasználónként tudom bekapcsolni őket, és ha valami nem jó, nem kell visszavonnom az egész kiadást.
A VIP jegyek eltűntek az admin statisztikából
Egyszer feltűnt, hogy az adminban az eseményenkénti statisztikából hiányzik a VIP belépő. A VIP kártyával beléptetett vendég olyan jegytípuson ment be, amit az admin addig nem ismert. Most az első VIP beléptetésnél a jegytípus automatikusan átszinkronizálódik. A korábbi hiányokat két javító paranccsal pótoltam visszamenőleg.
Nulla forintos rendelésre nem kell számla
A számlázó job először hibát dobott minden helyszíni eladásra, mert azoknak nincs számlázási címük, és a teljesen kedvezményes rendelésre is számlát akart kiállítani. Most a ténylegesen kifizetett összeg dönt, nem a listaár, a helyszíni eladások pedig külön ágon mennek.
Ami lassú vagy külső, az sorba kerül
A számlázás, az e-mail, a push és a szinkron sorban fut, újrapróbálással, nem a felhasználó kérésében. Ha a külső szolgáltató nem válaszol, a vásárlás attól még lemegy, a számla pedig később elkészül.
Háttérfolyamatok, amik nem veszítenek el semmit
Ami lassú vagy külső szolgáltatástól függ (számlázás, e-mail, push, szinkron), az sorban fut, hibánál újrapróbálással. Ha valami kimaradt, visszamenőleges javító parancsokkal pótolom.
Rendszerek összekötése
Kétirányú szinkron az adminisztrációs felülettel, külön médiakiszolgáló, kapuellenőrző API és külső pénztári partner interfész, mind egy közös adatmodellen.
Levelek, amik odaérnek
E-mail napló és tiltólista, kézbesítés-követés, emlékeztető az elhagyott kosárról, push az esemény előtt, értékelő kérés utána.
Üzemeltethetőség
Állapotfigyelés és riasztás, ütemezett karbantartás, dokumentált API és funkciókapcsolók, hogy az új funkciók kockázat nélkül mehessenek élesbe.
Védelem a hibás számla ellen
A számlázás előtt sorban ellenőrzi, hogy kell-e egyáltalán számla. A ténylegesen kifizetett összeg számít, nem a listaár, így a teljesen kedvezményes rendelésből sem lesz értelmetlen számla.
public function handle(): void
{
$order = Order::with(['billingAddress', 'user', 'items'])->find($this->orderId);
// On-site (POS) sales are invoiced through another flow and have no billing address.
if (Str::startsWith($order?->order_number ?? '', 'POS-')) {
return;
}
// What was actually paid is authoritative, not the list price of the items:
// a fully discounted order has total_amount = 0 and must not be invoiced.
if ((float) ($order?->total_amount ?? 0) <= 0) {
Log::info('Invoice skipped: order total is zero', ['order_id' => $this->orderId]);
return;
}
if (empty($order?->billingAddress)) {
Log::error('Invoice skipped: billing address is empty', ['order_id' => $this->orderId]);
return;
}
// ... build the invoice and hand it to the provider configured for this organiser
}
Éles rendszer, ami több száz rendezvényt szolgált ki, és közben tovább nő. A mobil API, a hűségprogram, a közösségi réteg és az ajánlórendszer mind utólag került rá, úgy, hogy közben nem kellett leállítani.
Jegyértékesítő vagy rendezvényes rendszert építenél?
Mesélj a tervről, és megnézzük, mi kell hozzá, mit érdemes először megépíteni.
További projektek
Rendezvény-beléptető app
Telefonos app, amivel a rendezvényeken gyorsan és ellenőrzötten lehet beléptetni a vendégeket.
Hogyan készült → Háttérrendszer és mobil adminAdminisztrációs és analitikai felület
Események, rendelések, marketing és forgalmi adatok egy helyen, saját analitikával, riportokkal, webről és telefonról is.
Hogyan készült → Önkiszolgáló platformNagykereskedői integrációs platform
Webáruházak összekötése 400 feletti nagykereskedővel, automatikus ár-, készlet- és rendeléskezeléssel, fejlesztői tudás nélkül. A háttérben másodpercenként akár több millió adatot dolgoz fel, szabályok alapján alakít át és ment el, hibalehetőség nélkül, állapotokkal és statisztikával együtt.
Hogyan készült →