Mobile / Security

BeSafe

Parental Control System

Code available upon request

Key Highlights

Core Achievements & Scope

  • —

    Designed and built a full-stack parental control system across an Express/Socket.IO backend, a Flutter desktop parent app, and a Flutter Android child agent

  • —

    Implemented real-time device pairing (time-limited code), a WebSocket command bus for instant device lock and app-blocking rule delivery without polling

  • —

    Built an Android background service enforcing allowlist-based app blocking and processing remote commands via Socket.IO

THE CHALLENGE

The Problem

Existing parental control tools are either paid subscription services or require invasive MDM enrollment. The goal was to explore building a self-hosted, end-to-end solution that gives parents real-time visibility and control over a child's Android device from a desktop app, without relying on third-party services.

ENGINEERING APPROACH

My Approach

I built BeSafe as a three-component system. The Node.js backend handles family account registration, a time-limited device pairing system (PairingCode model with expiry), JWT-authenticated REST routes for device and command management, and a Socket.IO layer that keeps parent and child sockets identified by family ID and device ID. The parent Flutter desktop app provides device listing with live online/offline/tamper indicators, a device details screen where parents can configure an app allowlist and toggle instant lock, and a pairing code generator. The Android child agent is a persistent Flutter background service that sends regular heartbeats, maintains a WebSocket connection, and enforces the parent-defined allowlist — blocking any app not on the approved list and surfacing a lock screen on command.

OUTCOME & IMPACT

Outcome & Deliverables

The system was completed as a full working prototype demonstrating real-time parent-child device communication, remote app blocking, and instant lock via the command queue pattern. No metric available.