Seif . SYS CONNECT_
RETURN_TO_HOME
Graduation capstone · A+

SafeChild

Flutter developer — safety features & real-time UX

FlutterSpring BootPostgreSQLPython · FastAPIFirebaseWebSocket / STOMP

What it is

SafeChild lets parents and kids stay connected without the app feeling like surveillance software: safe zones on a map, daily and weekly battery and location reports, in-app messaging, and an AI advisor parents can actually ask questions to. It was my graduation capstone, built with a teammate over two semesters, and defended with an A+.

My role

I owned the safety and real-time UX side of the Flutter app: geofencing, background location tracking, push notifications, secure local storage, and the parent-child chat experience.

Technical highlights

>_

Dual-tier geofencing

Built breach detection using the Haversine formula with two alert tiers, so a parent gets a gentle heads-up before a hard breach alert — not just a binary in/out zone flag.

>_

Real-time chat

Implemented parent-child messaging over WebSocket with STOMP, including handling reconnects and keeping message state consistent when the app moves to the background.

>_

Background location, reliably

Used WorkManager to keep location and battery reporting running even when the app is killed or the phone restarts, without draining the battery it is meant to be protecting.

>_

Typed error handling

Built a Dio interceptor layer with a typed exception hierarchy so network failures surface as specific, actionable states in the UI instead of generic error toasts.

>_

AI advisor

A RAG-based assistant (FastAPI, ChromaDB, Gemini) that answers parenting and safety questions by searching real reference material instead of improvising.

Screenshots

SafeChild screenshot 1
SafeChild screenshot 2
SafeChild screenshot 3

The hard part

The hardest part was reliability, not features: background location on Android is fighting the OS's battery optimizations at every step. Getting WorkManager, FCM, and the geofencing logic to survive real-world conditions (app kills, doze mode, spotty connectivity) taught me more about production Android constraints than any course did.