A Predor, az Attendance Manager, meg az enterprise-szintű munkaidő-nyilvántartók pontos árát sose láttad egy honlapon. A pitch-deckjüket igen, a „kérjen árajánlatot" gombot is — és utána három hét kalkuláció meg 40 oldalas szerződés, mielőtt az első dolgozó lehúzhatná a kártyáját. Egy 8 fős ügyvédi iroda vagy egy 15 fős fogorvosi rendelő ezt végig se csinálja. Excel-táblát vezet. Vagy semmit.
Ezért építettem a Csekkert. Fix ár, fix funkció, egy hét alatt telepítjük, és minden ügyfél adatai a saját irodájában maradnak. On-prem. Nincs cloud. Nincs „kinek az AWS-én van a dolgozóid adata" kérdés.
Az alapfeladat röviden
A dolgozó odamegy a terminálhoz az ajtónál, a kártyáját hozzáérinti a panelhez, a készülék sípol, a képernyő „Szia Kovács Anna, 8:12" kiírja. Ennyi. A háttérben a rendszer elintézi, hogy:
- belépés-típus (be / ki / szünet) automatikus a napi ritmus alapján
- a szünetet levonja a napi nettóból, ha úgy van beállítva
- a túlórát pedig hozzáadja, ha az adott dolgozó eltéréssel van engedélyezve
- a havi riportot a könyvelő PDF-ben vagy Excel-ben letöltheti
Az admin-web böngészőben nyílik — a főnök láthatja élesben hogy éppen ki van bent, szerkesztheti a dolgozókat, műszakokat, kártyákat, és letöltheti a havi összesítőt. Ennyi az egész funkció-terjedelem. Ami van, az jól van. Ami nincs, az azért nincs, mert nem kell.
Hardware amit megfizethet
Minden ügyfélhez két dolog megy:
- Egy Raspberry Pi 5 szerver — 8 GB RAM, NVMe HAT, 256 GB SSD, UPS HAT, egyedi 3D nyomtatott ház. A Pi fut Ubuntu Server-en, rajta egy Docker Compose stack (PostgreSQL, FastAPI backend, Caddy reverse proxy, Mosquitto MQTT). Anyagköltség ~60-80 000 Ft.
- 1-2 ESP32-P4 terminál az ajtóhoz — Guition JC4880P443C fejlesztőpanel, 4.8" 480×480 IPS kijelzővel, GT911 érintőpanellel, PN532 NFC olvasóval I2C-n, ESP32-C6 WiFi co-processzorral. Anyagköltség ~15-20 000 Ft/db.
Miért ESP32-P4?
Ez egy új MCU az Espressif-től — 400 MHz dual-core RISC-V, MIPI DSI kijelző-interfész (nincs többé SPI-s pixel-shovelés), és egy külső ESP32-C6 WiFi co-processzor SDIO-n, mert a P4-ben magában nincs WiFi. Első ránézésre bonyolult, de cserébe kap az ember egy valódi kijelzős UX-et amit LVGL-lel szabadon rajzolhatsz, és egy nagyjából zavaratlan fő-CPU-t a logikához.
A WiFi co-processor trükkös része az esp_hosted protokoll — az ESP-IDF
v5.5 hivatalosan támogatja, és SDIO-n keresztül a C6 ugyanúgy viselkedik, mintha
egy soros WiFi modul lenne a P4 oldalán. A sdkconfig-ban pár flaget bekapcsolsz,
és működik. Ezt 2024-ben még nem lehetett így kényelmesen csinálni.
A telepítés onboarding nélkül
Ügyfélnél a terminált bekapcsoljuk. Mivel még nincs WiFi konfig, automatikusan
captive portál AP módba megy — a telefonoddal csatlakozol rá
(SSID: csekker-setup), megnyílik a beállító lap, beírod a hálózat
SSID-jét, jelszót, és opcionálisan a szerver IP-jét (ha nem akarod az mDNS-re
bízni). A terminál elmenti NVS flash-be, újraindul.
A Pi szerver ezalatt avahi-n hirdeti magát az mDNS-en
(csekker.local). A terminál bootkor először megpróbálja a
mDNS-discovery-t, 5 próbálkozás után fallback-el az NVS-ben lementett IP-re.
Ez a „csak működjön" beállítás — nem kell az ügyfélnek hálózati tudás,
nem kell DHCP reservation.
A mDNS + NVS fallback kombó azért jó, mert ha az ügyfél LAN-ja
átkonfigurálódik (router csere, új IP tartomány), a terminál magától
megtalálja a szervert az új címen. És ha az mDNS mégsem megy valami miatt
(vannak router-ek amik blokkolják a multicastet), akkor is van fallback.
NFC — a MIFARE okos elég
A PN532 olvasó I2C-n beszél a P4-el. MIFARE Classic kártyák UID-jét olvassa ki — nem használok semmilyen belső szektor-adatot, csak a 4 vagy 7 byte-os UID-t. Ez elég, mert a szerver oldalon a UID-hoz tartozó dolgozó a DB-ben van bekötve.
A biztonsági szempontból kritikus dolog ilyenkor: a MIFARE Classic UID klónozható. Egy támadó elkaphatja és duplikálhatja a kártyát. Ezért ez nem egy beléptető rendszer — nem arra való, hogy szigorúan eltiltsa a bejutást a páncélszobába. Egy munkaidő-nyilvántartó. Ha valaki hamisít, akkor is a saját kártyáját fogja hamisítani — mert ugyan minek hamisítaná a kollégáét?
Ez fontos distinkció, és a pitch-deckben is ezt tisztázom: a Csekker egy riport-szintű rendszer, nem egy biztonsági rendszer.
A Docker Compose egyetlen komfort-döntés
A teljes backend egy docker compose up -d parancs — PostgreSQL,
FastAPI (Python 3.12), Caddy, Mosquitto, admin-web (React + Vite). Az ügyfélnek
annyit kell csinálnia:
git clone https://github.com/gaberun24/csekker.git /opt/csekker
cd /opt/csekker
cp .env.example .env
nano .env # ügyfél adatok
docker compose up -d
A Caddy automatikusan intéz egy Let's Encrypt certet a saját domain-jére (pl.
csekker.ugyvediodr.hu), ha van domain-je, vagy marad HTTP LAN-on belül.
A backend async SQLAlchemy-val fut, a frontend egy egyszerű SPA Vite build-del.
Árazás ami átlátszó
Mivel az a legnagyobb bosszúságom a versenytársakkal, a honlapon kint van az összes csomag minden díja, előre:
- Mini — 10 főig · 89 000 Ft egyszeri + 2 990 Ft/hó
- Iroda — 30 főig · 149 000 Ft egyszeri + 4 990 Ft/hó
- Iroda+ — 50 főig · 219 000 Ft egyszeri + 7 990 Ft/hó
Minden csomag ugyanazt a funkcionalitást tudja. A létszám-limit a DB-ben van, a funkciók nem. Nincs „de a havi export már az Iroda+ csomagban van" trükközés.
Amit nem építek bele
Legalább annyi fontos meghatározni mit nem tud a Csekker. Nem fog:
- arcfelismerni (biometrikus adat — nem akarom kezelni, nem kell)
- mobilról akárhol becsekkolni GPS-szel (ez már nem jelenléti, az home-office)
- automatikus bérszámfejtést csinálni (az a könyvelő dolga, a riportot odaadom)
- AI-alapú „elemzést" arról, hogy ki dolgozik „produktívan" (ez szerintem toxikus)
Ez direkt szűk fókusz. A kis iroda azért nem használ Predort, mert nem kell neki 99% a funkcionalitásából. Akkor nem is adom el neki.
Kinek lehet érdekes?
Zalaegerszeg és környéke az indulópont — könyvelőirodák, ügyvédi és mérnöki irodák, fogorvosi rendelők, magánklinikák, kis IT cégek. Ha ilyen vagy és most excel-táblát használsz hozzá, vagy körbekérdezed a kollégát „mikor jöttél be?" — írj egy emailt. Elviszem a hardvert, feltelepítem, megtanítom a kezelést egy délelőtt alatt.
A kis cégek nem rossz ügyfelek. Csak senki nem épít nekik olyat, amit meg tudnak fizetni és fel tudnak használni.