gitaspen docs

Принципы разработки

Как мы строим всё. Коротко — чтобы пересказать своими словами; полно — чтобы закрывать споры. Это верхний слой; «как именно» — в спеках рядом: BMAP (приложение целиком), BMFP (фронт), BMBP (бэкенд), BMGP (шлюз), REUSE (переиспользование).

3 минуты

Как мы строим всё. Коротко — чтобы пересказать своими словами; полно — чтобы закрывать споры. Это верхний слой; «как именно» — в спеках рядом: BMAP (приложение целиком), BMFP (фронт), BMBP (бэкенд), BMGP (шлюз), REUSE (переиспользование).

Всё — самостоятельный кусок на контракте, у которого два равных пользователя — человек и ИИ: оба действуют одной логикой и видят одно и то же. Собираем из готового, держим локально под git, а часть отселяем в свой дом, когда переросла место. Открыто и честно.

Ничто не приколочено. Фича — это модуль на контракте: что-то принимает, что-то отдаёт. Не прибита туда, где родилась. Это даёт системе расти — добавлять функционал, менять и масштабировать части по отдельности; а заодно потом легко вынести и переиспользовать.

Один движок — много оболочек. Ядро не знает, где работает; привязка к хосту (ОС, сайт, киоск) — тонкая оболочка вокруг. Один движок разметки служит и браузеру, и оболочке операционной системы — меняется только оболочка, ядро остаётся тем же.

Два входа, один результат. Пользователей теперь двое — человек и ИИ. Одна поверхность, две двери: каждая способность сначала команда (эндпоинт), потом кнопка — кнопка, тест и ИИ зовут одну функцию, второй реализации нет. Внешний ИИ ходит через MCP-сервер внутри самого приложения.

ИИ видит рендер, не экран. ИИ-агенту дать то же, что видит человек, из самого приложения: состояние — структурой (state()), без скрейпинга DOM; картинку — приложение само рендерит свой DOM в изображение (html-to-image), поэтому видно даже скрытое / свёрнутое / перекрытое окно. Системный скриншот не годится — он видит только то, что на экране, и отдаёт пиксели без смысла. Приложение публикует состояние структурой (window.<app>.state()) и описывает эту поверхность отдельным документом в своём репозитории.

Контракт на границе. Стороны связаны формой данных, а не общим кодом. Любую сторону — модуль, бэк, фронт — меняешь, не трогая другую, пока контракт держится.

Не под один случай. Костыль — это когда кусок знает про своего конкретного хозяина. Знание о хозяине живёт в хозяине, а не внутри куска.

Перерос — отселяй. Корень — расширяемость: модульно строим сразу, а кусок получает свой дом (репо, пайплайн), когда перерос место — либо понадобился второму потребителю, либо вырос в самостоятельную часть со своим жизненным циклом. Не раньше (абстракция под воображаемое — костыль), но и не держим силой, когда уже перерос.

Бери готовое, смотри рядом. Зрелая либа и соседний проект — вперёд самопала. Переиспользуем не только код, но и решения.

Локально и под git с первого файла. Кода вне git нет, всё работает офлайн. Коммит — тоже модуль: цельный, сам по себе рабочий, не ломает прошлое.

Открыто и честно. Опенсорс без обмана. Сама вещь — бесплатна и открыта; платишь за масштаб — парк, удалённое управление. Защищает лицензия, а не закрытый код.

Инструкция не помогла?

Откройте исходник документа по ссылке «Предложить правку» — там же видно, что и когда в нём менялось.