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
QR kód beolvasása a telefon kamerájával, azonnali, színkódolt eredménnyel: érvényes, már felhasznált, lejárt vagy ismeretlen jegy. VIP vendégek külön kezelve.
Gyors beléptetés
Opcionális automatikus mód: érvényes jegynél a beolvasással egyből megtörténik a beléptetés, külön koppintás nélkül.
Kiléptetés
Külön kiléptető folyamat, így mindig pontosan látszik, hányan vannak bent.
Helyszíni jegyértékesítés
Kosárral és fizetési folyamattal, hogy a bejáratnál is lehessen jegyet venni.
Élő statisztika
Érkezési grafikon 10 perces bontásban, eladott, beléptetett és meg nem jelent jegyek, jegytípusonkénti bontás és időrendi lista.
Szerepkörök és felhasználók
Öt szerepkör (adminisztrátor, beléptető, kiléptető, portás, megtekintő). Mindenki csak a saját munkájához szükséges képernyőket látja. A felhasználók az appból kezelhetők.
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. Így nem érzésre mondom, hogy gyors, hanem látom.
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. A szabály egyszerű: 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 előre felépül, mielőtt az első vendég érkezik, a beolvasástól az eredményig eltelt időt pedig vendégenként mérem, így a lassulás hamar kiderül.
Gyenge hálózat mellett is használható
Hálózati hiba esetén az ismételhető hívások automatikusan újrapróbálkoznak, a nem ismételhetők viszont soha, így nem lehet kétszer beléptetni valakit.
Biztonság
A bejelentkezés titkosított tárolóban él, hosszabb munkamenet esetén biometrikus azonosítással védve. A kiválasztott esemény érvényességét az app folyamatosan ellenőrzi.
Üzemeltethetőség
Automatikus hibajelentés, háttérben érkező javítások az áruházi frissítés megvárása nélkül, és szerepkör alapú hozzáférés a szerver oldalon 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.
Esettanulmány → Ö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.
Esettanulmány → Marketing automatizálásStatisztika, SEO és e-mail kampányok
Saját webanalitika, SEO felügyelet és védett, mérhető e-mail kampányok, amelyek a rutinmunkát magától elvégzik.
Esettanulmány →