Tim Smans

Student Attendance Tracker

Student Attendance Tracker

A full-stack application built for Metropolia University Of Applied Sciences in Helsinki. Using AI-powered scanning to manage student attendance efficiently.

Project Description

The goal was to create a scalable and automated solution for managing student attendance. The system-architecture contains a FastAPI-based backend, multiple edge devices (Raspberry Pi), a Vue.js frontend and PostgreSQL database.

I built the backend API with FastAPI (Python) using the layered architecture pattern, And connects to the database using the SQLAlchemy object relational mapper.
The API is deployed in Kubernetes, balancing the requests over multiple replica's off the API.

Each edge device runs on a Raspberry Pi 3 and runs multiple scripts in parallel as system services. The device is equipped with a motion sensor and an ultrasonic ranger, which only activates the scanning process when motion is detected. It also includes a Grove LCD screen that displays messages to students during the scanning process.

For identification, the Raspberry Pi uses a Pi AI camera to take snapshots of student cards and applies Tesseract OCR to extract the student ID. This makes the system AI-powered, automatic and hands-free.

The frontend dashboard was developed with Vue.js and styled with Tailwind CSS. It allows teachers to manage sessions and view student attendance in real-time. Since each edge device is linked to a specific classroom, the system supports scheduling devices to sessions. Teachers can assign a classroom (linked to a device) and connect it to a group of students, enabling automated check-ins during lectures.

Project Gallery

Project Architecture
Hardware overview
Entity Relationship diagram
Classgroup overview
Dashboard main screen
Classroom overview
Classroom schedule
Attendance overview
Tags
Python
Raspberry Pi
FastAPI
Tesseract OCR
Vue.js
Cypress
Tailwind CSS
SQLAlchemy
Kubernetes
PostgreSQL
Shell