# GoingsOn A desktop productivity app -- tasks, email, calendar, contacts, and project management in one place. Built with Tauri 2, Rust, and vanilla JS. Local-first. Your data lives in a SQLite database on your own machine. No telemetry, no analytics, no remote logging. Cloud sync is optional and end-to-end encrypted. Published by Make Creative, LLC. Contact: info@makenot.work. Privacy policy: `docs/privacy-policy.md`. ## Your data - **Export** -- JSON (full), CSV (tasks), ICS (calendar events). - **Backup and restore** -- full snapshots restorable into a fresh install. - **Storage** -- SQLite on disk; you can copy or back up the file directly. - **Updates** -- checked on launch; install is user-initiated, never forced. ## Prerequisites - **Rust** (stable toolchain, 2024 edition) - **Tauri 2 CLI** (`cargo install tauri-cli --version '^2'`) - **Linux only:** system dependencies for WebKitGTK ``` # Debian/Ubuntu sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \ libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev # Arch sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \ appmenu-gtk-module libappindicator-gtk3 librsvg2-dev ``` - **macOS / Windows:** no extra system dependencies beyond Rust and the Tauri CLI. ## Build and Run ```sh # Development (hot-reload frontend, debug backend) cargo tauri dev # Production build (macOS DMG, Windows installer, Linux AppImage) cargo tauri build # Run all workspace tests cargo test --workspace ``` ## Workspace Architecture The project is a Cargo workspace with three library crates and one application crate: | Crate | Path | Role | |-------|------|------| | `goingson-core` | `crates/core/` | Domain models, repository traits, error types, business logic. No database dependency (optional sqlx feature for type derives). | | `goingson-db-sqlite` | `crates/db-sqlite/` | SQLite persistence via sqlx. Repository implementations, FTS5 full-text search, migrations. | | `goingson-plugin-runtime` | `crates/plugin-runtime/` | Rhai scripting engine for import plugins (CSV, custom formats). File watching for hot-reload. | | `goingson-desktop` | `src-tauri/` | Tauri 2 desktop shell. Commands (thin wrappers over library crates), frontend (vanilla HTML/CSS/JS), OAuth flows, email sync, SyncKit integration. | Dependency flow: `core` is leaf -> `db-sqlite` and `plugin-runtime` depend on `core` -> `src-tauri` depends on all three plus `synckit-client`. ## Features - **Tasks** -- urgency scoring, recurrence, snooze, subtasks, day planning (time blocking), weekly review - **Email** -- IMAP/SMTP and Fastmail JMAP, OAuth (Google, Microsoft, Fastmail), threaded display, compose/reply - **Calendar** -- events with recurrence, project/contact linking, timeline view - **Contacts** -- multi-field (emails, phones, social handles), tags, search - **Projects** -- per-project dashboards (tasks + events + emails), milestones - **Search** -- FTS5 full-text search across all entity types - **Cloud sync** -- SyncKit integration with E2E encryption - **Plugins** -- Rhai scripting for CSV/data import - **Themes** -- built-in light and dark themes with system auto-detection (see `src-tauri/frontend/themes/helix/`) - **Keyboard shortcuts** -- vim-style navigation throughout - **Platforms** -- macOS (primary), Windows, Linux; iOS in development ## License PolyForm Noncommercial 1.0.0. Personal, research, and non-commercial use are free. For commercial use, contact `info@makenot.work` to discuss a commercial license.