Skip to content

svc-check-in

NovaTrek Check-In Service  |  Operations  |  v1.0.0  |  NovaTrek Operations Team

Handles day-of-adventure check-in workflow including wristband assignment,

Swagger UI Download OpenAPI Spec


Integration Context

svc-check-in C4 context diagram

Data Store

Overview

Property Detail
Engine PostgreSQL 15
Schema checkin
Tables check_ins, gear_verifications, wristband_assignments
Estimated Volume ~5,000 check-ins/day peak season
Connection Pool min 5 / max 20 / idle timeout 10min
Backup Strategy Continuous WAL archiving, daily base backup, 7-day PITR

Key Features

  • Indexes on reservation_id and check_in_date
  • TTL-based cleanup of stale check-ins (older than 24h)
  • Composite unique constraint on (reservation_id, participant_id)

Table Reference

check_ins

Primary check-in records for each guest arrival

Column Type Constraints
check_in_id UUID PK, DEFAULT gen_random_uuid()
reservation_id UUID NOT NULL, FK -> svc-reservations
participant_id UUID NOT NULL
guest_id UUID NOT NULL
adventure_category VARCHAR(50) NOT NULL
check_in_pattern SMALLINT NOT NULL, CHECK (1-3)
status VARCHAR(20) NOT NULL, DEFAULT 'pending'
checked_in_at TIMESTAMPTZ DEFAULT NOW()
checked_in_by VARCHAR(100) NULL (staff ID or 'self')
created_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
updated_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()

Indexes:

  • idx_checkin_reservation on reservation_id
  • idx_checkin_date on checked_in_at
  • idx_checkin_guest on guest_id, checked_in_at DESC
  • uq_checkin_participant on reservation_id, participant_id (UNIQUE)

gear_verifications

Gear assignment verification records linked to check-ins

Column Type Constraints
verification_id UUID PK
check_in_id UUID NOT NULL, FK -> check_ins
gear_assignment_id UUID NOT NULL
verified_by VARCHAR(100) NOT NULL
status VARCHAR(20) NOT NULL
notes TEXT NULL
verified_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()

Indexes:

  • idx_gear_ver_checkin on check_in_id

wristband_assignments

Digital wristband NFC assignments for checked-in guests

Column Type Constraints
assignment_id UUID PK
check_in_id UUID NOT NULL, FK -> check_ins
wristband_nfc_id VARCHAR(64) NOT NULL, UNIQUE
active BOOLEAN NOT NULL, DEFAULT TRUE
assigned_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
deactivated_at TIMESTAMPTZ NULL

Indexes:

  • idx_wristband_nfc on wristband_nfc_id (UNIQUE)
  • idx_wristband_checkin on check_in_id

Solutions Affecting This Service

Ticket Solution Capabilities Date
NTK-10003 Support Unregistered Guest Self-Service Check-In CAP-2.1, CAP-1.1, CAP-1.3 2025-02-12
NTK-10002 Adventure Category Classification for Check-In UI Patterns CAP-2.1, CAP-1.2 2025-02-10
NTK-10005 Add Wristband RFID Field to Check-In Record CAP-2.1 2025-02-08

Endpoints (5 total)


GET /check-ins -- List check-ins by reservation

View in Swagger UI

GET /check-ins sequence diagram

POST /check-ins -- Initiate check-in for a participant

Begins the check-in process for a reservation participant. Validates that

View in Swagger UI

POST /check-ins sequence diagram

GET /check-ins/{check_in_id} -- Get check-in details

View in Swagger UI

GET /check-ins/{check_in_id} sequence diagram

POST /check-ins/{check_in_id}/gear-verification -- Verify gear has been picked up and fitted

Records that the participant has received and been fitted with required

View in Swagger UI

POST /check-ins/{check_in_id}/gear-verification sequence diagram

POST /check-ins/{check_in_id}/wristband-assignment -- Assign RFID wristband to checked-in participant

Assigns a color-coded RFID wristband for tracking and access control

View in Swagger UI

POST /check-ins/{check_in_id}/wristband-assignment sequence diagram

Consuming Applications

Application Screens Using This Service
Operations Dashboard Check-In Station
Adventure App Self Check-In, Digital Wristband

Events Published

Event Channel Trigger Consumers
checkin.completed novatrek.operations.checkin.completed POST /check-ins svc-analytics, svc-notifications