Back to projects

// personal project

Personal

Journeyman

RustRatatuiIMAPGmail APIOAuth2SQLite

Journeyman is a terminal email client built in Rust for speed: a single native binary, a non-blocking UI, and a local SQLite cache so the thread list renders instantly on launch instead of waiting on the network. The interface is built on Ratatui and crossterm with vim-style keys, plus mouse click and scroll support.

Gmail accounts use OAuth2 against the Gmail REST API for native threads and labels; any other provider connects over IMAP with TLS, where conversations are rebuilt client-side from References/In-Reply-To headers with a subject fallback. Multiple accounts of either kind can be mixed and switched with Tab. Gmail auth requests only the read-only scope by default, with a separate one-time re-authorization to add the narrow send scope, and every secret — IMAP passwords and OAuth refresh tokens — lives in the OS keychain rather than a plaintext config.

Key Highlights

  • Single native Rust binary with a non-blocking terminal UI
  • Native Gmail backend (OAuth2 + REST API) alongside generic IMAP over TLS
  • Client-side conversation threading from References/In-Reply-To headers
  • Multiple accounts, mixing Gmail and IMAP, switchable with Tab
  • Local SQLite cache for instant rendering on launch
  • Minimal OAuth scopes, with secrets stored in the OS keychain