Представлен открытый проект aeman для планирования работы инженерных команд

Разработчики облачной платформы 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

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев