🇬🇧 English (TL;DR). Лоцман ("Lotsman") is a self-hosted registry for partner-company documents (contracts, licenses, audit reports) that tracks renewal deadlines and reminds the right people automatically — via Email, Telegram, and Dion, and by publishing every deadline straight into calendars: a shared Microsoft Exchange/Outlook calendar and a personal iCalendar (ICS) subscription that works with any calendar app. It replaces a fragile shared Excel file with a multi-user, fully audited, MFA-protected app that runs entirely on your own server. The UI and user guide are in Russian. It is source-available under the Business Source License 1.1 — each release converts to MPL-2.0 four years after it ships.
Реестр договоров и лицензий обычно живёт в Excel — и это больно: о сроках вспоминают, когда уже просрочено; файл одновременно правят несколько человек и теряют версии; кто что менял — непонятно; данные расползаются по почте.
Лоцман убирает эту боль. Он хранит документы по компаниям, сам напоминает ответственным о приближении сроков — за N дней, в день срока и повторно при просрочке, — фиксирует каждое изменение и работает на вашем сервере. Источник правды — база данных, а не файл.
| Боль с Excel-реестром | Как в Лоцмане |
|---|---|
| О сроках вспоминают постфактум | Автонапоминания: Email · Telegram · Dion |
| Дедлайнов не видно в рабочем календаре | Сроки сами попадают в календарь: общий Exchange + персональная ICS-подписка (Outlook · Google · Apple) |
| «Кто это поменял и когда?» | Полный аудит: кто, когда, было → стало |
| Версии файла, конфликты правок | Многопользовательская БД — один источник правды |
| Нет разграничения доступа | Роли: Администратор · Редактор · Читатель + обязательный 2FA |
| Данные в чужом облаке | Self-hosted: данные не покидают ваш контур |
- 📋 Привычно, как Excel. Виртуализированная таблица: закреплённые шапки, цветные маркеры сроков (🟢 ок · 🟠 скоро · 🔴 просрочено), правка по двойному клику, быстрый поиск. Учиться нечему.
- ⏰ Сам следит за сроками. Напоминания pre-notice / в день / повтор при просрочке, настраиваются на тип документа; уходят ответственным и подписчикам.
- 📨 Доставка туда, где люди. Письма приходят брендированным HTML — с цветом срочности, прямой кнопкой «Открыть документ» и человеческими датами; каналы: Email (SMTP/EWS), Telegram, Dion.
- 📅 Сроки прямо в календаре. Дедлайны публикуются в общий календарь Microsoft Exchange (события встают рядом со встречами, срабатывают штатные напоминания Outlook) — или раздаются персональной ICS-ссылкой: её можно подписать в любом календаре (Outlook · Google · Apple), лента обновляется сама и работает, даже если Exchange недоступен.
- 🔐 Безопасность по умолчанию. argon2id, обязательный TOTP (2FA) для всех ролей, короткоживущие токены, RBAC.
- 🧾 Ничего не теряется. Append-only журнал аудита — каждое изменение зафиксировано.
- 📤 Экспорт в .xlsx. Выгрузка текущего (отфильтрованного) вида одним кликом.
- ➕ Быстрый ввод без отвлечения. Компании и типы документов можно завести прямо из формы добавления документа — без ухода со страницы и потери заполненного.
- 🔠 Под себя. Размер шрифта интерфейса настраивается в профиле (4 пресета, совместимо с зумом браузера).
Небольшим командам (≈2–10 человек) — юристам, комплаенсу, АХО, закупкам — которые ведут реестр договоров / лицензий / аудиторских отчётов по компаниям и хотят уйти от Excel и ручных напоминаний, не отдавая данные в облако.
Нужны Docker 26+ (Compose v2), uv, pnpm.
git clone https://github.com/MaximilianKaufmannCode/lotsman.git
cd lotsman
cp .env.example .env # заполните значения — всё описано внутри
make devmake dev соберёт образы, поднимет контейнеры, применит миграции и зальёт демо-данные. Затем откройте:
| URL | Что |
|---|---|
| http://localhost:5173 | Веб-интерфейс |
| http://localhost:8000 | API (web-bff) |
| http://localhost:8025 | Mailpit — ловит всю почту в dev |
Прод-развёртывание (Nginx + TLS, генерация секретов) — docs/deployment/.
Четыре доменных сервиса на FastAPI (auth · registry · notification · audit) + шлюз web-bff, SPA на React 19, PostgreSQL и Redis — всё в Docker Compose, on-premise. Чистая архитектура внутри каждого сервиса, звёздная топология через BFF, транзакционный outbox → Redis Streams → аудит. (В dev-окружении есть ещё привилегированный сайдкар system-control для операций обслуживания — в проде он отсутствует.)
Подробнее: docs/architecture/ · ADR.
Python 3.12 · FastAPI · SQLAlchemy 2 (async) · PostgreSQL 16 · Redis 7 · ARQ · React 19 · TypeScript · Vite · TanStack · Tailwind · shadcn/ui.
| 🚀 Развёртывание | docs/deployment/ |
| 🏗 Архитектура · ADR | docs/architecture/ · docs/adr/ |
| 🔌 API | docs/api/ |
| 🗄 База данных | docs/db/ |
| 📖 Руководство пользователя | docs/user-guide/ |
| 🔒 Безопасность | SECURITY.md |
| 🤝 Участие | CONTRIBUTING.md |
| 📝 История изменений | CHANGELOG.md |
Self-hosted: данные и секреты остаются в вашем контуре. Обязательный TOTP для всех ролей, argon2id, RBAC, единая точка проверки доступа (web-bff), append-only аудит. О найденных уязвимостях сообщайте приватно — см. SECURITY.md.
PR и issue приветствуются — см. CONTRIBUTING.md и Code of Conduct.
Лоцман распространяется под Business Source License 1.1 (BUSL-1.1) — лицензией source-available. Использование, включая внутреннее в организации, разрешено; предоставление Лоцмана третьим лицам как конкурирующего сервиса или продукта не допускается до наступления Change Date, по которой каждая версия переходит под MPL 2.0. Полное изложение условий — LICENSING.md.

