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. С одной стороны это может усложнить первоначальную сборку и настройки, но не накладывает дополнительные ограничения при расширении в будущем. Плюс даёт дополнительную изоляцию модулей. |
Основной технический стек
| Категория | Тип | Наименование |
|---|---|---|
| Backend | Language | Java 21+ |
| Services Layer | Spring Boot 4+ | |
| Data Access Layer | Hibernate 7+ (via Spring Boot BOM) | |
| Serialization | Jackson 3 | |
| Code Generation | MapStruct, Lombok | |
| SPI | Service Loader, Spring DI | |
| Test | Spock (Groovy 4), JUnit Jupiter | |
| RDBMS | PostgreSQL | |
| Frontend | Language | TypeScript (~6.0) |
| Framework | React 19 | |
| UI | PrimeReact 10 | |
| State & Data | TanStack React Query, Axios | |
| Routing | react-router 7 | |
| Forms | react-hook-form | |
| i18n | i18next | |
| Build | Vite (~8.0), lerna, Biome (lint) | |
| Test | Vitest |