max / goingson
git clone https://makenot.work/git/max/goingson.git
git clone git@ssh.makenot.work:max/goingson.git
git send-email --to goingson@patches.makenot.work
| Name | Size | |
|---|---|---|
| crates/ | ||
| dist/ | ||
| docs/ | ||
| media/ | ||
| migrations/ | ||
| mockups/ | ||
| scripts/ | ||
| src-tauri/ | ||
| .gitignore | 4.4 KB | |
| bento.toml | 732 B | |
| Cargo.lock | 199.0 KB | |
| Cargo.toml | 6.2 KB | |
| CHANGELOG.md | 4.2 KB | |
| CLA.md | 6.4 KB | |
| CONTRIBUTING.md | 13.2 KB | |
| LICENSE | 4.4 KB | |
| README.md | 5.5 KB | |
| rust-toolchain.toml | 86 B | |
| synckit.toml | 313 B |
README
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
# 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 two 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-desktop | src-tauri/ | Tauri 2 desktop shell. Commands (thin wrappers over library crates), native CSV/vCard/iCal import, frontend (vanilla HTML/CSS/JS), OAuth flows, email sync, SyncKit integration. |
Dependency flow: core is leaf -> db-sqlite depends on core -> src-tauri depends on both 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
- Import: native CSV/TSV import (entity type auto-detected), plus vCard and iCalendar
- Themes: built-in light and dark themes with system auto-detection (see
src-tauri/frontend/themes/helix/) - Keyboard shortcuts: a command palette, quick add, and tab order that works
- Platforms: macOS (primary), Windows, Linux; iOS in development
Verifying a release
Every Linux release artifact (.AppImage, .deb) is published with a detached
minisign signature beside it, named
<artifact>.minisig. Updates that arrive through the in-app updater are checked
automatically against a separate key; this covers the manual download path,
which nothing checks for you.
Download both files, then:
minisign -Vm goingson_<version>_<arch>.AppImage -p makecreative.pub
The public key is dist/makecreative.pub in this repository:
untrusted comment: Make Creative, LLC release key (minisign)
RWSMMbsBuZY5GfFRHPd19bZAVcyFAI4zsUlPjC5RaS/5tL7zT45SpjD9
You can also pass it inline instead of saving the file:
minisign -Vm goingson_<version>_<arch>.AppImage -P 'RWSMMbsBuZY5GfFRHPd19bZAVcyFAI4zsUlPjC5RaS/5tL7zT45SpjD9'
Expect Signature and comment signature verified. Any other result means the
file is not what we published. Do not run it.
Contributing
This project is licensed under PolyForm Noncommercial 1.0.0. Make Creative, LLC owns the codebase and needs to hold clear title to all of it, so contributions work a little differently here than on a permissively licensed project.
Found a bug, or something small and obviously wrong? Open a bug report rather than sending a patch. A clear report of what you did, what happened, and what you expected is worth more to us than a diff, and it saves you the paperwork below.
Want to build something substantial? Write to info@makenot.work first. We are open to paying for contributions that matter, and we would rather agree on scope and terms before you spend your evenings on it than after.
Sending code directly? Any code you submit is covered by the Contributor License
Agreement in CLA.md, which assigns copyright in the contribution to Make Creative,
LLC. Read it before you send anything. Add these lines to your commit message to
record that you accept it:
Make-Creative-CLA: 1.0.0
Signed-off-by: Your Name <your@email>
We may decline a contribution for any reason, including that it is not something we want to maintain.
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.