Feature
Realtime Text Ingestion
Incoming text is accepted through a push API, buffered through a queue, and consumed on a controlled display loop.
Project 03 / 2026
Year
2026
Role
IoT & Backend Developer
Technologies
ESP32, C++, TypeScript, WebSocket, IoT

About this project
Smart Glass combines embedded display firmware and a Node.js backend to support low-latency text streaming for wearable translation scenarios. The IoT side handles queueing, buffer management, and OLED scrolling; the server owns HTTP state and WebSocket delivery.
Overview
Smart Glass focuses on realtime text visualization for wearable or near-eye display use cases. The embedded app receives incoming text chunks, queues them safely, renders readable text on an OLED display, and scrolls long messages smoothly. The backend provides REST endpoints and a WebSocket channel for live translation and navigation data.
My Role
Built the embedded display service, queue-driven rendering loop, OLED scrolling behavior, and backend WebSocket lifecycle. The work required balancing readable UX on constrained hardware with reliable low-latency server communication.
Key Features
06 Items
Feature
Incoming text is accepted through a push API, buffered through a queue, and consumed on a controlled display loop.
Feature
Long messages are measured in pixels and rendered as a seamless horizontal scrolling loop with configurable gap spacing.
Feature
Sliding-window trimming keeps the display buffer within memory limits while preserving recent readable content.
Feature
Firmware targets a Freenove ESP32-S3 WROOM board with Arduino, Adafruit GFX, SSD1306, ArduinoJson, and ArduinoWebsockets.
Feature
Express server attaches a WebSocket server at /ws and initializes translation handling for each connection.
Feature
Shutdown handler closes active WebSocket clients, the WebSocket server, and the HTTP server to avoid orphaned connections.
Tech Stack
Firmware
Backend
Realtime
The Challenge
Wearable displays have tight memory, timing, and readability constraints. Incoming translation text can arrive faster than the display should update, and long sentences must remain readable on a small OLED without flicker or heap pressure.
The Solution
Decoupled producers from rendering with a queue, used fixed pop and render intervals, kept the text buffer bounded, and measured pixel width before enabling scrolling. On the server, WebSocket connection handling is isolated from REST state and includes explicit cleanup paths.
Results
04 Metrics
Impact
2
Impact
0OLED
Impact
0WS
Impact
0ESP32
Lessons Learned
01
Embedded UI needs timing discipline; rendering on every incoming message creates flicker and unnecessary CPU load.
02
Bounded buffers and explicit queue drops are better than hidden memory growth on constrained hardware.
03
Realtime servers should close sockets intentionally during shutdown, especially when devices reconnect automatically.
Screenshots
Swipe or use the arrows.
Related Work
03 Cases

Contribution to Kiro, an agentic IDE and CLI for spec-driven development, hooks, powers, MCP integrations, and codebase-aware AI workflows.

SDG-focused landing page, learning hub, and Notion-powered blog platform for the Youth for Change initiative at UD-UFLS.

Full-stack PC hardware commerce platform with admin operations, JWT auth, QR checkout, analytics, AI chat, and price forecasting.