עברית
Motion
AccessibilityPrivacy
Case study10 / 15Sep 2022 – May 2026

AKA Attendees Tracker

Event check-in that grew from a self-service kiosk, where soldiers scan their ID card, into a web system with many check-in stations and an organisers' dashboard.

Role
Team lead & main developer
Organisation
Tikshuv AKA – the C4I and digital branch of the IDF Personnel Directorate (AKA)
Period
Sep 2022 – May 2026
Context
Military service at Tikshuv AKA · Cross-unit project with AKA, built while at Ta'az
Team and credits
  • Idan Achrak — Team lead, main developer: kiosk; web from v0.1 to 1.0.0
  • Noam Shadmi — Stabilised the first web attempt; built v0.1
Try the live demo (opens in a new tab)sample data · changes are undone about 3 hours later

01 / Paper sign-in sheets

AKA, the IDF Personnel Directorate, holds conferences and events where the organisers need to know who came. Attendance was taken on paper sign-in sheets at the entrance.

A paper sheet cannot tell the organisers how many guests have arrived so far, when each one came and left, or who turned up without being on the list, and the attendance report has to be put together by hand after the event.

  • Paper sign-in sheets at the entrance
  • No live count of who has arrived
  • No record of when people came and left
  • Guests who are not on the list

02 / What I built

First, Hoger Scanner: a full-screen kiosk for the entrance. A guest swipes their military ID card through a card reader or shows it to a barcode scanner. The screen greets them by name and records the time, and the next scan says goodbye with the time spent. Guest lists come in from Excel, and attendance goes back out to Excel.

Next came a web system for many stations. A soldier on my team made a first attempt that was not stable; Noam Shadmi stabilised it, but it was still weak, so we started over. Noam built v0.1 and helped shape the idea, and I redeveloped it with Claude Code into today's system: one laptop runs it, any computer, tablet or phone is a check-in station, and a console manages guest lists, live attendance and an undo history.

How it came together

  1. Nov 2022Kiosk 1.0A full-screen kiosk: swipe or scan the military ID card, get a greeting, and entry and exit times are recorded.
  2. Dec 2022First use at a conferenceThe kiosk checks in the guests of its first conference, and the organisers get the attendance list as a file.
  3. Jan–Jun 2023Kiosk 2.0 to 2.6Live counters, a save after every scan, and guest lists from Excel with attendance back to Excel. The final kiosk version.
  4. 2023–24A first web attemptA soldier on my team tried a web version. It was not stable; Noam Shadmi stabilised it, but the product stayed weak.
  5. 2025–26A fresh start: v0.1We started a new web system. Noam Shadmi built v0.1 and helped shape the idea, up to just before the first usable version.
  6. May 2026Redeveloped with Claude CodeI took it over and redeveloped it into the current product: new screens, Excel on the server, entry and exit, and an undo history.
  7. May 2026Release 1.0.0A one-click launcher, a Hebrew user manual and a developer README, so event staff can run it on their own.

03 / Highlights

01

Scan in, scan out

One scan records entry, the next records exit, and a third says "already left".

02

Any device works

One laptop runs the event; any computer, tablet or phone joins as a check-in station.

03

Walk-ins added

An unlisted number opens a short form: type a name, and the guest is checked in.

04

Excel in and out

Hebrew headers are recognised, others matched by hand; rejected rows show why.

05

Undo any change

Every change is saved with a snapshot and can be exported or reversed.

06

Many conferences

Create, switch and archive conferences; each keeps its own list and history.

04 / Screens

