Друзья, сегодня отличный день, чтобы сделать свою первую статью на Хабре, который я читаю многие годы. Сегодня я успешно запустил в прод свой первый полноценный хобби (пет) проект.

Два года назад работая с замечательной командой консультантов института Адизеса, мы столкнулись с проблемой наличия бесплатного гибкого софта для построения орг.моделей. Быстро собрать подразделения и функции, перетащить ветки в новое место, покрасить и так что бы не рисовать линии и квадратики, а только сосредоточиться на самой модели, потому что все это происходит во время страт. сессии, где сидят руководители тех самых подразделений. А подразделений и веток много, сценариев много – кого-то временно скрыть или свернуть, кого-то скопировать как типовую функцию в другие ветки. Все делать нужно быстро и на большом экране и не всегда в логике HR штатной модели (а точнее всегда не в ней). Миро, Фигма и прочие конструкторы не подходят по той или иной причине.

Так у меня родилась идея приложения ORGFORMAT. Но только спустя два года я нашел время, чтобы ее реализовать.

Но мало сделать приложение, не менее важным было сделать легкий обмен сформированными моделями, возможность их просмотра и доработки участниками. А еще лучше часть рутины по низшим ветвям отдать ИИ на проверку или доработку. Так родилась еще одна идея – создать формат моделей, который говорит и на языке программы (data-to-diagram), и на языке человека, и на языке ИИ, и не зашит никакими лицензиями и нечитаемым кодом. То есть открытый формат. Было важно, чтобы формат работал с иерархическими моделями и не позволял никакие кросс-связи буквально, что бы пользователи не творили хаос между ветвями. Только прямая естественная потоковая иерархия и прямая ответственность. Но и признаки блокам нужны, так как не все способна отразить иерархия - так пришла идея тегов, как гибкая система реквизитов (а во многом и, по сути, мини база данных, при необходимости. Лайфхак!). Так же очень хотелось, что бы модель не только строила связи, но и по ним могла что-то посчитать - конечно же нужна универсальная ценность (value), но не ограничивать ее только одним типом, а дать свободно выбирать, что считать и в каких единицах схмерения – бюджет, время, единицы товара или количество населения страны. И это тоже нам надо! Для всего это отлично подошел хорошо известный ИТ-ишникам формат YAML, который для людей открыт, как текст, а для машины, по сути, четкая структура данных. Вот и отлично, я собрал на его базе прототип структуры и необходимых атрибутов. И дал короткое название .orgf. Сгенерировал несколько моделей через ИИ и дал проверить результат другой ИИ – результат великолепный. ИИ легко переводила любые данные в этот формат, хоть штатное расписание из Екселя, хоть выгруженные в PDF структуры функций и процессов. Прототип открытого формата ORGF себя полностью оправдал! Так получилось, что модели и формат появились раньше самого редактора моделей (приложения). Ну что же есть понятный запрос, теперь надо было сделать под него софт!

reference:
  format: "ORGF 1.0.0"
  syntax: "YAML|UTF-8 without BOM"

  sections_fixed:
    orgformat: "string|required"
    reference: "section|optional"
    meta: "section|required"
    model: "section|optional"
    root: "block|required"
    hierarchy: "root.children[*].children[*]..."

  meta:
    title: "string|max250|optional"
    author: "string|max250|optional"
    rights_holder: "string|max250|optional"
    copyright: "string|max500|optional"
    license: "string|max120|optional"
    created: "string|optional|YYYY-MM-DD/ISO 8601"
    updated: "string|optional|YYYY-MM-DD/ISO 8601"
    status: "draft/final/archived|optional"

  model:
    name: "string|max250|optional"
    desc: "string|max1000|optional"
    value_label: "string|max80|optional|one_value_type_per_model"
    value_unit: "string|max40|optional|one_value_unit_per_model"

  block:
    name: "string|max250|optional|empty_allowed"
    desc: "string|max500|optional"
    value: "number|optional|own_value_only"
    pic: "section|optional"
    pic.set: "emoji/lucide/feather/simple-icons/iconify|required_if_pic"
    pic.name: "string|required_if_pic"
    tags: "array[string|max80]|optional|default:[]"
    hidden: "boolean|optional|default:false"
    branch_orientation: "auto/horizontal/vertical|optional|default:auto"
    style:
      fill: "default/#HEX|optional|default:default"
      contour: "default/solid/dashed/dotted/double|optional|default:default"
      contour_width: "default/regular/bold|optional|default:default"
    relation:
      line: "default/solid/dashed/dotted|optional|default:default"
      line_width: "default/regular/bold|optional|default:default"
      color: "default/#HEX|optional|default:default"
    children: "array[block]|optional|default:[]"

  authoring_rules:
    - "one_file=one_model"
    - "hierarchy=children"
    - "no_id_parent_order"
    - "empty_blocks_allowed"
    - "tags=plain_classifiers_not_key_value"
    - "desc=short_human_note_not_data_dump"
    - "style_relation=custom_overrides_only"
    - "tag_colors_not_stored_in_orgf"
    - "value_one_type_per_model"
    - "value_one_unit_per_model"
    - "value_on_block_is_own_value_only"
    - "value_totals_are_computed_not_stored"
    - "reference_if_present=complete_unmodified_canonical_copy_published_for_declared_orgformat_version_at_https://github.com/orgformat/orgf/releases"
    - "hidden=true_on_a_block_requires_hidden=true_on_every_descendant"

  normalization:
    unknown_fields: remark
    invalid_values: default
    over_limit: truncate
    invalid_yaml: reject
    invalid_structure: reject

  normalization_rules:
    - "missing_optional=default"
    - "unknown_fields=remark"
    - "invalid_values=default"
    - "over_limit=truncate"
    - "normalization=view_only_not_source_mutation"
    - "hidden_branch_inconsistency=remark_not_reject"
    - "normalization_propagates_hidden=true_to_all_descendants"

