Skip to content

markbrosalin/Gately

Repository files navigation

Gately

Gately — веб-приложение для проектирования и симуляции логических схем.

EN: Browser-based logic circuit editor and simulator with a visual UI engine and a custom logic core.

Что Это · Что Уже Есть · Демо-Сценарии · Архитектура · Roadmap

Что Такое Gately

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

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

Сейчас Gately правильнее воспринимать как сильный MVP с уже рабочим браузерным сценарием и понятным вектором развития в сторону более полноценной платформы.

Зачем Нужен Проект

При изучении цифровой логики часто возникает одна и та же проблема: теория объясняет правила, схема показывает структуру, а реальное поведение остается недостаточно наглядным.

Gately нужен, чтобы сделать этот переход короче и понятнее:

  • собрать схему визуально;
  • быстро проверить идею через симуляцию;
  • увидеть результат в понятной форме;
  • лучше почувствовать связь между устройством схемы и ее поведением.

Поэтому проект полезен не только как учебный симулятор, но и как техническая основа для более широкой среды работы со схемами.

Что Уже Есть Сейчас

На текущем этапе Gately уже можно использовать как браузерный редактор и симулятор простых логических схем.

В проекте уже есть:

  • визуальный редактор схем;
  • базовые логические элементы: BUFFER, AND, OR, NOT, NAND, NOR, XOR, XNOR;
  • генераторы сигнала: TOGGLE, TRUE_CONSTANT, FALSE_CONSTANT;
  • отображатели: LAMP, 7_SEG_DISPLAY;
  • отдельный логический движок для вычисления и симуляции;
  • связь между UI и логическим ядром через Web Worker;
  • модульная архитектура с заделом под плагинное расширение.

Это уже позволяет показывать проект как:

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

Демо-Сценарии

Текущая версия проекта лучше всего раскрывается на простых, но понятных сценариях:

  • базовые логические элементы и их комбинации;
  • генераторы сигнала и отображатели;
  • полусумматор и сумматор;
  • SUM / CARRY через лампы;
  • 7-seg дисплей с переключаемыми входами.

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

Для Кого Это

Gately может быть полезен в нескольких типовых сценариях:

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

Архитектура

Клиентская часть проекта разделена на два ядра.

  • UI Engine — визуальный движок поверх SolidJS signals и AntV X6, который отвечает за SVG-редактор, отображение схемы и взаимодействие пользователя с графом.
  • Logic Engine — логический движок Cinabono, написанный с нуля и отвечающий за модель схемы, вычисление состояний и симуляцию.

Связь между ними происходит через Web Worker.

Оба движка строятся на компонентной архитектуре. Во внутренней структуре UI-слоя уже выделяются документ схемы, каталог элементов, рендер графа и слой симуляции, но этот уровень все еще развивается, поэтому в README важнее сама идея разделения на визуальное и логическое ядро.

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

Небольшая техническая оговорка: внутри репозитория часть пакетов пока использует историческое имя cinabono / @cnbn/*. По сути это и есть логическое ядро, на котором строится Gately.

Текущий Статус

Проект находится в активной разработке. Честнее всего воспринимать его как рабочий MVP, а не как завершенную платформу.

Что уже выглядит уверенно:

  • сама идея проекта как визуального моста для цифровой логики;
  • рабочий браузерный сценарий сборки и симуляции схем;
  • разделение на UI-движок и логическое ядро;
  • архитектурный задел под дальнейший рост.

Что пока остается в развитии:

  • стабилизация внутренних API и некоторых архитектурных слоев;
  • расширение библиотеки элементов;
  • развитие редакторских возможностей;
  • переход от MVP к платформенному сценарию.

Быстрый Старт

Для локального запуска веб-клиента:

pnpm install
pnpm --filter web dev

Дополнительно:

pnpm --filter web test
pnpm --filter web build

Цели Проекта

Если коротко, у проекта несколько основных целей:

  • сделать цифровую логику более наглядной и понятной;
  • сократить дистанцию между теорией и практикой;
  • дать удобную браузерную среду для экспериментов со схемами;
  • построить основу, которая сможет вырасти из симулятора в платформу.

Roadmap

Ближайшие направления развития проекта:

  • расширение библиотеки логических элементов;
  • улучшение инструментов симуляции и визуального анализа;
  • развитие пользовательских схем и переиспользуемых модулей;
  • более богатые редакторские объекты: кастомные схемы, картинки, текстовые поля, группы;
  • обмен пользовательскими схемами;
  • дальнейшее развитие плагинной архитектуры;
  • движение в сторону полноценной платформы.

Структура Репозитория

Репозиторий организован как монорепа:

apps/web              браузерный клиент Gately
packages/engine       ядро логического движка
packages/engine-worker
packages/schema
packages/simulation

Если смотреть код в первый раз, самый короткий маршрут такой:

  1. apps/web
  2. apps/web/src/shared/infrastructure/ui-engine
  3. packages/engine
  4. packages/schema и packages/simulation

Releases

No releases published

Packages

 
 
 

Contributors

Languages