5ebda521d6894794037cee7b3b85d3a58fe8d3f0
IMAP/SMTP email client with offline-first architecture: sync engine writes to Drift (SQLite), UI reads reactively from the local DB. enough_mail vendored under packages/. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SharedInbox 
IMAP/SMTP email client written in Flutter.
Targets Android, iOS, and Desktop (Linux, macOS, Windows).
Supports multiple accounts — each synced independently via IMAP IDLE.
Design philosophy: offline-first
IMAP/SMTP server
↓
AccountSyncManager ←→ Drift (SQLite, local DB)
↓
UI (reads only from DB)
The UI never touches the network. The sync engine runs in the background and writes to a local Drift database. Screens observe reactive streams from that DB.
Key packages
| Package | Role |
|---|---|
enough_mail (vendored in packages/) |
IMAP / SMTP / MIME |
drift |
Local SQLite ORM |
flutter_riverpod |
State management / DI |
go_router |
Navigation |
Building
# Install dependencies and run code generation
dart pub get
dart run build_runner build --delete-conflicting-outputs
# Run on desktop
flutter run -d linux # or macos / windows
# Run on Android / iOS
flutter run
Vendored enough_mail
packages/enough_mail/ is a local copy of enough_mail so it can be modified if needed. It is referenced via a path: dependency in pubspec.yaml.
Description
SharedInbox: a Mail User Agent supporting IMAP and JMAP
https://sharedinbox.de/
8.9 MiB
Languages
Dart
77.1%
HTML
13.4%
Go
2.7%
Shell
2.3%
Python
2.1%
Other
2.3%