How plaksych/edu-attendance-tracker works
Edu Attendance Tracker schedules classes, accepts media uploads, and—when the camera workflow is enabled—records RTSP clips for recognition. Backend APIs and workers use PostgreSQL for domain data and job queues, while MinIO stores original and annotated media. The frontend presents schedule, sessions, recognition, catalogs, and attendance analytics. The README documents separate capture and recognition workers and a static demo mode; sampled source confirms API startup, frontend routing/API selection, storage helpers, and worker processing, but not every backend route or worker handoff.
Main entry points: main.py REST API · database.py PostgreSQL · recognition.py Recognition routes · object_storage.py MinIO media store
Components 23
Web application
- Page router
frontend/src/App.tsx - Product pages
frontend/src/pages - API client
frontend/src/api/client.ts - Demo data API
frontend/src/api/staticClient.ts
Backend services
- REST API
backend/app/main.py - Schedule routes
backend/app/api/v1/schedule.py - Session routes
backend/app/api/v1/sessions.py - Recognition routes
backend/app/api/v1/recognition.py - Catalog routes
backend/app/api/v1/catalog.py - Statistics routes
backend/app/api/v1/stats.py - Measurement scheduler
backend/app/services/scheduler.py - Attendance aggregation
backend/app/services/aggregation.py - Timetable import
backend/app/services/timetable_import.py - Session service
backend/app/services/sessions.py
Capture worker
- Capture manager
capture/app/main.py
Recognition worker
- Recognition worker
recognition/app/main.py - Job processor
recognition/app/processor.py - Person detector
recognition/app/detector.py
Shared storage
- PostgreSQL
backend/app/core/database.py - MinIO media store
backend/app/core/object_storage.py
Other components
- Staff user
- RTSP cameras
- Uploaded media
Connections 31
- Staff user → Page router: uses
- Page router → Product pages: routes to
- Product pages → API client: requests data
- API client → REST API: REST requests
- API client → Demo data API: selects demo mode
- Demo data API → Product pages: returns demo data
- REST API → Schedule routes: dispatches
- REST API → Session routes: dispatches
- REST API → Recognition routes: dispatches
- REST API → Catalog routes: dispatches
- REST API → Statistics routes: dispatches
- REST API → Measurement scheduler: starts
- REST API → MinIO media store: initializes bucket
- Schedule routes → Timetable import: imports timetable
- Schedule routes → PostgreSQL: reads/writes schedule
- Session routes → Session service: delegates
- Session service → PostgreSQL: reads/writes sessions
- Measurement scheduler → PostgreSQL: creates sessions and jobs
- Attendance aggregation → PostgreSQL: reads results
- Recognition routes → PostgreSQL: queues uploads
- Recognition routes → MinIO media store: signs media URLs
- Statistics routes → PostgreSQL: reads attendance data
- Capture manager → PostgreSQL: claims and updates tasks
- Capture manager → RTSP cameras: records streams
- Capture manager → MinIO media store: uploads recordings
- Recognition worker → PostgreSQL: claims and completes jobs
- Recognition worker → Job processor: processes job
- Job processor → MinIO media store: downloads and uploads media
- Job processor → Person detector: detects people
- Uploaded media → Recognition routes: uploads files
- REST API → Attendance aggregation: combines measurement results