A Go + Fyne desktop app experiment (archived project)
go-cal is a local-first wellness tracking app built with Go, Fyne (GUI framework), and SQLite3. It was designed as an experiment to explore:
- cross-platform desktop GUI in Go
- custom widget development
- SVG-based data visualization
- local persistence without external services
(custom time selector, icons, and estimated calories calculation)

(custom time selector, icons, and estimated calories calculation)

- Select food type using custom icon widgets
- Manual or estimated calorie input
- Daily calorie progress bar
- Designed for quick meal logging
(Partially implemented)
- Daily liquid intake target
- Zero external API usage — fully offline
- Start / stop fasting
- Real-time fasting duration indicator
- Donut progress chart (custom-rendered)
- Fully custom SVG line graph renderer
- SQLite-powered history
- Smooth multi-day display logic
- Time picker widget
- SVG graph renderer
- Custom popup and modal windows
- Category buttons (rice, meat, snack, fruit, etc.)
- No cloud, no account, no external services
- Fully private and offline
- Tiny portable app
| Area | Technology |
|---|---|
| Language | Go (Golang) |
| GUI Framework | Fyne |
| Database | SQLite3 |
| Rendering | Custom SVG + Canvas Drawing |
| Platform | Linux (primary), cross-platform |
These were originally on the roadmap but the project was discontinued early:
- Full implementation Liquid intake tracking
- Weight history input improvements
- Calorie & hydration daily target customization
- Multi-day fasting summaries
- Manual exercise logs
I eventually moved to a web-based fasting tracker that met my needs, so development stopped. This repository is published publicly to showcase:
- Go GUI development
- custom SVG visualization
- local-first application design
- exploration of Fyne widget system
🧩 Development Notes
This project contains several TODO and FIXME comments across the codebase.
These reflect design ideas, UI improvements, and planned refactoring that were never fully implemented before the project was archived.
