- Update GTK Application ID to dev.lemoonstar.Backview in main.rs - Add high-resolution GNOME HIG compliant SVG app icon (dev.lemoonstar.Backview.svg) featuring a realistic daily binder journal - Add high contrast symbolic icon (dev.lemoonstar.Backview-symbolic.svg) - Add desktop launcher file (dev.lemoonstar.Backview.desktop) for system desktop menus - Add highly compatible install.sh script for compiling, installing, and uninstalling the application on user-space or system-wide paths - Update README.md with comprehensive installation guide |
||
|---|---|---|
| backview-cli | ||
| backview-core | ||
| backview-gui | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| dev.lemoonstar.Backview-symbolic.svg | ||
| dev.lemoonstar.Backview.desktop | ||
| dev.lemoonstar.Backview.svg | ||
| install.sh | ||
| README.md | ||
Backview
Backview is a personal activity tracker that collects what you did each day from multiple sources, stores it locally, and optionally uses a local AI to produce a clean human-readable daily summary.
It is built in Rust with a reusable library core, a GTK4 + Libadwaita desktop GUI, and a standalone CLI.
Features
- Multi-source activity collection — local Git commits, GitLab events, and daily markdown notes
- Glob pattern support — point to an entire projects directory and all git repos inside are discovered automatically
- Local SQLite storage — everything stays on your machine, no cloud required
- AI summarisation (optional) — send raw activity logs to any OpenAI-compatible endpoint (Ollama, LM Studio, OpenWebUI, etc.) and get back a structured breakdown of tasks and time spent
- GTK4 / Libadwaita GUI — native GNOME desktop app with a calendar, activity list, preferences panel, and toast notifications
- CLI — scriptable
sync,list, andsummarizecommands
Architecture
backview/
├── backview-core/ # Reusable library: sources, DB, config, AI
├── backview-gui/ # GTK4 + Libadwaita desktop application
└── backview-cli/ # Command-line interface
backview-gui ──┐
backview-cli ──┤── backview-core ──┬── Local Git (git2)
│ ├── GitLab API (reqwest)
│ ├── Notes (filesystem)
│ ├── SQLite DB (rusqlite)
└── ~/.config/backview/config.toml
~/.local/share/backview/backview.db
Getting Started
Prerequisites
- Rust (stable or nightly) — rustup.rs
- GTK4 and Libadwaita development libraries (for the GUI only)
On Fedora / RHEL:
sudo dnf install gtk4-devel libadwaita-devel
On Debian / Ubuntu:
sudo apt install libgtk-4-dev libadwaita-1-dev
Build & Install
Quick Installation (Recommended)
Backview comes with a simple, robust install.sh script to build and integrate the application into your Linux desktop environment.
By default, it performs a local user-space installation under ~/.local (requiring no root/sudo privileges). It compiles both CLI and GUI binaries, registers the application in your desktop launchers (dev.lemoonstar.Backview.desktop), and installs the custom high-res and symbolic SVG icons:
# Clone the repository
git clone https://github.com/LeMoonStar/backview
cd backview
# Run the installer (compiles in release mode and integrates desktop assets)
./install.sh
Installation Options
-
System-wide Installation (installs to
/usr/local, requires root):sudo ./install.sh --system -
Direct Run (Without Installing):
cargo run -p backview-gui # Launch Desktop GUI cargo run -p backview-cli -- --help # Run CLI helper -
Uninstallation: To cleanly remove all compiled binaries, desktop entries, and icon assets:
./install.sh --uninstall # For default user-space installs sudo ./install.sh --system --uninstall # For system-wide installs
Configuration
Config is stored at ~/.config/backview/config.toml and is created with sensible defaults on first run.
[git]
# Direct paths or glob patterns — all matching .git directories are discovered
repos = [
"/home/user/projects/*",
"/home/user/work/special-repo",
]
# Filter commits by author email. Leave empty to include all authors.
author_emails = ["you@example.com"]
[gitlab]
url = "https://gitlab.com"
token = "glpat-xxxxxxxxxxxxxxxxxxxx"
username = "your-username"
[notes]
# Directory containing your daily markdown notes
notes_dir = "/home/user/notes"
[ai]
base_url = "http://localhost:11434/v1"
model_name = "llama3"
api_key = "" # Optional, for authenticated endpoints
prompt_style = "professional" # professional | concise | creative | detailed
The GUI preferences panel lets you edit all of these settings without touching the file.
Notes Format
Backview reads daily markdown note files from the configured notes_dir. Two formats are supported:
Per-day files (YYYY-MM-DD.md)
# 2026-05-20
- 2h: Implemented new authentication flow
- 1h 30m: Code review and PR comments
- 45m Fixed flaky CI pipeline
- Checked emails
Single global file (notes.md) with date headings
## 2026-05-20
- 2h: Implemented new authentication flow
- 1h 30m: Code review and PR comments
## 2026-05-19
- 3h: Wrote unit tests
Duration formats
| Format | Parsed as |
|---|---|
2h |
120 minutes |
1.5h |
90 minutes |
45m |
45 minutes |
1h 30m |
90 minutes |
30min |
30 minutes |
| (no duration) | unknown |
Lines starting with # (headings) are ignored. Bullet points (-, *, +) and markdown checkboxes (- [ ], - [x]) are all supported.
CLI Usage
# Sync all sources for today
cargo run -p backview-cli -- sync
# Sync for a specific date
cargo run -p backview-cli -- sync --date 2026-05-19
# List stored activities
cargo run -p backview-cli -- list
cargo run -p backview-cli -- list --date 2026-05-19
# Generate an AI summary (requires AI configured)
cargo run -p backview-cli -- summarize
cargo run -p backview-cli -- summarize --force # Re-generate even if cached
AI Summarisation
AI summarisation is entirely optional. When triggered, raw activity logs are sent to your configured OpenAI-compatible endpoint. The model is asked to return a structured JSON response with:
- A list of high-level tasks with estimated time spent
- Bullet-point details for each task
- Which sources contributed (git, gitlab, notes)
- An overall written summary of the day
The result is cached in the local SQLite database. Subsequent calls to summarize for the same day return the cached result unless --force is passed.
Any OpenAI-compatible server works: Ollama, LM Studio, OpenWebUI, vLLM, and others.
Note: Local model inference can be slow. Backview uses a 5-minute request timeout to accommodate this.
Data Storage
| Path | Contents |
|---|---|
~/.config/backview/config.toml |
Application configuration |
~/.local/share/backview/backview.db |
Activities and AI summaries (SQLite) |
No data is sent anywhere except to your configured AI endpoint when you explicitly request a summary.