Хотелось бы представить на суд местного сообщества недавно созданную облачную веб платформу разработанную бывшим 1с-овцем освоившим java, js, ts, react.
Главная фишка - есть возможность писать обработчики событий на языке TypeScript и sql код на триггеры при записи объектов. Редактор кода тоже онлайн и реализован на базе monaco-editor. В нем типизируется все: структура и типы метаданных, данные и элементы формы, события обработчиков.
Интерфейсы TypeScript(*.d.ts файлы) генерируются на лету. Они актуальны и доступны в коде даже без сохранения конфигурации.
Есть онлайн демо:
https://constructor.typeser.com/habr - онлайн erp конструктор-конфигуратор
https://typeser.com/habr - рантайм
Часть заявленного функционала хоть и присутствует в качестве настроек конфигуратора, но еще не работает.
Из этого мог бы получиться отличный стартап, и можно было бы заявить - "Главная проблема неудач выхода 1С на западный рынок тут решена! Внутренний язык - не странный язык 1С, а популярный язык - TypeScript!". Но оно так не работает. В реальности - нужны инвестиции чтобы отточить и оттестировать функциональность, сделать пару коробочных отраслевых решений.
На текущем этапе реальная ценность платформы(а точнее mvp) - хорошее портфолио для поиска работы на должность Senior Full-Stack Developer.
Если кто предложит способ повысить ценность (предложит реального клиента ищущего аналог платформы 1С или бизнес-партнера который согласится финансировать разработку) - буду премного благодарен.
Ниже идет перевод с английского раздела "о проекте" в job-резюме:
Typeser Web Platform — это универсальный инструмент для управления полным жизненным циклом продукта.
Разработка: Дизайн, создание и редактирование структуры ERP системы
Развертывание и публикация в один клик
Работа в разработанной ERP
Цель платформы — ускорить и удешевить разработку ERP-систем, предоставить возможность гибкой и прозрачной предварительной настройки и доработки систем на любом этапе жизненного цикла ИТ-продукта.
Преимущества среды разработки:
Cloud IDE — если у вас есть веб-браузер, вы готовы к работе.
методы конфигурации компонентов и привязка данных к пользовательскому интерфейсу без кода (в основном с помощью мыши)
Презентабельную ERP-систему (готовый mvp) можно построить без единой строчки кода или запроса к базе данных.
Низкие стартовые требования к квалификации разработчиков Typeser-окружения
в случае кастомного исходного кода (обработка событий UI) и кастомного SQL-запроса (триггеры, просмотр, безопасность уровня записи) платформа предоставляет все необходимые инструменты для синтаксического контроля и выбора доступных полей и функций, в том числе вновь добавленных и не но сохраненные таблицы, поля, элементы пользовательского интерфейса со строгой проверкой типов (TypeScript для кода модулей и MySql для запросов к БД)
Лучшая TypeScript ORM для фронтенда, не имеющая аналогов
Отсутствие пользовательского кода, исполняемого на сервере. Триггеры SQL, безопасность на уровне просмотра и записи могут полностью покрыть эту функциональность, а также ускорить и снизить стоимость разработки.
Преимущества среды выполнения: скорость, встроенный функционал и единообразие интерфейсов в различных конфигурациях.
Состав платформы
Визуальный конструктор ERP (реализован на том же движке пользовательского интерфейса),
движок пользовательского интерфейса
Портал - выполняет функции авторизации и навигации внутри платформы
Серверная Java на AWS Elastic Beanstalk
портал,
движок (мультиэкземпляры)
MySql (мультиэкземпляры) на AWS RDS
Фичи портала
архитектура без файлов cookie: портал показывает iframe, содержащий сайт среды выполнения. Токены данных передаются с портала в iframe. Эта архитектура позволяет размещать различные базы данных с их пользовательским интерфейсом b собственным src в одном origin.
Встроенная google авторизация
В режиме конструктора портал предоставляет функции сохранения/восстановления данных на локальный ПК
Основные функции и инструменты конструктора
Визуальный редактор древовидной структуры метаданных и реквизита. Список компонентов:
Subsystems (подсистемы),
Entity(database tables, сущности: спрачники/документы),
Forms: Common and Entity(for Object/Choice/List),
Enums,
View,
Registers,
Common modules
read-rls(record level security) sql query
SQL triggers on write record (ErrorReporting, UpdateRegister)
View SQL query
визуальный редактор форм с отрисовкой результата на лету
Автопривязка DB data ←→ form data
Атрибуты формы: (примитивы, Ссылки, EntityObject (с атрибутами объекта и табличными разделами), DynamicTable (Entity/Enum/View))
Перетаскивание и привязка данных формы → элементы формы
Команды автоформы и пользовательские команды → кнопки
добавление и генерация event listeners для элементов формы
Широкое использование автотехник: автогенерация форм, автоматические значения свойств, автоматически доступные команды, автоматическая обработка событий
Наличие встроенных компонентов пользовательского интерфейса, необходимых для построения ERP-систем (поля данных форм, статические и динамические ui-списки с полями левого соединения любого уровня и т.д.)
Классификаторы примитивного типа данных (String, Number, Boolean, Date) qualifiers: length / allowedLength / digits / fractionDigits / allowedSign / dateFractions
Предварительные настройки при добавлении нового entity объекта метаданных (Каталог, Документ, Набор констант)
Интерактивное создание пользовательских обработчиков событий для элементов формы и команд.
Группировка, упорядочивание и переименование метаданных доступны на всех уровнях.
Автоматическое добавление стандартных атрибутов таблицы (ref, description, codePrefix, code, date, parent, isFolder, owner, order,posted,postedDate,deletionMark, version) в зависимости от характеристик таблицы (descriptionLength, descriptionSynonym, usingCode(Yes/ No/YesWithPrefix), codeLength, codePrefixLength, usingDate(No/DateTime/Date/Time), иерархический тип (No/HierarchyOfItems/HierarchyFoldersAndItems), владельцы, usingOrdering, usingPosting)
Исходный код и SQL триггеры
Особая благодарность Microsoft за Monaco Editor и Typescript
Код SRC в редакторе строго типизирован и автоматически подбирается под доступные методы и поля.Typeser генерирует Typescript-интерфейсы на лету для всех используемых метаданных.
(EntityRef/EntityObject<..> /Enums<..>/View/metadata fields)Синтаксический контроль и автовыбор доступного исходного кода в обработчиках событий с учетом структуры текущей конфигурации и формы и доступных параметров обработчика.
Асинхронный ORM для getEntityObject и queryForList с типизированным результатом и автоматическим добавлением левых соединений к полям/выборкам/сортировке
Генерация дерева хелперов при редактировании запросов к БД (доступные таблицы, поля, разрешения контекста выполнения запроса)
Простая разработка пользовательских разрешений и RLS (безопасность на уровне записи) - Гибкая и условная безопасность для чтения и записи данных
Язык MySQL выбран намеренно, так как его проще использовать разработчикам конфигурации. Однако при необходимости разработки корпоративных решений его можно заменить другим (PostgreSQL, MSSQL и т.д.)
Функциональность для развертывания и администрирования
Автоматическое создание и реструктуризация базы данных по структуре метаданных и заданным типам атрибутов
Параметр authorizationMode (OwnerOnly / ManualGrantingRequired / EmailAuthenticationRequired / AnonymousAccessAllowed / AnonymousAccessAndOpenConfiguration)
сущности Users and UserAccessGroups включены в пустой шаблон конфигурации → функции sql-permission
Легкий старт. Перейдите на https://constructor.typeser.com/new (или на свой сайт вместо «new»), выберите исходный шаблон и нажмите «Deploy». Новый сайт с новой демо-системой erp будет развернут по адресу https://typeser.com/your-site-name. Существующая демонстрационная конфигурация и сайт находятся по адресу https://constructor.typeser.com/demo1 https://typeser.com/demo1 В настоящее время поддерживается только desktop браузерами chrome/edge.
Ключевые особенности Run-time
Автоматическая генерация интерфейса для навигации между формами в соответствии с включением общих форм, форм списка сущностей и представления в подсистемах.
Автоматическая генерация форм (список, выбор, объект) для таблиц сущностей, если формы по умолчанию не определены
Автоматическое добавление необходимых элементов в автоформы (динамические таблицы, поля, таблицы значений, flex-группы, вкладки) и стандартные команды (кнопки и панели команд)
Автоматическая выборка данных при прокрутке без разбиения на страницы для динамической таблицы и дерева со встроенной сортировкой и фильтрацией
Открытие формы-объекта для редактирования объекта из динамической таблицы
Редактирование данных формы в полях формы и таблицах значений.
Выбор значений ссылочного типа (в том числе многотипных) из выпадающего списка/формы-списка
smart-background-batch-auto-update обновление представлений ссылки и данных, помещенных в форму через левое соединение при выборе/изменении (обновление происходит в фоновом режиме при прокрутке или изменении данных формы пользователем или кодом пользователя)
Автоматические представления ссылок из пользовательского шаблона
Техника no-code для выбора и автонабора данных в поля (choiceParameters: связать фильтрацию выбора с текущими данными формы)
Интеллектуальный повторный рендеринг пользовательского интерфейса при изменении атрибута и свойств элементов формы
Кэширование метаданных конфигурации, метаданных формы и исходного кода в виде отдельных модулей в браузере.
Автонумерация сущностей (включая с префиксацией)
Управление версиями объектов — предотвращение сохранения объекта, если тот же объект был изменен в другом сеансе.
Сильно не пинайте. Это мой первый пост на habr.com