mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2026-02-05 03:32:18 +00:00
34 lines
1.9 KiB
Markdown
34 lines
1.9 KiB
Markdown
|
|
# Структура проекта
|
||
|
|
|
||
|
|
Проект строится на основе фич и слоев.
|
||
|
|
|
||
|
|
## Общая иерархия
|
||
|
|
- `/assets` — графические ресурсы.
|
||
|
|
- `/lib` — основной код.
|
||
|
|
- `/app` — глобальные настройки, интерфейсы и реализации.
|
||
|
|
- `/di` — конфигурация зависимостей.
|
||
|
|
- `/routing` — описание путей.
|
||
|
|
- `/features` — функциональные модули приложения.
|
||
|
|
- `/gen` — сгенерированный код.
|
||
|
|
|
||
|
|
## Структура Feature-папки
|
||
|
|
Каждая фича делится на три слоя:
|
||
|
|
|
||
|
|
1. **Data** (Поставщик данных):
|
||
|
|
- `/dto` — модели данных для API.
|
||
|
|
- `/repository` — реализация интерфейсов репозиториев.
|
||
|
|
2. **Domain** (Бизнес-логика):
|
||
|
|
- `/entity` — чистые модели для использования в UI.
|
||
|
|
- `/repository` — **интерфейсы** репозиториев.
|
||
|
|
- `/state` — управление состоянием (BLoC).
|
||
|
|
- `/service` — реализации бизнес-сервисов.
|
||
|
|
3. **Presentation** (Представление):
|
||
|
|
- `/screens` — виджеты экранов (`*Screen`).
|
||
|
|
- `/components` — переиспользуемые компоненты внутри фичи.
|
||
|
|
|
||
|
|
## Правила взаимодействия
|
||
|
|
- **Data** → доступ к **Entity** (для маппинга), не знает про UI.
|
||
|
|
- **Domain** → не знает про **Data** (работает через интерфейсы) и **Presentation**.
|
||
|
|
- **Presentation** → работает через **Domain**, не знает про **Data**.
|
||
|
|
- Объекты внутри фичи инкапсулированы. Глобальные объекты выносятся в `/app`.
|