Skip to main content

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

Project: GoingsOn by max

Name Size
/ crates/
/ dist/
/ docs/
/ media/
/ migrations/
/ mockups/
/ scripts/
/ src-tauri/
· .gitignore 4.4 KB
· bento.toml 732 B
· Cargo.lock 198.9 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:

CratePathRole
goingson-corecrates/core/Domain models, repository traits, error types, business logic. No database dependency (optional sqlx feature for type derives).
goingson-db-sqlitecrates/db-sqlite/SQLite persistence via sqlx. Repository implementations, FTS5 full-text search, migrations.
goingson-desktopsrc-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.