No description
  • Rust 56%
  • JavaScript 33.2%
  • CSS 7.8%
  • HTML 2.7%
  • PLpgSQL 0.2%
Find a file
Alex 74fe556d46 Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes
Authentication (login page is now a method chooser — fields hidden by default):
- Pocket ID (OIDC) sign-in, link-only: discovery + auth-code + PKCE + nonce +
  userinfo; link from Settings → Sign-in, then "Sign in with Pocket ID".
  oidc.rs, oidc_identities table (0014), gated on ALWYMAIL_POCKETID_*.
- Passkeys (WebAuthn) via webauthn-rs: enroll-after-login, discoverable
  (usernameless) sign-in; resident key forced client-side; auto-named from the
  authenticator AAGUID (Bitwarden/1Password/iCloud/…) with inline rename.
  passkey.rs, webauthn_credentials table (0015), gated on ALWYMAIL_RP_ID/_ORIGIN.

Reader:
- Prev/next message navigation following the current mailbox+filter: ‹ › buttons
  and ←/→ keys on desktop; on mobile a drag gesture with a live edge arrow.

Resilience / notifications:
- Inbox no longer collapses to the empty state on a transient background-refresh
  failure (keeps the list, self-heals with a retry).
- One self-updating "N new messages" summary card; account auth-expiry reminders
  + a persistent in-app reconnect banner; targeted per-message dismissal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PeDupzo8eFkSDEh6J7cgs2
2026-08-17 21:46:52 +02:00
crates Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes 2026-08-17 21:46:52 +02:00
migrations Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes 2026-08-17 21:46:52 +02:00
.env.example Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes 2026-08-17 21:46:52 +02:00
.gitignore Initial commit: project vision + ARCHITECTURE.md 2026-06-08 00:23:19 +02:00
ARCHITECTURE.md Rename allmail → alwymail + Gmail/Outlook OAuth + unified add-mailbox form 2026-06-11 12:12:25 +02:00
Cargo.lock Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes 2026-08-17 21:46:52 +02:00
Cargo.toml Add passkey + Pocket ID sign-in, reader navigation, and resilience fixes 2026-08-17 21:46:52 +02:00
CLAUDE.md Rendering: match FairEmail's model (strip CSS, keep tables, scale wide) 2026-06-13 14:26:46 +02:00
docker-compose.yml Rename allmail → alwymail + Gmail/Outlook OAuth + unified add-mailbox form 2026-06-11 12:12:25 +02:00
justfile Rename allmail → alwymail + Gmail/Outlook OAuth + unified add-mailbox form 2026-06-11 12:12:25 +02:00
README.md Rename allmail → alwymail + Gmail/Outlook OAuth + unified add-mailbox form 2026-06-11 12:12:25 +02:00
rust-toolchain.toml Scaffold workspace: api healthcheck, core types, dev infra 2026-06-08 00:31:26 +02:00

alwymail

Self-hosted, web-first email client (FairEmail, but server-side). One account, many connected mailboxes (Stalwart, Gmail, Outlook, any IMAP), synced and stored, browsable per-account or as a unified inbox, with multiple send identities — including a default that replies from the address a mail was received on. Installable as a PWA.

Full Rust, optimized for speed, low memory, and security.

Status: bootstrapping. See ARCHITECTURE.md for the design and the open decisions. No feature code until the architecture is reviewed.

Planned stack

  • Backend: Rust / Tokio — axum, sqlx (Postgres), async-imap, lettre, mail-parser/mail-builder, oauth2, apalis (Redis), dryoc, argon2.
  • Frontend: Leptos (PWA).
  • Deploy: Docker Compose (api, sync-worker, postgres, redis).

Quick start

To be added once the workspace is scaffolded (MVP milestone 2).