Краткое описание:
Фреймворк, который хочет предоставить вам всю необходимую базу, чтобы вы могли создавать сложные приложения.
Цели фреймворка:
- Создать единую платформу для всей команды разработки.
- По возможности все артефакты должны храниться в кодовой базе (например файлы user story);
- Предоставить для "программистов" функционал для комфортной разработки "очень" больших приложений;
- Автоматически генерировать всю необходимую документацию чтобы видеть полную картину того "Как устроена доменная область":
- Чтобы видеть взаимосвязи модулей, какой модуль от какого зависит;
- Чтобы видеть взаимосвязи use-case, какой use-case от какого зависит;
- Чтобы видеть как и чем общаются различные части приложения;
Основные плюсы:
- Предоставляет возможности выстраивания модульной архитектуры приложения;
- Предоставляет возможности выстраивания "Чистой" или "DDD" архитектуры. Т.е. полное выделение доменного слоя;
- Предоставляет функционал для комфортного и простого взаимодействия фронтэнда и бэкенда:
- единый стек основанный на языке программирования typescript;
- явно описанные контракты между фронтэндом и бэкендом;
- полная инкапсуляция технического http слоя, не надо заморачиваться явным описанием и реализацие url каждого эндпойнта (use-case);
- Практически никаких зависимостей, все "написано" с нуля;
- Фреймворк уже принял большинство решений по архитектура, чтобы вы максимально концентрировались над решением задач вашего приложения;
- В будущем будет развиваться функционал для автоматической генерации документации "доменной области";
Основные минусы:
- Сложная кривая входа:
- некоторые решения могут быть сложными для понимания "как это работает", например реализация "Внедрения зависимости" основанной на паттерне "Service locator";
- попытки охватить "всевозможные" варианты выстраивания архитектуры приложения (сервис-модульная, микросервисная, cqrs, event sourcing и т.д.);
- Сложность освоения:
- никому не известна, нет сообщества;
- нет документации (будем решать);
- Фреймворк дает довольно жесткий каркас того, как должно работать приложение;
- Возможны изменения, так как проект на стадии активной разработки;
- Подвержена детским болезням из-за "новизны";
[Описание фреймворка и его предназначения]
Оглавление
Установка
Для изучения фреймворка
git clone https://github.com/nurgeo/rilata/
Чтобы добавить как зависимость к своему проекту
bun add nurgeo/rilata
Требования:
Зависимости:
Быстрый старт
Попробовать:
- Склонировать репозиторий:
git clone https://github.com/nurgeo/rilata/
;
- Перейти в папку с проектом:
cd rilata
;
- Выполнить команду запуска:
bun run ./tests/service-oriented-impl/zzz-run-server/main.ts -f
;
- опция
-f
: при запуске тестового сервера БД заполняется начальными записями;
- Выполнить каким либо способом post запрос с токеном авторизации и заполненным телом, например:
curl -X POST \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI1MzZlNzQ2My1iMjRkLTRlN2ItYmFkOS0yYmQyZWQ4MDExZmQiLCJleHAiOjI1MjY4NTIzNTUzMDIsInR5cCI6ImFjY2VzcyJ9.Fj0xoztJyN52K9prR8w1Jo0B_7rImJ6e2RsCnAARfR8" \
-H "Content-Type: application/json" \
-d '{ "meta": { "name": "getPersonByIin", "requestId": "dea2d31a-1179-4a68-a139-f3b6c8dd5aa0", "domainType": "request" }, "attrs": { "iin": "123123123123" } }' \
localhost:3000/api/subject-module/
Должны получить ответ:
{
"httpStatus": 200,
"success": true,
"payload": {
"id": "b433034e-8090-4c7d-8738-8cb78bbc6792",
"firstName": "Bill",
"lastName": "Geits",
"iin": "123123123123",
"contacts": { "emails": [
{ "type": "corporate", "email": "bill@microsoft.com" }
]}
}
}
Примеры для изучений:
- По пути
./tests/service-oriented-impl/
есть пример реализации монолитного модульного сервис ориентированного приложения.
- По пути
./tests/bus-run-impl/
есть пример реализации приложения где модули "общаются" через шину (посредством подписки на события).
Документация
В будущем...
Лицензия
MIT License
Дорожная карта
- Добавить модули для работы с чат-ботами.
- Добавить функционал для генерации документации доменной области.