A personal activity tracker with a GitHub-style contribution calendar.
Track daily habits, visualize progress with a heatmap, and stay on top of your goals — all locally, no account required.
Install · Features · Screenshots · Tech Stack
Daylo runs entirely on your device — no account, no cloud, no tracking.
- Desktop app (Windows, macOS, Linux) — Download from GitHub Releases
- Docker — Self-hosted via
docker compose - From source — Clone and build
- Annual heatmap view — See your entire year at a glance with a 5-level color heatmap
- Monthly detail view — Drill down into any month with activity dots per day
- Quick daily logging — Click any day to check off completed activities
- Activity management — Create, edit, and delete activities with custom colors
- Statistics — Current streak, longest streak, monthly completion rate
- Export/Import — Back up your data as JSON or CSV, restore from backup
- Offline-first — All data stays on your device, works 100% offline
- Cross-platform — Runs as a desktop app (Windows, macOS, Linux) or in the browser
Year View — See your entire year at a glance
Month View — Drill down into any month
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite 7 |
| Styling | Tailwind CSS 4 |
| State | Zustand 5 (persisted to localStorage) |
| Desktop | Tauri 2 |
| Testing | Vitest + Testing Library (unit), Playwright (E2E) |
| CI/CD | GitHub Actions |
Download the latest release for your platform from the Releases page:
| Platform | File |
|---|---|
| Windows | Daylo_x.x.x_x64-setup.exe |
| macOS (Apple Silicon) | Daylo_x.x.x_aarch64.dmg |
| macOS (Intel) | Daylo_x.x.x_x64.dmg |
| Linux (Debian/Ubuntu) | Daylo_x.x.x_amd64.deb |
| Linux (Other) | Daylo_x.x.x_amd64.AppImage |
Just install and open — no setup, no accounts, no internet required.
Run Daylo as a local web service with a single command. Requires Docker.
docker compose up -dOpen http://localhost:3000 in your browser.
Requires Node.js 20+.
git clone https://github.com/henfrydls/daylo.git
cd daylo
npm install
npm run devOpen http://localhost:5173 in your browser.
To build the desktop app from source, you also need Rust:
npm run tauri:buildThe installer will be generated in src-tauri/target/release/bundle/.
Development & Testing
npm run dev # Start dev server (browser)
npm run tauri:dev # Start dev server (Tauri desktop window)
npm run build # Build for web
npm run tauri:build # Build desktop installer
npm run lint # Run ESLint
npm run preview # Preview production build locallynpm test # Unit tests (watch mode)
npm run test:ui # Unit tests with interactive UI
npm run test:coverage # Unit tests with coverage report
npm run test:e2e # E2E tests (Playwright)
npm run test:e2e:ui # E2E tests with interactive UIsrc/
├── components/
│ ├── activities/ # ActivityForm, ActivityList, QuickLog
│ ├── calendar/ # YearView, MonthView, DayCell
│ ├── data/ # ExportModal, ImportModal
│ ├── stats/ # StatsPanel
│ └── ui/ # Button, Modal, Tooltip, Toast, Icons, etc.
├── hooks/ # useAppVersion, useFocusTrap
├── lib/ # colors, dates, dataExport utilities
├── store/ # Zustand stores (calendar, toast)
├── types/ # TypeScript interfaces
├── App.tsx
└── main.tsx
PolyForm Noncommercial 1.0.0 — free for any non-commercial use. Commercial use requires written permission from the author. See LICENSE.


