| 1 |
# GoingsOn |
| 2 |
|
| 3 |
A desktop productivity app -- tasks, email, calendar, contacts, and project management in one place. Built with Tauri 2, Rust, and vanilla JS. |
| 4 |
|
| 5 |
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. |
| 6 |
|
| 7 |
Published by Make Creative, LLC. Contact: info@makenot.work. Privacy policy: `docs/privacy-policy.md`. |
| 8 |
|
| 9 |
## Your data |
| 10 |
|
| 11 |
- **Export** -- JSON (full), CSV (tasks), ICS (calendar events). |
| 12 |
- **Backup and restore** -- full snapshots restorable into a fresh install. |
| 13 |
- **Storage** -- SQLite on disk; you can copy or back up the file directly. |
| 14 |
- **Updates** -- checked on launch; install is user-initiated, never forced. |
| 15 |
|
| 16 |
## Prerequisites |
| 17 |
|
| 18 |
- **Rust** (stable toolchain, 2024 edition) |
| 19 |
- **Tauri 2 CLI** (`cargo install tauri-cli --version '^2'`) |
| 20 |
- **Linux only:** system dependencies for WebKitGTK |
| 21 |
``` |
| 22 |
# Debian/Ubuntu |
| 23 |
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \ |
| 24 |
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev |
| 25 |
|
| 26 |
# Arch |
| 27 |
sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \ |
| 28 |
appmenu-gtk-module libappindicator-gtk3 librsvg2-dev |
| 29 |
``` |
| 30 |
- **macOS / Windows:** no extra system dependencies beyond Rust and the Tauri CLI. |
| 31 |
|
| 32 |
## Build and Run |
| 33 |
|
| 34 |
```sh |
| 35 |
# Development (hot-reload frontend, debug backend) |
| 36 |
cargo tauri dev |
| 37 |
|
| 38 |
# Production build (macOS DMG, Windows installer, Linux AppImage) |
| 39 |
cargo tauri build |
| 40 |
|
| 41 |
# Run all workspace tests |
| 42 |
cargo test --workspace |
| 43 |
``` |
| 44 |
|
| 45 |
## Workspace Architecture |
| 46 |
|
| 47 |
The project is a Cargo workspace with three library crates and one application crate: |
| 48 |
|
| 49 |
|
| 50 |
|
| 51 |
| `goingson-core` | `crates/core/` | Domain models, repository traits, error types, business logic. No database dependency (optional sqlx feature for type derives). | |
| 52 |
| `goingson-db-sqlite` | `crates/db-sqlite/` | SQLite persistence via sqlx. Repository implementations, FTS5 full-text search, migrations. | |
| 53 |
| `goingson-plugin-runtime` | `crates/plugin-runtime/` | Rhai scripting engine for import plugins (CSV, custom formats). File watching for hot-reload. | |
| 54 |
| `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. | |
| 55 |
|
| 56 |
Dependency flow: `core` is leaf -> `db-sqlite` and `plugin-runtime` depend on `core` -> `src-tauri` depends on all three plus `synckit-client`. |
| 57 |
|
| 58 |
## Features |
| 59 |
|
| 60 |
- **Tasks** -- urgency scoring, recurrence, snooze, subtasks, day planning (time blocking), weekly review |
| 61 |
- **Email** -- IMAP/SMTP and Fastmail JMAP, OAuth (Google, Microsoft, Fastmail), threaded display, compose/reply |
| 62 |
- **Calendar** -- events with recurrence, project/contact linking, timeline view |
| 63 |
- **Contacts** -- multi-field (emails, phones, social handles), tags, search |
| 64 |
- **Projects** -- per-project dashboards (tasks + events + emails), milestones |
| 65 |
- **Search** -- FTS5 full-text search across all entity types |
| 66 |
- **Cloud sync** -- SyncKit integration with E2E encryption |
| 67 |
- **Plugins** -- Rhai scripting for CSV/data import |
| 68 |
- **Themes** -- built-in light and dark themes with system auto-detection (see `src-tauri/frontend/themes/helix/`) |
| 69 |
- **Keyboard shortcuts** -- vim-style navigation throughout |
| 70 |
- **Platforms** -- macOS (primary), Windows, Linux; iOS in development |
| 71 |
|
| 72 |
## License |
| 73 |
|
| 74 |
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. |
| 75 |
|