tekBlueprint.frame

tb.frame aka tekBlueprint Application Framework

Идея – создать набор готовых компонентов для быстрой разработки веб-приложений на актуальном стеке технологий.

По большому счёту, на многих проектах раз за разом реализуется один и тот же функционал. Крупные компании создают свои внутренние фреймворки, кто-то открывает их в Open Source, кто-то нет. Идея этого проекта схожая – снизить издержки на разработку. Особенно это актуально в условиях ограниченных временных и человеческих ресурсов.

На текущий момент, это пробная попытка сделать подобный фреймворк, в первую очередь для нужд проектов tekBlueprint.


Основные принципы

ПравилоПример
Каждый блок – это завершённая библиотека и может быть использована без обязательной связи с другими блоками.frame-security – содержит базовый функционал управления пользователями, группами доступа и разрешениями: сущности (например, Hibernate), сервисы (например, Spring Boot) и представление (например, ReactJS).

При необходимости может быть оформлен в виде отдельного микросервиса-функции.
Блок может содержать один или несколько модулей: SPI, модель данных (сущности), сервисы (бизнес-логика), представление (UI).- SPI – реализует определённый набор интерфейсов для взаимодействия с модулями на всех слоях (бизнес-логика, UI)
- Слой хранения данных – персистентное хранилище данных, может быть любым (NoSQL, RDBMS, Graph DB) для каждого модуля.
- Сервисный слой – реализуется на одном из языков разработки и фреймворке. Естественно, блоки одного типа должны совпадать при сборке общего приложения.
- Представление – пользовательский UI на любом из фреймворков.
Для связи блоков и расширения функционала может использоваться необязательный SPI- Для слоя данных, связи между сущностями реализуются через идентификаторы без использования констрейнтов на уровне БД. Контроль согласованности данных на стороне приложения.
- На сервисном слое используются автоматическое обнаружение подключенного функционала (например, Java Service Loader, автоконфигурации Spring Boot)
- На уровне представления, монтирование компонентов/микрофронтендов, так же осуществялется автоматически различными средствами JS (importmaps, module federation и прочее).
Блоки реализуются под различные языки разработки.Нет привязки к какому-то языку разработки. Модуль frame-security может быть реализован в двух репозиториях:
- frame-security-java
- @tb-frame/components-react
- frame-security-rust
При этом сохраняется общий подход при работе с ними и функционал. К приложению подключается требуемый модуль.
Нет никакой обязательной платформы и диктуемых этой платформой ограниченийВсё взаимодействие между модулями выполняется исключительно через SPI. С одной стороны это может усложнить первоначальную сборку и настройки, но не накладывает дополнительные ограничения при расширении в будущем. Плюс даёт дополнительную изоляцию модулей.

Основной технический стек

КатегорияТипНаименование
BackendLanguageJava 21+
Services LayerSpring Boot 4+
Data Access LayerHibernate 7+ (via Spring Boot BOM)
SerializationJackson 3
Code GenerationMapStruct, Lombok
SPIService Loader, Spring DI
TestSpock (Groovy 4), JUnit Jupiter
RDBMSPostgreSQL
FrontendLanguageTypeScript (~6.0)
FrameworkReact 19
UIPrimeReact 10
State & DataTanStack React Query, Axios
Routingreact-router 7
Formsreact-hook-form
i18ni18next
BuildVite (~8.0), lerna, Biome (lint)
TestVitest