ZH version is available. Content is displayed in original English for accuracy.
He is eleven and doesn't have a phone. I wanted him to talk to his friends without an account, a feed, or an algorithm in between, so I built five ESP32-S3 touchscreen units, one per kid. Tap a friend's name, their unit rings. Tap Everyone, they all ring.
Each unit dials outbound to a relay I run, so no house opens a port. Audio is uncompressed 16 kHz PCM in 20 ms frames, AES-256-GCM with a fresh key per call, over UDP with an encrypted-WebSocket fallback. To be precise: encrypted to my relay, not end-to-end. No rooms, no recordings, no free-text contacts; the roster lives in a server-side allow-list.
I'm a PM, engineer by degree but not by profession - let alone a firmware engineer. I assembled this with Claude as the engineering partner, which is why the write-up includes what went wrong: I shipped an OTA that boot-looped my son's board, and separately "diagnosed" a Cloudflare outage that didn't exist because I tested from the wrong vantage point. Echo is still unsolved.
The enclosure was designed in FreeCAD by my son (11); the STLs are in the repo.
It was a fun and exhilarating work for me and my son - like most of you would have experienced.
Looking forward for your responses/feedback.

Discussion (2 Comments)Read Original on HackerNews