# VoIdea Flutter App Мобильное приложение для голосового управления идеями. ## Требования - Flutter SDK 3.22+ (https://flutter.dev) - Dart 3.4+ - Android Studio / Xcode (для сборки) ## Установка ```bash cd flutter # 1. Сгенерировать platform-специфичные файлы (android/ios/web) # НЕ ИСПОЛЬЗУЙТЕ flutter create . — это перезапишет lib/ # Используйте скрипт: .\init_project.ps1 # 2. Установить зависимости flutter clean flutter pub get # 3. Если ошибка "namespace not specified" (старый device_info): .\fix_build.ps1 # 4. Запустить (выбрать Chrome/Edge для web, или подключить Android/iOS) flutter run # 5. Собрать APK # debug (для тестирования): flutter build apk --debug --dart-define=API_BASE_URL=http://10.0.2.2:8000/api/v1 # release (для публикации): flutter build apk --release --dart-define=API_BASE_URL=https://voidea.app/api/v1 # APK будет в: build/app/outputs/flutter-apk/app-release.apk # split per ABI (меньше размер): flutter build apk --split-per-abi --release # 6. Собрать IPA (требуется macOS + Xcode) flutter build ios --release # 7. AppBundle (Google Play) flutter build appbundle --release ``` ## Известные проблемы и решения ### dot-shorthands error ``` Error: This requires the experimental 'dot-shorthands' language feature. ``` Причина: `flutter create` сгенерировал шаблонный `lib/main.dart` с синтаксисом `.fromSeed()`. Решение: перегенерировать платформенные папки через `init_project.ps1` (он не трогает `lib/`). ## Переменные окружения Установите через `--dart-define`: ```bash flutter run --dart-define=API_BASE_URL=https://voidea.app/api/v1 ``` ## Структура проекта ``` flutter/ ├── lib/ │ ├── main.dart # Entry point │ ├── app.dart # MaterialApp.router │ ├── core/ │ │ ├── api/ # Dio client, endpoints, exceptions │ │ ├── theme/ # Material 3 theme (light/dark) │ │ ├── router/ # go_router config │ │ ├── constants/ # App constants, colors, funnel config │ │ └── utils/ # Validators │ ├── models/ # Data classes (auth, idea, workspace...) │ ├── providers/ # Riverpod state (auth, ideas, workspace...) │ ├── widgets/ # Shared widgets (loading, error, vote...) │ └── features/ # Feature-first structure │ ├── auth/ # Login, register, 2FA, password reset │ ├── dashboard/ # Main dashboard with list/kanban toggle │ ├── ideas/ # CRUD, view, edit, funnel, kanban │ ├── voice/ # Voice input, sessions │ ├── workspaces/ # Workspace list, detail, members │ ├── notifications/ # Notification list │ ├── settings/ # Profile, theme, integrations, logout │ ├── integrations/ # Calendar connection UI │ ├── onboarding/ # Onboarding slides │ └── admin/ # Admin panel (7 tabs) ├── test/ # Widget tests ├── assets/ # Static assets ├── pubspec.yaml └── analysis_options.yaml ``` ## Фичи - **Голосовой ввод** через speech_to_text (Native Android/iOS) - **Воронка идей**: 6 статусов (raw → retrospective), Kanban-доска - **Рабочие пространства**: личные и командные, управление участниками - **Совместная работа**: голосования, комментарии, лента активности - **Календарь**: Google, Яндекс, Apple (CalDAV) - **Уведомления**: push, in-app, unread badge - **Админ-панель**: статистика, пользователи, агенты, логи, тарифы, бот, сервисы - **Тёмная/светлая тема**: переключение, сохранение в Secure Storage - **Анимации**: flutter_animate (fade, slide, scale) ## Сборка для VPS Установите `API_BASE_URL` на продакшн-адрес: ```bash flutter build apk --release --dart-define=API_BASE_URL=https://voidea.app/api/v1 ```