* chore(pubspec,di): Обновить версии SDK и исправить использование AppEnv * chore(readme): Обновить версии Flutter и Dart, добавить новые библиотеки --------- Co-authored-by: petrovyuri <petrovyuri@example.com>
🚀 Friflex Flutter Starter - Корпоративный шаблон
Корпоративный стартовый шаблон для разработки масштабируемых Flutter-приложений
📋 Документация • 🏗️ Архитектура • 🚀 Быстрый старт • 🔧 Конфигурация
📖 Описание проекта
Friflex Starter — это готовое к использованию корпоративное решение для разработки Flutter-приложений, которое включает в себя:
✨ Ключевые особенности:
- 🏛️ Чистая архитектура с модульным подходом
- 🔄 Готовая система управления состоянием
- 🌐 Мультиплатформенность, разделение на сервисы
- 🛡️ Безопасное хранение данных
- 🌍 Поддержка интернационализации
- 🎨 UI Kit и система токенов дизайна
- 🔍 Инструменты отладки и мониторинга
- ⚡ Современный Dart 3.10+ с dot shorthands
🎯 Для чего нужен стартер
🚀 Быстрый старт проектов
- Экономия времени: Избавляет от необходимости настраивать базовую инфраструктуру с нуля
- Унифицированный подход: Обеспечивает единообразие всех проектов в компании
- Проверенные решения: Содержит только протестированные архитектурные паттерны
🏢 Корпоративные требования
- Масштабируемость: Поддерживает рост команды и функциональности
- Сопровождение: Легко поддерживается и модифицируется
- Документированность: Полная документация всех компонентов
🛠️ Готовая инфраструктура
- DI система: Настроенное внедрение зависимостей
- Роутинг: Готовая навигационная система
- Сервисы: Базовые сервисы для работы с API, хранилищем, логированием
🏗️ Архитектура
📐 Clean Architecture принципы
Проект построен на основе Clean Architecture с четким разделением ответственности:
┌─────────────────────────────────────────┐
│ PRESENTATION │
│ 🎨 UI, Screens, Widgets
├─────────────────────────────────────────┤
│ DOMAIN │
│ 📋 Business Logic,BLoC, Entities,
├─────────────────────────────────────────┤
│ DATA │
│ 🗄️ Repositories, Data Sources, DTO
└─────────────────────────────────────────┘
📦 Слои архитектуры
- 🎨 Presentation - UI компоненты, экраны
- 📋 Domain - Бизнес-логика, сущности, интерфейсы репозиториев, BLoC/Cubit для управления состоянием
- 🗄️ Data - Реализация репозиториев, работа с API и локальным хранилищем
🏗️ Feature-модульная структура
Каждая функциональность изолирована в отдельном модуле:
features/
├── auth/ # 🔐 Авторизация
│ ├── data/ # API, репозитории
│ ├── domain/ # Бизнес-логика
│ └── presentation/ # UI компоненты
├── profile/ # 👤 Профиль пользователя
└── debug/ # 🐛 Инструменты отладки
🛠️ Технологический стек
🚀 Основные технологии
| Категория | Библиотека | Версия | Описание |
|---|---|---|---|
| 🧭 Навигация | go_router | 17.0.0 |
Декларативный роутинг |
| 🔄 State Management | flutter_bloc | 9.1.1 |
Управление состоянием |
| 💉 DI | Custom InheritedWidget | - | Внедрение зависимостей |
| 🎨 Resources | flutter_gen | 5.12.0 |
Генерация ресурсов |
| 🌐 HTTP | dio | 5.9.0 |
HTTP клиент |
| 🎨 SVG | flutter_svg | 2.2.2 |
Поддержка SVG |
| 🎬 Animation | lottie | 3.3.2 |
Анимации Lottie |
| 🔒 Secure Storage | flutter_secure_storage | - | Защищенное хранилище |
| 📊 Logging | talker | 5.0.2 |
Логирование и отладка |
| 🎨 Theme | theme_tailor | 3.1.1 |
Генерация тем |
| ⚙️ Environment | envied | 1.3.1 |
Управление переменными окружения |
🔧 Инструменты разработки
| Инструмент | Версия | Описание |
|---|---|---|
| 📝 Линтинг | flutter_lints: 6.0.0 |
Корпоративные правила кода |
| 🏗️ Code Generation | build_runner: 2.10.3 |
Генерация кода |
| 🌍 Локализация | intl: 0.20.2 |
Интернационализация |
| ⚙️ Environment | envied: 1.3.1 + envied_generator: 1.3.1 |
Управление переменными окружения |
| 🎨 Theme Generator | theme_tailor: 3.1.1 |
Генерация тем |
🗂️ Структура проекта
friflex_starter/
├── 🎨 assets/ # Ресурсы приложения
│ ├── fonts/ # Шрифты
│ ├── icons/ # Иконки
│ ├── images/ # Изображения
│ └── lottie/ # Анимации
├── 🌐 app_services/ # Платформо-зависимые сервисы
│ ├── base/ # Базовая реализация
│ ├── aurora/ # Aurora OS реализация
│ └── i_app_services/ # Интерфейсы
├── 📂 lib/
│ ├── 🏠 app/ # Основные компоненты
│ ├── 💉 di/ # Dependency Injection
│ ├── 🧭 router/ # Навигация
│ ├── 🎯 features/ # Функциональные модули
│ ├── 🌍 l10n/ # Локализация
│ ├── ⚙️ gen/ # Сгенерированные файлы
│ └── 🎯 targets/ # Точки входа для разных окружений
├── 🧪 test/ # Тесты
└── 🛠️ tools/ # Инструменты и документация
└── 📋 rfc/ # RFC документация
🎯 Особенности структуры
🌐 Мультиплатформенные сервисы
Проект поддерживает различные платформы через абстракцию сервисов:
- Base - стандартная реализация для Google Services
- Aurora - специальная реализация для Aurora OS
- Interfaces - общие интерфейсы для всех платформ
⚙️ Система окружений
enum AppEnv {
dev, // 🧪 Разработка с мок-данными
stage, // 🧪 Тестирование
prod, // 🚀 Продакшен
}
🚀 Быстрый старт
🛠️ Установка
Клонирование проекта
git clone https://github.com/smmarty/friflex_starter.git
cd friflex_starter
Установка зависимостей
flutter pub get
Генерация файлов
dart run build_runner build --delete-conflicting-outputs
flutter packages pub run flutter_gen
Запуск приложения
flutter run
Замените название пакета на ваш
🎯 Запуск с разными окружениями
# Разработка
flutter run --target lib/targets/dev.dart
# Тестирование
flutter run --target lib/targets/stage.dart
# Продакшен
flutter run --target lib/targets/prod.dart
🔧 Конфигурация
⚙️ Переменные окружения
Создайте файлы окружения в папке env/:
dev.env- для разработкиstage.env- для тестированияprod.env- для продакшена
🎨 Генерация ресурсов
# Генерация ассетов
flutter packages pub run flutter_gen
# Полная перегенерация
dart run build_runner build --delete-conflicting-outputs
🧪 Отладка
🐛 Debug Screen
Встроенный экран отладки предоставляет:
- 📊 Информацию о текущем окружении
- 🔧 Настройки темы
- 🌍 Переключение языков
- 🎨 Просмотр UI Kit
- 🔐 Управление токенами
- 📈 Работа с логами
- 🔄 Тестирование компонентов
Доступ через DebugScreen или debug-меню в приложении.
📝 Логирование
Интегрированная система логирования Talker:
- HTTP запросы/ответы
- BLoC события и состояния
- Общие логи приложения
- Ошибки и исключения
📋 Документация
Полная документация проекта находится в директории /tools/rfc/:
| Документ | Описание |
|---|---|
| 📖 RFC-README.md | Рекомендованный Readme |
| 📋 RFC-build.md | Инструкции по сборке |
| 🎨 RFC-codestyle.md | Стандарты кода |
| 🔄 RFC-gitflow.md | Git workflow |
| 🏗️ RFC-projects_structure.md | Структура проекта |
| 📝 RFC-documentation.md | Правила документирования |
| 🔧 RFC-managing_generated_files.md | Рекомендации по управлению сгенерированными файлами |
| 🌐 RFC-managing_pubspec_lock.md | Рекомендации по управлению pubspec.lock |
🎯 Особенности и нюансы
✨ Преимущества
- 🚀 Быстрое развертывание: Готовая к использованию инфраструктура
- 🔧 Легкая настройка: Минимальная конфигурация для старта
- 📈 Масштабируемость: Модульная архитектура поддерживает рост
- 🛡️ Безопасность: Встроенные механизмы защиты данных
- 🌐 Мультиплатформенность: Поддержка нестандартных платформ
- 📱 Адаптивность: Готовые решения для разных экранов
🔧 Рекомендации по использованию
- Изучите RFC документацию перед началом работы
- Следуйте архитектурным принципам проекта
- Используйте встроенные инструменты отладки
- Документируйте изменения согласно стандартам
- Тестируйте на всех поддерживаемых платформах
📄 Лицензия
Этот проект распространяется под лицензией MIT License. Подробности смотрите в файле LICENSE.
Copyright © 2025 Friflex LLC. Все права защищены.