How stephenkhytze/verifigate works
VeriGate is a school gate ID-scanning system. A camera capture worker crops an ID and sends it to Laravel; Laravel calls OCR, matches identity, routes the scan into a gate event, and exposes the result to guard and student-facing monitors. Guards can search, manually identify, and decide pending events. The README documents these capabilities and service boundaries; several internal services are unsampled, so their detailed call relationships are not asserted.
Main entry points: ScanProcessor.php Scan processor · GateEvent.php Gate events · GuardActionsController.php Guard endpoints · guard.tsx Guard monitor
Components 20
Capture and OCR
- ID capture worker
python/services/id-capture/capture.py - OCR service
python/services/id-ocr/app/main.py
Gate processing
- Station scan endpoint
web/app/Http/Controllers/Station/StationScanController.php - Scan processor
web/app/Services/IdScan/ScanProcessor.php - OCR client
web/app/Services/IdScan/OcrClient.php - Identity matching
web/app/Services/IdScan/IdentityMatcher.php - Scan routing
web/app/Services/IdScan/ScanRouter.php - Gate events
web/app/Models/GateEvent.php - People records
web/app/Models/Student.php - Uniform provider
web/app/Services/IdScan/UniformProvider.php
Guard operations
- Guard endpoints
web/app/Http/Controllers/Station/GuardActionsController.php - Guard decisions
web/app/Http/Controllers/Station/GuardDecisionController.php - Gate state endpoints
web/app/Http/Controllers/Station/GateStateController.php - ID image endpoint
web/app/Http/Controllers/Station/IdImageController.php
Gate screens
- Guard monitor
web/resources/js/pages/gate/guard.tsx - Student monitor
web/resources/js/pages/gate/screen.tsx - Gate UI components
web/resources/js/components/gate
Other components
- Camera
- Guard
- Application database
Connections 24
- Camera → ID capture worker: captures image
- ID capture worker → Station scan endpoint: posts crop
- Station scan endpoint → Scan processor: processes scan
- Scan processor → OCR client: requests OCR
- OCR client → OCR service: sends image
- Scan processor → Identity matching: matches identity
- Scan processor → Scan routing: routes scan
web/app/Services/IdScan/ScanRouter.php - Scan processor → Uniform provider: checks uniform
- Scan processor → Gate events: writes event
- Identity matching → People records: matches records
- Scan routing → Gate events: decides status
web/app/Services/IdScan/ScanRouter.php - Guard → Guard endpoints: searches or identifies
- Guard endpoints → People records: searches records
web/app/Http/Controllers/Station/GuardActionsController.php - Guard endpoints → Gate events: creates or updates
web/app/Http/Controllers/Station/GuardActionsController.php - Guard → Guard decisions: approves or denies
- Guard decisions → Gate events: updates status
web/app/Http/Controllers/Station/GuardDecisionController.php - Guard monitor → Gate state endpoints: polls guard state
- Student monitor → Gate state endpoints: polls screen state
- Guard monitor → Guard endpoints: uses guard actions
- Guard monitor → Gate UI components: renders components
- Gate state endpoints → Gate events: reads events
web/app/Http/Controllers/Station/GateStateController.php - Gate events → Application database: persists events
- People records → Application database: stores records
- ID image endpoint → ID capture worker: fetches crop