All projects

Embedded Systems · Hardware / PCB Design · Software Engineering

Beastie Checkpoint — Attendance System

An end-to-end employee attendance system: a wall-mounted RFID terminal on a custom PCB, embedded firmware that reports events over Wi-Fi, and a backend and web application for managing attendance records. It was used in a real workplace for about two years.

Deployed· in use ~2 years2024
CHECKPOINT / CONNECTED DEVICE
ESP8266RFID TERMINALRFID TAGBUTTONPOWERWI-FIBACKENDDASHBOARD
Hardware → firmware → softwareConcept diagram

Problem and motivation

The workplace needed a dependable way for staff to record arrival and departure, with records that management could review. I built the full system myself, from the circuit board to the web interface.

Requirements

  • Check in or out with a single badge tap.
  • Network configuration on site, without reflashing firmware.
  • Events stored centrally and visible in a web dashboard.
  • Reliable enough for unattended daily use.

Hardware architecture

  • ESP8266 (NodeMCU v3 module) mounted on a custom carrier PCB designed in KiCad.
  • MFRC522 RFID reader connected over SPI.
  • Push-button input for user interaction, debounced in firmware.
  • Custom 3D-printed enclosure designed around the PCB and reader.

Firmware and software architecture

  • Firmware in C++ (Arduino framework): reads the tag UID, packages the event as JSON and sends it to the backend over HTTP.
  • Wi-Fi credentials are entered through a captive portal (WiFiManager) on first boot.
  • Backend: Node.js / Express in TypeScript, with Firebase for data storage.
  • Frontend: React web dashboard for viewing and managing attendance records.
  • Implementation details, data and code stay private because the system belongs to the business.

Engineering decisions

  • An off-the-shelf MCU module on a custom carrier board kept the design simple to assemble and service.
  • A captive-portal Wi-Fi setup meant the device could be moved or the network changed without a laptop.
  • Owning both the device and the backend allowed the device–server protocol to be designed together.

Testing and validation

  • Validated in daily use at the workplace for approximately two years.

Results

The system ran in daily use for about two years. I built every layer of it: electronics, firmware, enclosure, backend and web interface.

Potential improvements

  • Queue events in flash while the network is unavailable and sync them later.
  • Move to an ESP32 for more headroom for TLS and on-device feedback.
  • Device health reporting (uptime, reconnects) to the backend.