
Разработчики облачной платформы Cozystack представили открытый проект под названием aeman. Это система для ежедневного планирования для инженерных команд, построенная поверх GitHub Projects v2. Инструмент развивает идею ежедневной доски. В инженер видит ровно те задачи, которыми занимается сегодня, а всё отложенное исчезает с доски до того дня, когда за эту задачу кто‑то возьмётся.
Исходный код проекта написан на языке Go (веб‑интерфейс на TypeScript/React) и опубликован на GitHub под лицензией Apache License 2.0.
По информации OpenNET, основные возможности aeman:
-
персональная доска дня (Me): задачи инженера из всех его команд на выбранный день, сгруппированные в четыре цветовые зоны — срочное («сделать сегодня кровь из носу»), обычная запланированная работа, незапланированное (прилетевшее в течение дня) и «делать, если всё остальное готово». У каждой карточки ползунок готовности 0–100%, стадия (Review / Locked / Recurrent / Done), счётчик возраста и автоматически распознаваемые ссылки на issue/PR; сбоку — панель заметок, живущих в контексте дня;
-
командная доска (Team): сетка «люди × зоны» на выбранный день с быстрым созданием и назначением задач; режим «View as» позволяет лидеру команды посмотреть на доску глазами конкретного инженера;
-
однодневные спринты, считаемые вперёд: операция «carry‑over» одним действием переносит незавершённые задачи в новый день, завершённые остаются в истории, регулярные задачи пересоздаются автоматически. Кнопки «+1 день» и «+1 неделя» откладывают задачу, скрывая её с доски до нужной даты;
-
недельный план команды с полосами «к среде» и «к пятнице», перетаскиванием задач плана на исполнителей и общим прогресс‑баром недели;
-
механика рецензирования (связанная карточка у рецензирующего с автоматическим освобождением оригинала по завершении), подзадачи с наследуемым прогрессом родителя и учёт незапланированной работы отдельной зоной;
-
журнал действий по каждой карточке: перемещения, изменения прогресса, смены спринтов — пригоден для аудита и построения статистики.
Отличительная особенность архитектуры aeman — это полное отсутствие собственной базы данных: единственным хранилищем выступает GitHub Projects v2. Каждая карточка aeman — это элемент item на доске GitHub, все атрибуты (зона, прогресс, спринт, план) — обычные поля проекта, которые aeman при необходимости создаёт автоматически. Ту же доску можно открыть в штатном интерфейсе GitHub, а отказаться от инструмента можно в любой момент — данные остаются у пользователя и не требуют миграции. Заметки и журнал также хранятся в GitHub: у draft‑карточек — в теле карточки за специальным маркером, у карточек, привязанных к issue или PR, — обычными комментариями, а служебные события собираются в один пополняемый лог‑комментарий, чтобы не засыпать подписчиков уведомлениями.
Проект aeman поставляется одним исполняемым файлом со встроенным через go:embed веб‑интерфейсом, JSON REST API, WebSocket‑потоком обновлений и MCP‑сервером. API построен по образцу Kubernetes: сущности оформлены ресурсами с kind/metadata/spec (Card, Sprint, Ordering, Presence), клиент работает по схеме «list + watch» с событиями ADDED/MODIFIED/DELETED — каждая открытая вкладка действует как informer с локальным кэшем, и правки коллег появляются на всех экранах примерно за секунду.
Для обхода медленных GraphQL‑мутаций GitHub и отстающих от записи реплик чтения-запись в aeman организована по схеме «write‑behind»: изменения мгновенно применяются к серверному кэшу и рассылаются клиентам, а в GitHub отправляются фоновой очередью с ограничением темпа, повторами и объединением последовательных изменений по аналогии с DeltaFIFO в Kubernetes (несколько правок одного поля сливаются в один запрос с итоговым значением, текст заметок при этом не теряется). Недавние собственные записи временно считаются достовернее свежих чтений из GitHub, что исключает видимые «откаты» интерфейса при отставании реплик; источником истины при конфликтах остаётся GitHub.
Встроенный MCP‑сервер в aeman позволяет AI‑агентам (например, Claude) участвовать в процессе наравне с людьми: создавать и перемещать карточки, вести заметки и проводить «carry‑over». Отдельного API для агентов нет — их действия проходят через тот же доменный слой с теми же проверками. Хранилище скрыто за интерфейсом Backend: заявлены планы по git‑бэкенду с хранением карточек файлами в репозитории, а движок доски можно встраивать в собственные инструменты как Go‑библиотеку.
Для локального запуска aeman достаточно аутентифицированного GitHub CLI. Проект aeman открывает интерфейс на 127.0.0.1:8765 и работает с любым проектом GitHub Projects v2, создавая недостающие поля автоматически. Для командной работы предусмотрен многопользовательский режим со входом через GitHub OAuth (готовый docker‑compose в комплекте) и Helm‑чарт для развёртывания в Kubernetes.

Источник: habr.com