All projects
Embedded Systems · Hardware / PCB Design
Lina — Clockify Desk Time Tracker
A physical desk device for tracking work time with Clockify. It runs on an ESP32-C3 on a custom PCB, with a 240×240 round display and a rotary encoder for navigation, and it calls the Clockify REST API over HTTPS.
Prototype2026
LINA / CONNECTED DEVICE
Hardware → firmware → softwareConcept diagram
Problem and motivation
Starting and stopping time tracking in a browser tab is easy to forget. Lina puts it on a physical device on the desk. The project also exercises embedded networking: TLS, JSON parsing and a third-party REST API on a small microcontroller.
Requirements
- Connect to Wi-Fi and authenticate against the Clockify API.
- Show the user's workspace and projects on a small display.
- Navigate and select with one physical control.
Hardware architecture
- ESP32-C3 SuperMini module on a custom KiCad PCB, with an MCP1700 3.3 V LDO and test points for bring-up.
- GC9A01 240×240 round TFT on SPI at 40 MHz.
- Rotary encoder with integrated push switch as the only input.
- 3D-printed enclosure.
Firmware architecture
- Layered C++ design: an App coordinator uses separate WiFi, display and Clockify services, so UI code never touches HTTP directly.
- An HttpClient wrapper over WiFiClientSecure handles HTTPS requests. Responses are parsed with ArduinoJson and mapped into typed structs.
- Service calls return an explicit result type with success or error, instead of failing silently.
- The API key is injected at build time from the environment and is not committed to source.
- Wi-Fi credentials are configured through a captive portal.
Engineering decisions
- ESP32-C3 for built-in Wi-Fi, native USB and low cost in a small footprint.
- One rotary encoder keeps the device small and the UI predictable.
- Clear separation between network, data mapping and rendering, so each can be tested and changed on its own.
Results
A working prototype that authenticates with Clockify and retrieves the user's workspace and projects on custom hardware.
Potential improvements
- Cache workspace and project data in flash for faster start-up.
- Low-power idle mode with wake on encoder input.
- Secure on-device storage for the API key, configurable through the setup portal.