Skip to main content

System Architecture

ScannerSky uses a hub-and-spoke model.

  • Hub: Django + PostgreSQL central server
  • Spokes: node scanners that send scan events

Node Types

  • Windows bridge node: local PC/SC reader to browser over WebSocket
  • Raspberry Pi node: scanner service with optional admin API for remote actions
  • ESP32 node: planned lightweight Wi-Fi scanner

Core Communication

  • Scan submit: POST /api/scan/
  • Card lookup: GET /api/info/{card_number}/
  • Device heartbeat: POST /api/devicelogs/
  • Device status: GET /api/devices/status/

Server Responsibilities

  • Persist people, devices, records, class and event attendance data
  • Expose API endpoints for node and admin workflows
  • Provide admin interface for records, attendance, and device operations
  • Enforce role-based access controls, including custom global attendance visibility permissions
  • Track user login events (via user_logged_in signal) and user page visits (via UserVisitationMiddleware) for audit trail

For permission and admin behavior details, see Admin and Commands and Database Schema.

Continue Reading