mirror of
https://github.com/Ziver/takt-screen.git
synced 2026-09-11 03:40:58 +00:00
A desktop version of the calendar task display
- C++ 65.7%
- C 33.2%
- Python 1.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| docs | ||
| icons | ||
| src | ||
| .gitignore | ||
| esp32-s3-devkitc-1-myboard.json | ||
| partitions.csv | ||
| platformio.ini | ||
| README.md | ||
Takt Screen — CrowPanel 5.0" ESP32-S3
A dedicated desktop task and daily rhythm display that pulls tasks, calendar events, and to-do feeds from cloud and self-hosted services, displayed on an Elecrow CrowPanel 5.0" capacitive touchscreen (800×480).
Takt (noun, Swedish): Rhythm, cadence, pace, or beat. A dedicated desk display designed to keep your daily tempo, habits, and task flow in rhythm without distractions.
Note: This project is vibe-coded — designed and built through AI-assisted pair programming.
Screen Gallery
| Single Task View | List View |
|---|---|
![]() |
![]() |
| On-Device Settings | Boot & Sync |
|---|---|
![]() |
![]() |
Hardware
| Component | Details |
|---|---|
| Display | Elecrow CrowPanel 5.0" ESP32-S3 (800×480, RGB parallel 16-bit) |
| MCU | ESP32-S3 (Dual-core Xtensa LX7 @ 240MHz, 8MB PSRAM, 8MB Flash) |
| Touch | Capacitive Touch (GT911 via I2C) |
| Audio | Built-in speaker / NS4168 I2S amplifier |
Features
- Multi-Provider Task Integration:
- Vikunja: Connects to self-hosted Vikunja instances via REST API with bidirectional completion sync and priority sorting.
- Joplin Server: Direct Joplin Server sync with timestamp-based delta caching (sub-second query times), E2EE detection, and bidirectional completion updates.
- Google Calendar: Integrates with the official Google Calendar v3 events API.
- iCal / ICS: Directly downloads and parses any standard
.icscalendar URL. - Local Tasks: On-device flash storage for offline tasks.
- Dynamic Task Limits: Configurable total task pool (default 50) split automatically and evenly across active providers.
- Gamification & Persistent Score: Daily completion count and score progress arc persist across reboots, syncs, and backend task archiving.
- Dual Display Modes:
- Single Task View: Distraction-free focus mode with completion streak and progress ring.
- List View: Scrollable checklist for high-density overview.
- Themes: Dieter Rams inspired Light Theme and OLED-friendly Dark Theme.
- Hardware & System Monitor: Live CPU clock speed and real-time RAM / heap utilization in the settings overlay.
- Local Web Admin: Built-in responsive web dashboard (
http://<device-ip>/) to configure providers, API tokens, display timeouts, and sync intervals without reflashing.
Setup
1. Credentials
Copy the example file and configure your WiFi credentials:
cp src/credentials.h.example src/credentials.h
Edit src/credentials.h:
#define WIFI_SSID "your-wifi-ssid"
#define WIFI_PASSWORD "your-wifi-password"
#define GCAL_API_KEY "your-google-calendar-api-key"
credentials.his gitignored and never committed.
2. Build & Flash
# Build and upload via USB
pio run -t upload
# Open serial monitor
pio device monitor
Project Structure
.
├── platformio.ini # PlatformIO environment & library dependencies
├── partitions.csv # Custom flash partition table
├── docs/ # Screenshots and documentation assets
└── src/
├── main.cpp # App initialization, main loop, and power management
├── display_driver.h # LovyanGFX RGB & GT911 touch integration
├── task_manager.h # Global task store, NVS completion cache & scoring
├── task_config_store.h # Provider credentials and device settings store
├── streak_store.h # Gamification streak & leveling engine (NVS WAL)
├── wifi_manager.h # WiFi reconnection & NTP time sync
├── web_server.cpp # Embedded web portal dashboard
├── providers/
│ ├── task_provider.h # Abstract provider interface
│ ├── provider_registry.h # Provider registry and fetch coordinator
│ ├── provider_vikunja.h # Vikunja REST API provider
│ ├── provider_joplin.h # Joplin Server API & cache provider
│ ├── provider_gcal.h # Google Calendar provider
│ ├── provider_ical.h # iCal / ICS feed parser
│ └── provider_local.h # Local flash storage provider
├── ui_common.h # Palette, geometry, and styling constants
├── ui_taskviewer.cpp # LVGL Single & List task viewer UI
├── ui_settings.cpp # On-device settings overlay & hardware monitor
├── ui_completion.cpp # Daily completion celebration screen
├── ui_initialization.cpp # Boot progress bar
└── fonts/ # Custom Montserrat & DejaVu Bold LVGL fonts
Troubleshooting
- Touch not responding: Verify your GT911 I2C address (
0x14or0x5D); the driver auto-detects both addresses. - Provider Connection Failed: Open the Web Admin (
http://<device-ip>/) to verify API tokens and endpoints. - WiFi Disconnected: Check
credentials.hSSID/password or monitor serial output viapio device monitor.



