Patrak: Daily Learning Tracker (Rust, GTK4)
Desktop app and CLI that tracks daily learning from video courses, books and git projects. It picks up progress from mpv, zathura and your commits automatically, with goals, streaks, habits and spaced-repetition review.
Visit projectTech stack
Overview
Role: Personal project · Period: Oct 2026
Patrak watches folders of video courses, books and git repositories. It reads watch progress from mpv through a small Lua script, reading position from zathura, and your own commits from each repository, then shows today's minutes, pages and commits against daily goals, a streak heatmap, weekly totals and what to watch or read next. It also tracks custom habits, course deadlines with an estimated finish date, and notes per lecture, and turns Q: and A: lines in those notes into review cards scheduled with spaced repetition. Everything is available from a GTK4 and libadwaita window and from the command line, and a systemd timer sends a reminder in the evening when the day's goals are not met.
Architecture
One Rust crate with a CLI (clap) and an optional GUI feature (gtk4-rs and libadwaita). State lives in a versioned SQLite schema: library items, daily progress, review cards, habits, projects and holidays. Files are matched by kind, size and modified time and repositories by their first commit, so moving or renaming keeps their progress.
Challenges
Counting progress without asking the user to log anything: mpv and zathura positions, chapters inside long lectures, commits that were later rebased or squashed (counted once, by author time), and streaks that respect holidays.
Outcomes
A tool I use every day: about 10,000 lines of Rust with 47 tests, a GTK4 window and a CLI.