Skip to content

MaximilianKaufmannCode/lotsman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧭 Лоцман

Реестр договоров, лицензий и сроков — который сам помнит о дедлайнах.

License: BSL 1.1 Python 3.12 React 19 PostgreSQL 16 self-hosted

Лоцман — главный экран: реестр документов с цветными маркерами сроков, фильтрами по колонкам и экспортом в Excel

🇬🇧 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» (и не облако)

Боль с 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 и ручных напоминаний, не отдавая данные в облако.

Быстрый старт (5 минут)

Нужны Docker 26+ (Compose v2), uv, pnpm.

git clone https://github.com/MaximilianKaufmannCode/lotsman.git
cd lotsman
cp .env.example .env      # заполните значения — всё описано внутри
make dev

make 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.

About

🧭 Лоцман — self-hosted реестр договоров, лицензий и сроков, который сам помнит о дедлайнах: напоминания по Email/Telegram/Dion и публикация сроков в календарь (общий Exchange + персональная ICS-подписка).

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors