Gately — веб-приложение для проектирования и симуляции логических схем.
EN: Browser-based logic circuit editor and simulator with a visual UI engine and a custom logic core.
Что Это · Что Уже Есть · Демо-Сценарии · Архитектура · Roadmap
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Если коротко, у проекта несколько основных целей:
- сделать цифровую логику более наглядной и понятной;
- сократить дистанцию между теорией и практикой;
- дать удобную браузерную среду для экспериментов со схемами;
- построить основу, которая сможет вырасти из симулятора в платформу.
Ближайшие направления развития проекта:
- расширение библиотеки логических элементов;
- улучшение инструментов симуляции и визуального анализа;
- развитие пользовательских схем и переиспользуемых модулей;
- более богатые редакторские объекты: кастомные схемы, картинки, текстовые поля, группы;
- обмен пользовательскими схемами;
- дальнейшее развитие плагинной архитектуры;
- движение в сторону полноценной платформы.
Репозиторий организован как монорепа:
apps/web браузерный клиент Gately
packages/engine ядро логического движка
packages/engine-worker
packages/schema
packages/simulation
Если смотреть код в первый раз, самый короткий маршрут такой:
apps/webapps/web/src/shared/infrastructure/ui-enginepackages/enginepackages/schemaиpackages/simulation