Personal OS — designed to make everything feel in-place.
slowlife is a desktop-first journaling, todos, scheduling, and financial tracking app built with a brutalist, terminal-inspired aesthetic. It prioritizes signal over noise: no vanity metrics, no bloat — just the information you need to stay grounded.
- Signal, not noise — useful metrics over generic totals
- Offline-first — your data lives on your machine, always available
- Typography-first — monospace, dense, no decoration for decoration's sake
- Structured, not scattered — hierarchical spaces instead of flat tags
- Dual spaces: Casual and Work
- Hierarchy: Space > Category > Project
- Mood tracking: per-entry snapshots
- Writing prompts: tailored by space
- Tags: scoped to each space
- Signal cards: streaks, mood, net worth, burn, todos
- Activity heatmap: 20-week view
- Pinned journals: recent activity at a glance
- Mood trend: 7-day view
- Upcoming items: events, renewals, focus todos
- Inattentive rate: daily/weekly inattentive behavior tracking with ratio visualization
- Coverage: meetings, agendas, and holidays
- Grouping: by date with type badges
- List view: upcoming-first
- Google Calendar sync: one-way, read-only
- Synced events: link back to Google Calendar
- Priority: P0 to P4
- Complexity: C0 to C4
- Workflow: open, in progress, done, cancelled
- Assignment: space, category, or project
- Due dates: with overdue detection
- Views: group, filter, and sort
- Focus rate: inattentive task detection (auto + manual flag) with R = i/(a+i) metric
- Accounts: ledger-based balances from initial balance + transactions
- Adjustments: reconcile account balance with automatic diff transactions
- Transactions: income, expenses, categories, and account filters
- Budgeting: monthly category budgets with over-budget signals
- Reports: income vs expense trend and net worth history
- Subscriptions: active/cancelled tracking, grouped by billing cycle
- Currency: base-currency totals with manual local exchange rates (IDR, USD, SGD, CNY)
- Scoped bookmarks: save URLs to a space, category, or project
- Tags: filter assets by tag within focus mode
- Open tracking: records last-opened timestamp per asset
- Dashboard card: recent assets sorted by last interaction
- Focus mode panel: assets panel alongside journal, todos, and events
- Context-locked view: pick a category or project and hide everything else
- All-in-one panel: journal editor, todos, events, and assets for the chosen context
- Persistent target: last-used focus context is remembered across sessions
- Sidebar-free: sidebar and FAB are hidden; exit via Esc or the exit button
- Platforms: macOS and Linux (X11 and Wayland)
- Runtime: native app via Tauri
- Database: local SQLite
- Command palette: Ctrl+K for global search and navigation
- Shortcuts: navigation, quick capture (Ctrl+N), focus mode (Ctrl+0), sidebar toggle (Ctrl+S)
- Sidebar toggle: collapsible on desktop, overlay on mobile
- System tray: closing the window hides it to the tray; the tray menu reopens it, triggers quick capture, or quits
See ROADMAP.md for the full roadmap. Key upcoming milestones:
- Global quick capture (system-wide shortcut)
- Calendar views and event CRUD
- Calendar sync (Google Calendar, read-only)
- Todos with priority/complexity scoring
- Financial CRUD, reporting, and multi-currency tracking
- Full-text search and command palette (Ctrl+K)
- Scoped asset bookmarks with tag filtering and open tracking
- cr-sqlite for cross-device sync
- Mobile support via Tauri v2
| Layer | Choice |
|---|---|
| Shell | Tauri v2 |
| Frontend | Vue 3 + TypeScript + Vite |
| Data | SQLite via tauri-plugin-sql |
| Styling | Custom CSS with design tokens |
| Routing | Vue Router 4 |
- Node.js >= 18
- pnpm
- Rust 1.98.1 via rustup
- Tauri v2 system dependencies — see Tauri prerequisites
Debian / Ubuntu:
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev libsoup-3.0-dev \
libgtk-3-dev libglib2.0-dev libayatana-appindicator3-dev librsvg2-dev \
libxdo-dev libssl-dev build-essential curl wget file xdg-utilsFedora:
sudo dnf install webkit2gtk4.1-devel javascriptcoregtk4.1-devel libsoup3-devel \
gtk3-devel libappindicator-gtk3-devel librsvg2-devel libxdo-devel openssl-devel \
xdg-utils @development-toolsArch:
sudo pacman -S webkit2gtk-4.1 libsoup3 gtk3 libayatana-appindicator librsvg \
xdotool openssl base-devel xdg-utilslibayatana-appindicator (or its equivalent) is what backs the system tray, and
xdg-utils is required to bundle an AppImage.
git clone https://github.com/addeeandra/slowlife.git
cd slowlife-app
pnpm installpnpm tauri:devDev and production are intentionally isolated:
- dev app identifier:
com.addeeandra.slowlife.dev - prod app identifier:
com.addeeandra.slowlife - dev database:
slowlife-dev.db - prod database:
slowlife.db
pnpm tauri buildpnpm tauri build produces bundles for the host platform:
| Platform | Output |
|---|---|
| macOS | .app, .dmg |
| Linux | .deb, .rpm, .AppImage |
Bundles land in src-tauri/target/release/bundle/. Limit the formats with
--bundles, for example pnpm tauri build --bundles deb.
Keep pnpm-lock.yaml and src-tauri/Cargo.lock together when updating
dependencies. Tauri checks that its JavaScript API and Rust crate use matching
major/minor versions; the SQL plugin must also match across both sides.
- System tray: GNOME does not show tray icons out of the box — install the AppIndicator extension. Most other desktops (KDE, XFCE, Cinnamon) work without extra setup.
- Global shortcuts: quick capture (
Alt+Shift+C) andCtrl+Shift+Jare grabbed through X11. If another application already owns a combination, or the session is Wayland-native without XWayland, that shortcut is skipped with a warning on stderr and the rest of the app runs normally. - Data location: the SQLite database lives under
~/.config/com.addeeandra.slowlife/(com.addeeandra.slowlife.devfor dev builds).
See CONTRIBUTING.md for guidelines.
Slowlife is open-sourced software licensed under the MIT license.