Делать внешнее приложение не хотелось, а хотелось иметь возможность из любой точки мира на любом устройстве открыть приложение и при этом не выгружать ничего на чужой сервер, так как чаще всего в моделях данные крайне приватные или вообще персональные, короче нужен local-self. Да, браузер наше всё, но при этом задача, что бы все данные модели во время работы хранилось в локальной базе браузере. И вторая задача, чтобы блоков модели было много, ну минимум «тыща», а лучше две и все это легко вертелось! Так выбор пал на технологию DOM (Document Object Model), которая позволяет браузеру строить структуру объектов. Брать чужие библиотеки, типа D3.js не хотелось, был интерес сделать свое (ну как обычно) и не ограничиваться чужим видением и возможностями. Как всегда очень много вкусного придумалось походу – и экспорт в модели в мобильный интерактивный автономный файл (html), и подсветка веток, и своя система поиска по модели, и…. и много чего еще пришло в голову увлеченному идеей мне. Много еще чего было реализовано, но не буду все описывать, лучше сходите сами посмотрите :)

А как же сайт, а как же готовые примеры, как же все это выложить и дать понять не только профессионалам из консалтинга - что это и зачем, но и учителям, школьникам, которые так же хотели бы использовать наглядное построение моделей для своих биологических таксономий, географий, языковых справочников и т.д. и т.п.? Так пришла идея сделать демо-кейсы, да еще в игровом формате с объяснением как ORGF использовать на практике. Вот и получился сайт не только про ORGF, но и про бизнес и игровую практику применения с кейсами. Это, по сути, еще один проект в проекте, а точнее два (но кто считает).

кейсы на сайте. все можно тут же открыть в самой Студии или скачать себе для доработки.
кейсы на сайте. все можно тут же открыть в самой Студии или скачать себе для доработки.

