Rendezvény-beléptető mobilapp
A telefonos beléptető alkalmazás, amivel a személyzet a bejáratnál ellenőrzi a jegyeket. QR beolvasás, beléptetés, kiléptetés, helyszíni jegyeladás és élő statisztika, iOS-en és Androidon.
Én terveztem és fejlesztettem, az első verziótól a 2.0-ig.
A bejáratnál minden másodperc számít. Ha lassan megy a sor, a vendég türelmetlen, a szervező pedig látja, hogy fogy a bevétel. A beléptetőnek gyors, egyértelmű visszajelzés kell: zöld vagy piros, és kész.
Előtte egy böngészős beolvasó volt. Ezt váltottam le egy olyan alkalmazással, ami gyorsabb, és ahol mindenki csak azt látja, amire a munkájához szüksége van.
Kamerás jegyellenőrzés
A telefon kamerájával olvassa a QR-kódot, és színnel jelzi az eredményt: érvényes, már felhasznált, lejárt vagy ismeretlen a jegy. A VIP vendégek külön jelölést kapnak.
Gyors beléptetés
Kapcsolható automatikus mód: ha érvényes a jegy, a beolvasás egyből beléptet, külön koppintás nélkül.
Kiléptetés
Van külön kiléptetés is, így mindig látszik, hányan vannak bent.
Helyszíni jegyértékesítés
Kosárral és fizetéssel, hogy a bejáratnál is lehessen jegyet venni.
Élő statisztika
Érkezési grafikon 10 perces bontásban, az eladott, a beléptetett és a meg nem jelent jegyek száma jegytípusonként, és időrendi lista.
Szerepkörök és felhasználók
Öt szerepkör van: adminisztrátor, beléptető, kiléptető, portás és megtekintő. Mindenki csak azokat a képernyőket látja, amelyek a munkájához kellenek, a felhasználókat pedig az appból lehet kezelni.
A személyzet saját fiókkal lép be, a bejelentkezés tartósan megmarad.
Csak az érvényes események jelennek meg, így a beléptető nem tud rossz eseményre lépni.
A kamera várja a QR kódot. Az esemény neve fent látszik, és egy koppintással cserélhető.
Jegytípusok helyszíni és tagi áron, mennyiségválasztóval és összesítővel.
Minden jegyhez QR-kód vagy e-mail, a fizetés és a beléptetés egy lépésben.
Márka- és ügyfélnevek, valamint személyes adatok nélkül (kivéve az alkalmazás áruházi képeit).
Egy beolvasás, kész
Van egy gyors mód: érvényes jegynél maga a beolvasás beléptet, külön koppintás nélkül.
Öt szerepkör
Admin, beléptető, kiléptető, portás és megtekintő. A portás például csak az élő statisztikát látja, a kiléptető csak a kiléptetést.
Méri saját magát
Minden vendégnél méri a beolvasástól az eredményig és a beléptetésig eltelt időt. Az utolsó ötvenet a telefonon összegzi, a többit csomagokban elküldi a szervernek. Ezekből látom, mennyire gyors.
Gyenge térerő, és senki nem léphet be kétszer
Hálózati hibánál egyszer újrapróbálom a hívást, de csak akkor, ha az ismétlése nem okozhat kárt. Ami csak olvas, vagy a szerveren idempotens, az mehet újra. Ami nem, azt nem hívom meg még egyszer.
Az első vendég a leglassabb
Az első beolvasásnál a kapcsolat felépítése viszi el az időt (névfeloldás, titkosítás). Ezért az app a háttérben előre felépíti a kapcsolatot, mielőtt az első vendég odaér, és ezt percenként legfeljebb egyszer csinálja.
A kiválasztott esemény beragadt
Az 1.1.1-es verzióban javítottam egy hibát: a kiválasztott esemény bent maradt akkor is, amikor már nem volt választható. Most az app indításkor és minden előtérbe hozáskor ellenőrzi, és ha az esemény már nem érvényes, visszadob az eseményválasztóra.
Sebességre hangolva
A kapcsolat már felépül, mielőtt az első vendég odaér. A beolvasástól az eredményig eltelt időt vendégenként mérem, így a lassulás hamar kiderül.
Gyenge hálózat mellett is használható
Hálózati hibánál az ismételhető hívások maguktól újrapróbálkoznak. A nem ismételhetők soha, ezért senkit nem lehet kétszer beléptetni.
Biztonság
A bejelentkezés titkosított tárolóban van, hosszabb munkamenetnél biometrikus azonosítás védi. Az app folyamatosan ellenőrzi, hogy a kiválasztott esemény még érvényes-e.
Üzemeltethetőség
Automatikus hibajelentés, javítások az áruházi frissítés megvárása nélkül, és szerepkör alapú hozzáférés a szerveren is.
Újrapróbálás, ami nem árt
Gyenge térerőnél a hívás egyszer megismétlődik, de csak akkor, ha ez veszélytelen. Az írást végző, nem ismételhető hívásokra szándékosan nincs automatikus újrapróbálás, így nem lehet kétszer beléptetni valakit.
/** No response at all = network failure (offline, timeout). A 4xx/5xx reply is not. */
function isNetworkError(error: unknown): boolean {
return axios.isAxiosError(error) && !error.response;
}
/**
* Retries a call once on a network failure. ONLY use it for calls that are
* safe to repeat: reads, or writes that are idempotent on the server.
*/
async function withNetworkRetry<T>(call: () => Promise<T>, retries = 1): Promise<T> {
try {
return await call();
} catch (error) {
if (retries > 0 && isNetworkError(error)) {
await new Promise((resolve) => setTimeout(resolve, 700));
return withNetworkRetry(call, retries - 1);
}
throw error;
}
}
Az alkalmazás iOS-en és Androidon is kiadott, éles verzió (2.0). A beléptetés egy beolvasásra egyszerűsödött, a szervezők pedig valós időben látják az érkezéseket.
Mobilalkalmazásra vagy beléptetésre lenne szükséged?
Mobilappot iOS-re és Androidra is építek, a backendjével együtt.
További projektek
Adminisztrá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 → Marketing automatizálásStatisztika, SEO és e-mail kampányok
Saját webanalitika, SEO-figyelés és e-mail kampányok, amik mérhetők, védettek, és a rutinmunkát maguktól elvégzik.
Hogyan készült →