Mosaic

Open-source connected desk display · Capstone

An open-source, self-hosted desk display for developer notifications, actions, and focus without another browser tab.

Overview

An ESP32-P4 desk device with a 5" touchscreen, paired with a self-hosted server, admin app, and desktop companion. I own the firmware and on-device LVGL interface.

Built with
ESP-IDF · C++ · LVGL · ESP32-P4 · .NET · SQLite · React · Tauri · Protobuf
Links

Problem

Developer workflow context is usually spread across browser tabs, desktop apps, and notification streams. That creates repeated context switching and competes for the same monitor space needed for focused work.

Solution

Mosaic is a capstone project built around a Waveshare ESP32-P4 5" touch display and a self-hosted server designed to run on a Raspberry Pi. I own the firmware and device UI. Display, touch, phone-based Wi-Fi setup, credential storage, and Wi-Fi recovery are verified on hardware. Pairing, backend transport, and the dashboard are in progress.

Architecture

  • GitHubFirst planned service
  • Additional servicesPlanned
  • .NET serverNative AOT + SQLite
  • Admin appReact + Vite
  • ESP32-P4 deviceESP-IDF + C++
  • LVGL interface5" touchscreen
  • Tauri companionDesktop actions
The device receives state from a self-hosted server, so third-party credentials never live on the hardware.

Decisions

An appliance, not a kiosk browser
The Waveshare ESP32-P4 board and native LVGL interface avoid the boot time, power draw, cooling, and browser overhead of a Raspberry Pi-style kiosk. The tradeoff is giving up standard web rendering in favor of a purpose-built interface.
One source of truth for design tokens
A single JSON token source generates web CSS, lint restrictions, and a firmware C header, so the admin app, browser prototype, and device UI share one visual system. Firmware tokens use desk-distance type sizing and an 80 px minimum control height.
Setup from a phone, no app required
The device shows a Wi-Fi QR code and opens a captive portal where the owner enters network credentials and a server URL. The flow, credential save, reboot, and recovery path were verified on the physical board.
Keep credentials and integrations off-device
The server owns third-party connections and webhooks. The device only speaks a Protobuf protocol to the owner's server, and the admin interface is planned to stay private while webhooks are exposed publicly.