UC-002: Hackathon Guest Access¶
Actor: Guest Priority: Must Status: Implemented (protocol + firmware allow-list evaluation)
Summary¶
A guest attending a weekend hackathon can enter the space only during the event dates.
Preconditions¶
- Admin has registered the guest in the backend with a date-limited access rule
- Guest has been issued a temporary NFC card
- The allow-list includes the guest's entry with valid_from and valid_until set to the event dates
Main Flow¶
- Guest holds NFC card against the terminal on Saturday morning
- ESP32 receives the UID, finds the entry in the allow-list
- Entry has access type SCHEDULED, no time slots (num_time_slots=0), date range covers the weekend
- Current time is within the date range — access granted
- Door unlocks, green LED + confirmation beep
Alternative Flows¶
A1: Guest arrives early (before valid_from)¶
- Guest scans card on Friday evening
- ESP32 finds the entry, but current_time < valid_from
- Access denied: "not yet active"
- Red LED + denial buzzer
A2: Guest returns after event (grace period)¶
- Hackathon ended Sunday at 18:00 (valid_until), group stayed until 18:45
- Space shutdown at 18:50 (last person presses shutdown button)
- Guest returns at 19:10 to pick up forgotten laptop
- Grace period (30 min) counts from shutdown (18:50), so grace runs until 19:20 — access granted with GRANTED_GRACE
- Grace period resets from this re-entry (19:10), so another 30 min until 19:40
- If NOTIFY_ON_ANOMALY is set, anomaly event is queued
Error Flows¶
E1: Guest tries to enter after expiry + grace¶
- Guest scans card on Monday
- valid_until + grace period has passed
- Access denied: "expired"
Postconditions¶
- Door unlocks during the event dates
- After event: card becomes inactive, admin can reclaim it
Access Rule¶
- Access type: SCHEDULED
- Time slots: None (all day within date range)
- valid_from: Friday 2026-03-13 18:00
- valid_until: Sunday 2026-03-15 18:00
- Notifications: NOTIFY_ON_ANOMALY
- Grace period: 30 minutes
Notes¶
- Admin should reclaim or deactivate the guest card after the event.
- If the hackathon runs overnight, no special time slot config is needed — the date range covers the entire period.