Multi-service architecture for a fall detection scenario:
FallDetectionAPI/: .NET API + SignalRai-service/: FastAPI-based AI inference servicemock-camera-service/: MediaMTX + FFmpeg test camera streamingfactory-dashboard/: React dashboard (HLS monitoring + event panel)bruno_falldetection/: API test collection
mock-camera-servicepublishes test video streams via RTSP/HLS.FallDetectionAPImanages camera inventory and event flow.ai-serviceis called by the API to produce predictions.factory-dashboardshows video and events through API + SignalR + HLS.
| Service | Port | Compose path |
|---|---|---|
| WebAPI | 5000 | FallDetectionAPI/docker-compose.yml |
| SignalR | 5001 | FallDetectionAPI/docker-compose.yml |
| AI | 8200 | ai-service/docker-compose.yml |
| MediaMTX | 8554 (RTSP), 8888 (HLS) | mock-camera-service/docker-compose.yml |
| Dashboard | 3000 | factory-dashboard/docker-compose.yml |
There is no single central compose file; each service is started from its own folder.
First, create the shared network once:
docker network create fall_detection_networkThen use this typical startup order:
- Mock camera
cd mock-camera-service && docker compose up -d --build- AI service (a token may be required for initial model download)
# PowerShell
$env:HF_TOKEN="hf_xxx"
cd ai-service && docker compose up -d --build- API + SignalR + Postgres
cd FallDetectionAPI && docker compose up -d --build- Dashboard
cd factory-dashboard && docker compose up -d --buildAccess:
- Dashboard:
http://localhost:3000 - API:
http://localhost:5000 - SignalR:
http://localhost:5001 - HLS:
http://localhost:8888
FallDetection/
├── FallDetectionAPI/ # .NET API + SignalR + layered backend
├── ai-service/ # FastAPI-based AI service
├── mock-camera-service/ # RTSP/HLS test streaming infrastructure
├── factory-dashboard/ # React dashboard
└── bruno_falldetection/ # Bruno API test collection