How kassemabbassi/connectathon- works
SpotEarly is a role-based dental-screening platform. Staff register anonymous patient codes, capture or upload dental views, and request per-image AI detections; results are saved as patient files for institution-scoped dentist review, notes, and validation. Administrators manage institutions and accounts. The graph combines documented product flows with sampled imports and calls; unsampled backend route details are represented only where the README describes them.
Main entry points: App.tsx Role-based app · NewScreening.tsx Anonymous intake · main.py REST API and policy · PatientFile.tsx Screening result file
Components 21
Web experience
- Role-based app
frontend/src/App.tsx - Session state
frontend/src/context/AuthContext.tsx - Auth API client
frontend/src/lib/authApi.ts - English and Arabic
frontend/src/context/LanguageContext.tsx - Institution admin
frontend/src/pages/Admin.tsx
Screening workflow
- Anonymous intake
frontend/src/pages/NewScreening.tsx - Image capture
frontend/src/components/screening/CameraModal.tsx - Capture slots
frontend/src/components/screening/CaptureSlot.tsx - Detection client
frontend/src/lib/detectionApi.ts - Screening result file
frontend/src/pages/PatientFile.tsx - Detection overlays
frontend/src/components/screening/DetectionOverlay.tsx - Screening API client
frontend/src/lib/screeningApi.ts - Dentist review
frontend/src/pages/Dashboard.tsx
Backend services
- Caries inference API
backend/main.py - YOLO model weights
backend/model/best.pt - REST API and policy
backend/main.py - Sessions and roles
backend/auth.py
Data and storage
- MongoDB records
backend/database.py - Image storage service
backend/storage.py - Private image objects
Other components
- Platform users
Connections 23
- Platform users → Role-based app: uses
README.md - Role-based app → Session state: provides session
frontend/src/App.tsx - Role-based app → Anonymous intake: routes staff
frontend/src/App.tsx - Role-based app → Dentist review: routes dentists
frontend/src/App.tsx - Role-based app → Institution admin: routes admins
frontend/src/App.tsx - Session state → Auth API client: calls
frontend/src/context/AuthContext.tsx - Institution admin → Auth API client: manages accounts
frontend/src/pages/Admin.tsx - Anonymous intake → Image capture: opens camera
frontend/src/pages/NewScreening.tsx - Anonymous intake → Capture slots: renders
frontend/src/pages/NewScreening.tsx - Anonymous intake → Detection client: submits images
frontend/src/pages/NewScreening.tsx - Detection client → Caries inference API: uploads image
README.md - Caries inference API → YOLO model weights: runs inference
README.md - Anonymous intake → Screening result file: opens results
frontend/src/pages/NewScreening.tsx - Screening result file → Detection overlays: renders detections
frontend/src/pages/PatientFile.tsx - Screening result file → Screening API client: saves file
frontend/src/pages/PatientFile.tsx - Dentist review → Screening API client: loads and updates
frontend/src/pages/Dashboard.tsx - Dentist review → Detection overlays: reviews images
frontend/src/pages/Dashboard.tsx - Screening API client → REST API and policy: calls REST API
README.md - Auth API client → REST API and policy: calls auth routes
frontend/src/lib/authApi.ts - REST API and policy → Sessions and roles: enforces access
backend/main.py - REST API and policy → MongoDB records: reads and writes
backend/main.py - REST API and policy → Image storage service: stores and signs images
backend/main.py - Image storage service → Private image objects: uploads and retrieves
backend/storage.py