Месяц плотного проектирования и разработки в личное время. И вот он готовый MVP - 423 патча, несколько сотен микропатчей и 491 коммит на Git. Плюс публичный Гит со свободной MIT лицензией на формат ORGF. Плюс все кейсы с лицензий общественного достояния CC0 (Creative Commons Zero), делайте с ними что хотите. Решение уже не трех языках (русский, английский и материковый китайский) и на подходе еще 4-ре. И до кучи супер-вызов перегнать таксономию животных (https://www.catalogueoflife.org) в ORGF - на сайте уже есть демо-кейс на 1004 карточки, хочу сделать на все 7 851 869 и положить свой комп (браузер).

Кстати, да, в Студии достаточно мощный отладчик (Debug) и различные счетчики производительности – кому интересно для своих DOM-проектов погонять браузерные технологии и провести так сказать бенчмаркинг – пользуйтесь.

специально мотаю полностью раскрытую модель атласа животных на 1004 блока. Горячо, но норм.
специально мотаю полностью раскрытую модель атласа животных на 1004 блока. Горячо, но норм.



Что дальше и где подвох? Да, браузерная ORGFORMAT Studio всегда будет бесплатной и будет поддерживать все требования самого формата. Это моя авторская установка и я точно буду развивать открытый формат ORGF и Студию бесплатно.

А где-же деньги и в чем смысл? Если будет монетизация, то когда-нибудь через корпоративную версию Cloud (OrgVue подвинься). В остальном это наверное классический хобби-проект, но сделанный под ключ от брендинга и дизайна до сайта и понятных рабочих примеров, чтоб самому не стыдно было.

Теперь по саммери

 Технологический стек (все сознательно максимально просто и быстро):

  • Сервер разработки React/Vite

  • Языки и код TypeScript/HTML/CSS

  • VSC (visual studio code) – для меня лучшее и бесплатное решение для управления всем процессом.

  • GitHub Desktop – обязательно приватный Гит, очень спасет если надо что-то откатить. Так же удобен для коммитов и удержания истории измений.

  • Punto switcher (боже, я никогда в жизни так много не печатал и не бесился на неработающий win+space). Пунто все 20 лет был кривым решением, но даже в отключенном стоянии его shift+Break хорошо решает проблему ошибочной раскладки. Рекомендую.

  • ИИ ChatGPT PLUS – тут надо отметить, что никаких ИИ-агентов и API не было по ряду причин в том числе финансовых. Да, я сделал проект с локальной памятью, да я создал на каждую роль свой суб.чат в проекте и регулярно их хэндоффал в следующую версию (например техлидов Студии у меня было 11 штук), да с каждым из суб.чатов я работал напрямую по четкому процессу и циклу разработки zip_source/cjs_patch/commit (который конечно же ИИ регулярно косячил). Да ИИ не панацея и проект точно потребует от вас понимания архитектуры и ИТ, полного вовлечения в проектирование и моделирование, и конечно же пользовательское тестирование.

  • Яндекс Метрика с полным отключенным всем и ограничением GDPR, плюс окна на согласие сбора аналитики. Так что параноики тестируйте.

Бюджет MVP (примерно 15 000 руб + 600 000 моего личного времени):

  • 7000р - Векторизация моего растрового логотипа в вектор и SVG (Дашенька Игнатьева спасибо тебе огромное за срочность и качество).

  • 244р/мес – Хостинг timeweb (не реклама, но давно с ними работаю, реально беспроблемные и дешевые). Саааамый дешевый тариф, специально что бы протестить производительность проекта (все летает, так как Студия браузерная local-self), а welcome-сайт без лагучих CMS.

  • Доменные имена – 20$/год.

  • ИИ (ChatGPT PLUS) - 20$/мес. Благодаря подписке. С API агентами я бы влетел в трубу.

  • Я занимаюсь в ИТ совершенно иными задачами, я не разработчик, и тем более не стажер и не джун, поэтому надо честно считать плотный месяц моей работы над проектом, как основной бюджет проекта. Для меня это около 600 000 руб.

Агрессивно настроенных прошу идти делать свои проекта, а тех кто хочет поддержать добрым пинком, словом или потестить – велком, добро пожаловать в проект!

Пы.Сы. никакой рекламы или рекламных ссылок.

Нетворкинг:

  • https://orgformat.com/ - welcome-сайт

  • https://orgformat.com/studio/ - собственно, Студия. Лучше десктопная версия браузера, под мобилки MVP еще на адаптировал (но вы всегда можете переключить браузер в режим просмотра ПК).  Темная «тема» прикольная!

  • https://github.com/orgformat/orgf - публичный Гит по открытому формату ORGF, но в дискуссии можете постить и по Студии.

  • https://t.me/orgformat - ТГ канал буду постить туда релизы, демо-кейсы и прочие позитивчики, присоединяйтесь. Комментарии включены.

Комментарии (9)


  1. Surrogate
    29.06.2026 09:34

    Для меня это около 600 000 руб.

    не слабый вклад!!!


    1. Pulso Автор
      29.06.2026 09:34

      Спасибо за первый коммент к первой статье :)
      В любом пет или хобби всегда нужно считать свои собственные затраты. Тогда условно почти бесплатный проект резко начинает иметь совершенно иную стоимость и ценность для автора. В разработке самое дорогое всегда ФОТ.


      1. Surrogate
        29.06.2026 09:34

        Мы с вами явно в разных "весовых категориях".

        В любом пет или хобби всегда нужно считать свои собственные затраты. Тогда условно почти бесплатный проект резко начинает иметь совершенно иную стоимость и ценность для автора.

        Для меня нет смысла считать сколько часов потрачено на пет/хобби-проект. У меня было желание и время делать это - я сделал. Чаще всего этим пользовались 3,5 человека.

        Иногда бывают исключения: забросил проект, спустя несколько лет приходят люди и просят что-то в нем адаптировать "под их специфические потребности". Тогда отбиваются мои трудозатраты на этот хобби-проект и некоторые смежные проекты.


  1. itGuevara
    29.06.2026 09:34

    Инструменты и открытый формат для организационных и иерархических моделей

    На иерархических, включая - орг-модели, "далеко не уехать". Если добавить хотя бы VAD, то можно было бы формировать верхнеуровневую модель компании.

    YAML

    Почему не семантические форматы? Хотя бы YAML-LD

    Пример проекта VAD + семантика. Для понимания формата см. папку Онтология.

    Пример "взрослой" (промышленной) онтологии -, но это не к BPM, а только для демонстрации направления движения \ масштаба.

    То, что пока нет хорошей Open sorce системы для BPM - это да, "беда".

    Касательно отрисовки, можно данные прямо из таблицы, например, Смарт-инструменты «Таблица -> Схема» . Чтобы задать иерархию - достаточно в таблице указать родителя, например, в visio есть такой мастер ,который автоматом схемы иерархии строит.

    Также хорошо бы иметь выгрузку в какой-либо известный формат для схем. Пример (пара промпта): XML - форматов.

    • Языки и код TypeScript/HTML/CSS

    Склоняюсь, что все подобное: от orgformat.com до ARIS нужно писать не на js, java и т.п., а на специальном DSL (а что будет под ним - дело "десятое"). Все такие системы однотипные и основные функции могут быть хорошо описаны на верхнем уровне с трансляцией "ниже".


    1. Pulso Автор
      29.06.2026 09:34

      Ух какой хороший коммент, спасибо! отвечу немного занудно и на сколько я вас понял:

      1. Я сознательно не хочу из ORGF делать вторую ARIS/VISIO/HRIS. ORGF - это решения для быстрых моделей и гипотез и их презентации/защиты без сложных механик. На лету. С использованием вашего собственного AI как драйвера контента если нужно. simple like. Основной потребитель не эксперты, а консалтинг и руководители.

      2. VAD - это же создание ценности в модели? Я специально заложил этот расчет (value) в модель. Модель будет сама считать любой тип числительного по всей цепочке модели. Приложите пример - давайте соберем ORGF и посмотрим на получившуюся модель. Хотя уже есть разные кейсы на сайте с этим числителем (года правления династий, бюджеты, раб/часы проекта и т.д.):
      model:
      value_label: "string|max80|optional|one_value_type_per_model"
      value_unit: "string|max40|optional|one_value_unit_per_model"

      3. Создавать модель через табличное редактирование пока не планирую, это слишком визуально экспертно и "тяжело". Поэтому пока в Студии стандартный Drag_n_Drop и добавление блоков. Но в Cloud версии будет, думаю. В любом случае это для меня менее перспективно, чем AI конструктор моделей из тех же ваших экселей. Исхожу из собственного опыта страт.сессий и защит.

      4. По YAML-LD и DSL: интересное направление. Но я пока специально взял максимально простое решение для просмотра глазами и что более важно AI. Что бы снизить ошибки нормализации и интерпретации.


      1. itGuevara
        29.06.2026 09:34

        1&3 чем Aris Express не про это? Вроде как тоже "на лету".

        Включая ARIS SmartDesign. Ссылка моя выше вставилась битая. Вот верная: ВРМ. Смарт-инструменты «Таблица -> Схема» для формализации бизнес-процессов. Рестайлинг ARIS SmartDesign


        2 VAD = value-added chain diagram


        1. Pulso Автор
          29.06.2026 09:34

          Aris крутой инструмент, но со своими реалиями, тут все банально:
          1. ARIS - Иностранная проприетарная программа. В реестре его нет и не будет.
          2. ADF - проприетарный формат, да его можно вскрыть, но это не делает это открытым и свободным. Что будет с ним завтра непонятно.
          3. Очень устаревший интерфейс, который недопустимо показывать на стрес.сессиях.
          4. Не веб, и вообще древнющая java.
          5. Последнее обнова вроде 15 лет назад была.

          Я понимаю, что эксперты в рассуждениях вечно хотят "научный калькулятор", но на деле все пользуются обычным 2+2=4. Я хотел сделать простое быстрое решение с открытым форматом и ни в коем случае не конкурировать с монстрами. Писал уже об этом выше.


  1. UniInter
    29.06.2026 09:34

    А мне понравился проект. Особенно возможность экспортировать схему в самостоятельный HTML5. Критические, но дружеские стрелы:

    • В юзабилити постоянно натыкаешься на то, что блок не активируется при простом клике на него - дополнительный клик по кнопке выбора является лишним и тормозит создание дочерних блоков, постоянно ошибаешься и новый блок добавляется к предыдущему.

    • Еще не хватает возможности для всего дерева задать горизонтальную ориентацию, чтобы оно росло не вниз, а вправо.

    • Еще при режиме "Презентация" важнее скрывать ваши же горизонтальные панели вверху и внизу, которые занимают много места. А убрать панель инструментов браузера можно и силами самого браузера (F11) - вам об этом заботиться не обязательно.

    Ваш ориентир - программа MindManager - она десктопная, но может экспортировать в HTML5. Довольна наворочена.


    1. UniInter
      29.06.2026 09:34

      Поискал и нашел пример онлайновой карты MindManager:
      http://ina.newart.ru/med/MINDMAP/OpenAPI.html
      Как раз тут дерево разворачивается вправо.