Проект является официальным учебным примером для демонстрации совместного использования технологии react-query и архитектурной методологии FSD
- TypeScript: Язык программирования, расширяющий возможности JavaScript с помощью статической типизации.
- React - библиотека для создания пользовательских интерфейсов
- Material UI - библиотека UI-компонентов
- React Router - для управления маршрутизацией приложения
- React Query - библиотека управления состоянием запросов к серверу
Структура проекта выглядит следующим образом:
| #
└── src/ #
├── app/ # Инициализирующая логика приложения #
| #
├── pages/ # Слой: Страницы приложения
| ├── home/ # Слайс: Главная страница постов с пагинацей
| | ├── lib/ # Сегмент: Логика хранения текущей страницы в query params
| | | #
| | └── ui/ # Сегмент: Логика UI отображения
| | #
| └── post/ # Слайс: Детальное отображение поста
| | #
| └── ui/ # Сегмент: Логика UI
| #
| #
├── entities/ # Слой: Бизнес-сущности
| └── post/ # Слайс: сущность Поста
| ├── model/ #
| ├── api/ # Сегмент: Здесь пример с react-query
| └── ui/ #
| #
| #
└── shared/ # Слой: Переиспользуемые модули, без привязки к бизнес-логике
├── api/ # Сегмент: Api клиент
├── config/ # Сегмент: Конфигурация приложения (API_URL, env_vars, ...)
└── lib/ # Сегмент: Инфраструктурная логика приложения (utils/helpers)
└── src/
├── entities/
| ├── {entity}/
| ... └── api/
| ├── `{entity}.query` # query-factory (см. раздел с query-factory)
| ├── `get-{entity}` # функции работы с сущностью
| ├── `create-{entity}`
| ├── `delete-{entity}`
| ├── `update-{entity}`
| ...
└── shared/
...
└── src/
...
|
└── shared/
├── api/
... ├── queries/ # query-factories (см. раздел с query-factory)
| ├── document.ts
| ├── background-job.ts
| ...
... # организация запросов по усмотрению