Files
voidea/flutter
..

VoIdea Flutter App

Мобильное приложение для голосового управления идеями.

Требования

  • Flutter SDK 3.22+ (https://flutter.dev)
  • Dart 3.4+
  • Android Studio / Xcode (для сборки)

Установка

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:

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 на продакшн-адрес:

flutter build apk --release --dart-define=API_BASE_URL=https://voidea.app/api/v1