Personal project · Full-stack · macOS
Letter Box
Self-hosted почтовый клиент для macOS: несколько аккаунтов, фоновая синхронизация и локальные AI-теги без облачных LLM.
01
О проекте
Letter Box собирает Mail.ru, Яндекс и Gmail в одном интерфейсе. Письма синхронизируются по IMAP, хранятся в PostgreSQL, а непрочитанные опционально размечаются локальной моделью через Ollama — без отправки содержимого внешним AI-сервисам.
Синхронизация и обработка живут на сервере: очередь BullMQ + Redis продолжает работать, даже когда desktop-приложение закрыто. Credentials шифруются на сервере, доступ — через JWT с ротацией refresh-токенов.
В UI — единый inbox, вкладки аккаунтов, фильтры по AI-тегам, дашборд с непрочитанными, спамом и динамикой, а также отправка, ответ и пересылка через SMTP.
02
Интерфейс
03
Что умеет
Несколько аккаунтов
Mail.ru, Яндекс и Gmail в одном окне: вкладки, единый inbox и фильтры по непрочитанным и AI-тегам.
Фоновая синхронизация
BullMQ + Redis обновляют папки на сервере, даже если desktop закрыт.
Полный почтовый цикл
Получение по IMAP, отправка/ответ/пересылка по SMTP, флаги, архив, перемещение и удаление.
Локальный AI
Ollama размечает непрочитанные письма локально — без облачных AI API.
Дашборд
Непрочитанные, важные, активность по дням, распределение по аккаунтам и тегам.
Self-hosted
PostgreSQL, Redis и worker поднимаются через Docker; данные остаются у вас.
04
Ключевые решения
Сервер владеет почтой
IMAP/SMTP и хранение вынесены из Electron в NestJS. Клиент не держит долгие соединения и не хранит пароли приложений локально.
Очередь вместо «синк в UI»
Фоновый worker обновляет папки и запускает AI-разметку независимо от жизни окна приложения.
Локальный AI по желанию
Ollama подключается опционально. Если модели нет, клиент остаётся полноценным почтовым клиентом без тегов.
Общие контракты
DTO и события вынесены в пакет `@letter-box/contracts`, чтобы desktop и server говорили на одном языке.
05
Архитектура
Electron + React ходит в NestJS по REST и Socket.IO. API пишет в PostgreSQL и ставит задачи в Redis/BullMQ; worker синхронизирует почту по IMAP/SMTP и при необходимости вызывает Ollama.
06