13 screens · sample data
The web check-in station right after a scan: the entry is recorded, and the top bar shows how many have arrived at the active conference (mock data).
01 The web check-in station right after a scan: the entry is recorded, and the top bar shows how many have arrived at the active conference (mock data).
Adding a guest who is not on the list
02 A number that is not on the list: the station says so and opens "add a new participant". Type the name, and the guest is added and checked in at once.
The check-in screen on a phone
03 The same check-in screen at phone width. Any phone or tablet on the event network can be a station.
The management console, Attendees tab
04 The management console: attendance for the active conference with a progress bar, a toolbar for search, add, Excel import and export, reset and delete all, and the guest table sorted by arrival time, newest first.
The Excel column-mapping dialog
05 Excel import with headers the system does not recognise: each column is shown with sample values and matched to a field by hand, and the unit column is ignored.
The Excel import results
06 The import results: 5 saved, 1 duplicate that was already in the conference, and 1 error, listed with its row number and the reason.
The Actions tab
07 The Actions tab: the full history of the active conference, with a coloured badge for each type of action and details, export and restore buttons on every row. One row is a completed restore of a deleted participant.
One action's before-and-after snapshot
08 One edit opened in detail: the before-and-after table shows exactly what changed, here a participant's name.
The Conferences tab
09 The Conferences tab: seven conferences, each with its status (active, archived or inactive), creation date and arrivals, and buttons to activate, archive or restore it.
The kiosk's main screen
10 The kiosk (version 2.6): a card reader with an ID card sliding through on the left, a hand holding a card under the barcode scanner on the right, and the "in list" and "scanned so far" counters in the top bar.
The kiosk's goodbye popup
11 The goodbye popup on the guest's second check-in: the name, the entry and exit times, and the time spent.
The kiosk's settings screen
12 The settings screen: load the guest list from Excel, export to Excel, delete the data, the "require names" switch and manual entry. The credit at the bottom reads "developed by Idan Achrak".
Then and now
13 Then and now: the kiosk's main screen (2023) and the web check-in station (2026).

05 / Impact

Over 90events
More than 14,000invitees at one event, the discharged soldiers' conference
6kiosk versions in 7 months
Under 20 hto finish release 1.0.0, working with Claude Code

The tracker was used at more than 90 events, held by over 20 units and directorates, and checked in thousands of people, from hundreds to thousands at each event. The largest single event, the discharged soldiers' conference, had upwards of 14,000 invitees on its list, the busiest ran 12 check-in stations at once, and 7 organisers ran events with it.

Instead of a paper sheet, every guest is recorded with a scan at the door. The organisers see who has arrived as it happens, finish the event with an Excel attendance report, and fix a mistake from the action history instead of by hand. With Claude Code, the final push to release 1.0.0 took under 20 hours.

06 / Role and tech

I built the kiosk on my own, every version of it; its settings screen carries the credit "developed by Idan Achrak". As team lead I then took it to the web. A soldier on my team made a first attempt that was not stable; Noam Shadmi stabilised it, and when it was still weak we started over. Noam built v0.1 and helped shape the idea, up to just before the first usable version (the MVP).

From there I was the main developer and redeveloped it into the current product with Claude Code. I set the design and the scope, reviewed each change, had one undone when it touched a screen I had already approved, and added a test for the entry-and-exit rule.

Tech

  • Python
  • pygame
  • pandas
  • PyInstaller
  • FastAPI
  • SQLAlchemy
  • SQLite
  • React
  • Vite
  • Tailwind CSS
  • Server-Sent Events
  • Claude Code
  • Uvicorn
  • Pydantic
  • openpyxl
  • pytest
  • pnpm
  • Pillow

How it's built

The kiosk is a full-screen Python app in pygame, built on my own widget kit. A background thread reads the scanner and card reader, which type like a keyboard; the 4K art is scaled to the screen once and cached; pandas reads and writes the Excel files; and PyInstaller packs it all into a single program file. The web system is a FastAPI server with a SQLite database that also serves the React front end. Every change is stored as an action with a snapshot so it can be undone, Server-Sent Events keep the console screens up to date, and a Windows launcher installs, builds and starts everything on one laptop. The 1.0.0 redevelopment was done with Claude Code under my direction: I gave it the design reference and the scope, reviewed every commit, and backed the scan rules with automated tests (pytest).

A paper sign-in sheet became a scan at the door.

First a kiosk I built alone, then a web system I led and redeveloped with Claude Code into a whole event network.

Chapters