# Описание проекта Friflex Starter ## Общая информация Friflex Starter - это стартовый шаблон для разработки Flutter-приложений, который предоставляет готовую структуру проекта, настроенные инструменты и лучшие практики разработки. ## Архитектура Проект следует принципам чистой архитектуры с разделением на три основных слоя: - **data** - слой данных, отвечающий за работу с API и локальным хранилищем - **domain** - слой бизнес-логики, содержащий основные бизнес-правила и модели - **presentation** - слой представления, отвечающий за UI и взаимодействие с пользователем Каждая функциональность (feature) реализуется в отдельной папке с внутренним разделением на слои, что обеспечивает модульность и масштабируемость кода. ## Технологический стек ### Основные библиотеки - **Роутинг**: [go_router](https://pub.dev/packages/go_router) - **Управление состоянием**: [flutter_bloc](https://pub.dev/packages/flutter_bloc) - **Внедрение зависимостей**: собственная реализация через InheritedWidget - **Работа с ресурсами**: [flutter_gen](https://pub.dev/packages/flutter_gen) - **Линтинг**: [friflex_lint_rules](https://pub.friflex.com/packages/friflex_lint_rules) - **Хранение данных**: - Защищенные данные: [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Обычные данные: [shared_preferences](https://pub.dev/packages/shared_preferences) - **Работа с API**: [dio](https://pub.dev/packages/dio) ## Структура проекта ### Основные директории - `/lib` - основной код приложения - `/app` - основные компоненты приложения - `/features` - функциональные модули - `/router` - настройка маршрутизации - `/di` - настройка внедрения зависимостей - `/l10n` - локализация - `/gen` - сгенерированные файлы - `/targets` - специфичные настройки для разных платформ - `/assets` - ресурсы приложения - `/test` - тесты - `/tools` - инструменты и документация - `/app_services` - сервисы приложения ### Конфигурационные файлы - `pubspec.yaml` - зависимости и метаданные проекта - `analysis_options.yaml` - настройки анализа кода - `l10n.yaml` - настройки локализации ## Документация для проектов Проект содержит подробную документацию в директории `/tools/rfc/`: - Рекомендованный README для проекта - Инструкции по запуску проект - Стиль написания кода - Git-flow процесс - Структуру проекта - Правила ведения документации ## Дополнительные особенности - Поддержка мультиязычности (l10n) - Шаблон для PR - Настроенный анализ кода (analysis_options.yaml) ## Начало работы Для начала работы с проектом рекомендуется ознакомиться с документацией в директории `/tools/rfc/`, особенно с инструкциями по запуску проекта и стилем написания кода. ## Рекомендованный Readme для проектов #### Приложение [ProjectName] ## Структура проекта - проект архитектурно делится на три слоя: data, domain и presentation; - все [features] реализуются в отдельных папках, с внутренним делением на слои; ## Основные пакеты и реализации (обновляется при добавлении или изменении) - управление роутингом: [go_router](https://pub.dev/packages/go_router); - основной state manager: [flutter_bloc](https://pub.dev/packages/flutter_bloc); - di: ручная реализация через InheritedWidget; - работа с ресурсами: [flutter_gen](https://pub.dev/packages/flutter_gen); - анализатор: используем [friflex_lint_rules](https://pub.friflex.com/packages/friflex_lint_rules), с правилами написания кода от компании.; - для хранения защищенных данных - [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage); - для хранения данных - [shared_preferences](https://pub.dev/packages/shared_preferences); - для работы с API - [dio](https://pub.dev/packages/dio); ## Инструкция по запуску проекта - [Инструкция по запуску проекта](./tools/rfc/RFC-build.md) ## Стиль написания кода - [Стиль написания кода](./tools/rfc/RFC-codestyle.md) ## Внесение изменений в код - [Внесение изменений в код](./tools/rfc/RFC-gitflow.md) ## Структура проекта - [Структура проекта](./tools/rfc/RFC-projects_structure.md) ## Ведение документации и комментариев в проекте - [Ведение документации и комментариев в проекте](./tools/rfc/RFC-documentation.md)