How rromeo-rj/parental-all-features works
SafeGuard is a multi-parent parental monitoring system: parents pair child devices and view only their assigned devices’ activity, while administrators oversee users, devices, and system activity. The Android client runs a background service, receives remote commands, and sends device status and captured data to the server; parents manage devices and commands through the server’s dashboard/API, with SQLite-backed records and real-time socket communication. The README documents encrypted communication, role-based access, notifications, and monitoring capabilities. Some feature wiring is inferred from documentation and the tree; unsampled implementation links are omitted.
Main entry points: app.py Flask application · database.py Database layer · ApiClient.kt HTTP API client · SocketManager.kt Client socket
Components 22
Android client
- Device setup
app/src/main/java/com/safeguard/client/ui/SetupActivity.kt - Background daemon
app/src/main/java/com/safeguard/client/services/DaemonService.kt - Command dispatcher
app/src/main/java/com/safeguard/client/managers/CommandDispatcher.kt - Device capabilities
app/src/main/java/com/safeguard/client/managers - Accessibility telemetry
app/src/main/java/com/safeguard/client/services/AccessibilityEngine.kt - Screen capture
app/src/main/java/com/safeguard/client/services/MediaProjectionService.kt - HTTP API client
app/src/main/java/com/safeguard/client/network/ApiClient.kt - Client socket
app/src/main/java/com/safeguard/client/network/SocketManager.kt - WebRTC streaming
app/src/main/java/com/safeguard/client/webrtc/WebRtcManager.kt
Server services
- Flask application
server/app.py - Authentication
server/routes/auth_routes.py - Device management
server/routes/device_routes.py - Command queue
server/routes/command_routes.py - Admin oversight
server/routes/admin_routes.py - Monitoring APIs
server/routes
Data and realtime
- Domain records
server/models - Database layer
server/database.py - Realtime server
server/socket_server.py
Parent and admin
- Dashboard interface
server/static/js/main.js
Other components
- Parent
- Administrator
- Child device
Connections 27
- Parent → Dashboard interface: uses
- Administrator → Dashboard interface: uses
- Child device → Device setup: pairs through
- Device setup → HTTP API client: registers
- Background daemon → Client socket: connects and polls
- Client socket → Realtime server: exchanges events
- Realtime server → Command dispatcher: delivers commands
- Background daemon → Command dispatcher: dispatches polled commands
- Command dispatcher → Device capabilities: invokes capabilities
- Accessibility telemetry → Database layer: stores telemetry
- Accessibility telemetry → Client socket: emits telemetry
- Screen capture → HTTP API client: uploads captures
- HTTP API client → Flask application: calls HTTP API
- Dashboard interface → Flask application: requests pages and data
- Flask application → Authentication: routes authentication
- Flask application → Device management: routes device requests
- Flask application → Command queue: routes commands
- Flask application → Admin oversight: routes administration
- Flask application → Monitoring APIs: routes monitoring data
- Flask application → Realtime server: serves realtime integration
- Device management → Database layer: registers and updates devices
- Command queue → Database layer: queues and updates commands
- Admin oversight → Database layer: reads and updates records
- Monitoring APIs → Database layer: reads and stores activity
- Database layer → Domain records: persists records
- WebRTC streaming → HTTP API client: exchanges signaling
- WebRTC streaming → Client socket: uses signaling events