Красивое Flutter-приложение для управления учебными задачами с ИИ помощником
- Анонимный режим - работа без регистрации с локальным хранением
- Google Sign-In для быстрого входа (настраивается отдельно)
- Email/Password аутентификация с восстановлением пароля
- Пользовательские профили с аватарами и статистикой
- Миграция данных - анонимные данные переносятся при входе в аккаунт
- Безопасность данных - каждый пользователь видит только свои задачи
- Управление аккаунтом - выход и удаление аккаунта
- Бирюзово-фиолетовая цветовая схема с Material Design 3
- Адаптивная светлая/тёмная тема
- Плавные анимации и переходы
- Красивые карточки с тенями и скруглёнными углами
- Группировка по предметам с цветовым кодированием
- Автоматическая сортировка по дедлайнам и приоритетам
- Мгновенное обновление UI без задержек
- Редактирование задач с полным функционалом
- Пользовательские данные - задачи привязаны к аккаунту
- Статусы: в работе, выполнено, просрочено
- Три уровня приоритета с визуальными индикаторами
- Swipe-действия для быстрого редактирования
- Отметка незавершённых для завершённых задач
- 20+ цветов в расширенной палитре
- Редактирование предметов с изменением названия и цвета
- Личные предметы для каждого пользователя
- Группировка задач по цветам предметов
- Автоматические иконки с первой буквой названия
- Защита от удаления предметов с активными задачами
- Объединённый экран профиля и аналитики
- Личная статистика по пользователю
- Прогресс выполнения с процентами
- Аватары пользователей из Google аккаунта
- Статистика по предметам и задачам
- Отслеживание просроченных задач
- Динамическая статистика в реальном времени
- Счетчик выполненных задач за всё время - сохраняется даже при удалении задач
- Функция очистки данных - удаление всех задач и предметов с сохранением достижений
- Автоматическая очистка старых удаленных записей (14 дней) для оптимизации базы данных
- Hybrid Storage - SQLite для локального хранения + Firebase для синхронизации
- Offline-first архитектура - приложение работает без интернета
- Оптимистичные обновления - UI реагирует мгновенно
- Автоматическая синхронизация для аутентифицированных пользователей
- Миграция данных - seamless переход с анонимного на облачное хранение
- Кэширование данных для быстрой загрузки
- Real-time синхронизация между устройствами
- Soft deletion - безопасное удаление с возможностью восстановления
- Умная синхронизация конфликтов - автоматическое разрешение между устройствами
- Автоматическая очистка старых удаленных записей
- Полная работа оффлайн - все функции доступны без интернета
- Минимальные задержки интерфейса
- Персональные API ключи - каждый пользователь может настроить свой ключ
- Улучшение описаний задач - автоматическое исправление грамматики и улучшение структуры текста
- Интеллектуальная коррекция прямо в диалогах создания/редактирования задач
- Безопасное хранение API ключей в профиле пользователя
- Кнопка "Улучшить с помощью AI" появляется только при наличии ключа
- Автодополнение описаний задач (существующая функция)
- Умные предложения приоритетов и времени (существующая функция)
⚠️ Ограничения AI функций: Google Gemini API недоступен на территории России из-за политики Google. Пользователи из других стран могут получить API ключ на ai.google.dev. Приложение полностью функционально без AI функций.
- Уведомления о дедлайнах за 24 часа
- Напоминания о планируемом времени
- Мотивационные сообщения о прогрессе
- Гибкая настройка частоты уведомлений
- Android (полная поддержка, рекомендуется)
- iOS (в разработке)
- Web (базовая поддержка)
- Windows (базовая поддержка)
⚠️ Примечание: В данный момент приложение полностью протестировано и оптимизировано для Android. Поддержка других платформ находится в стадии разработки.
- Framework: Flutter 3.10+ / Dart 3.0+
- Архитектура: BLoC паттерн с Equatable
- Backend: Hybrid Firebase + SQLite (offline-first)
- Локальная БД: SQLite (sqflite) для основного хранения
- Облачная БД: Firebase Firestore для синхронизации
- Аутентификация: Firebase Auth (Google Sign-In, Email/Password, Anonymous)
- ИИ: Google Generative AI (Gemini)
- Навигация: go_router с Auth routing
- UI: Material Design 3, Google Fonts (Inter)
- Уведомления: flutter_local_notifications (в разработке)
- Графики: fl_chart
- Состояние: flutter_bloc + equatable
- Connectivity: connectivity_plus для онлайн/офлайн детекции
- Flutter SDK >= 3.10.0
- Dart SDK >= 3.0.0
- Android Studio / Xcode для соответствующих платформ
- Firebase проект (опционально, для облачной синхронизации)
- Google Cloud проект с Gemini API (опционально, для ИИ функций)
Примечание: Приложение работает полностью офлайн без Firebase. Регистрация в Firebase нужна только для синхронизации между устройствами.
- Клонируйте репозиторий
git clone https://github.com/yourusername/study-todo-app.git
cd study-todo-app- Установите зависимости
flutter pub get- Настройте Firebase (опционально, для облачной синхронизации)
Приложение работает без Firebase в анонимном режиме с локальным хранилищем. Настройка Firebase нужна только для:
- Синхронизации данных между устройствами
- Входа через Google аккаунт
- Облачного бэкапа данных
- Создайте проект в Firebase Console
- Включите Firestore Database (начните в тестовом режиме)
- Включите Authentication → Sign-in method → Email/Password, Google и Anonymous
- Добавьте Android приложение с package name
com.example.studytodoapp - Скачайте
google-services.jsonв папкуandroid/app/
- Добавьте iOS приложение с Bundle ID
com.example.studytodoapp - Скачайте
GoogleService-Info.plistв папкуios/Runner/ - Добавьте файл в Xcode проект
- Добавьте Web приложение в Firebase
- Скопируйте конфигурацию в
web/index.html
- Настройте Gemini AI (опционально)
AI функции теперь настраиваются индивидуально каждым пользователем через приложение:
- Откройте приложение и войдите в аккаунт
- Перейдите на вкладку "Профиль"
- Нажмите кнопку "Добавить AI ключ" или "Настроить AI"
- Введите ваш API ключ от Google AI Studio
- Теперь кнопка "✨ Улучшить с помощью AI" будет появляться в полях описания задач
Получение API ключа:
- Перейдите на ai.google.dev
- Нажмите "Get API key in Google AI Studio"
- Создайте новый API ключ
- Скопируйте ключ и добавьте его в приложении
💡 Примечание: AI функции работают только с личным API ключом каждого пользователя. Это обеспечивает приватность и безопасность данных.
- Запустите приложение
# Разработка с hot reload
flutter run --debug
# Android
flutter run -d android
# iOS
flutter run -d ios
# Web
flutter run -d chrome
# Windows
flutter run -d windows
# Первый запуск без Firebase
# Приложение автоматически создаст локальную базу данных SQLite
# и запустится в анонимном режимеlib/
├── main.dart # Точка входа с Firebase инициализацией
├── blocs/ # BLoC для управления состоянием
│ ├── auth_bloc.dart # Аутентификация и пользователи
│ ├── subjects_bloc.dart # Управление предметами
│ └── tasks_bloc.dart # Управление задачами
├── models/ # Модели данных
│ ├── task.dart # Модель задачи
│ ├── subject.dart # Модель предмета
│ ├── user_profile.dart # Профиль пользователя
│ └── task_group.dart # Группировка задач
├── screens/ # Экраны приложения
│ ├── auth_screen.dart # Экран входа/регистрации
│ ├── home_screen.dart # Главный экран с задачами
│ ├── subjects_screen.dart # Управление предметами
│ └── analytics_screen.dart # Профиль и аналитика
├── services/ # Сервисы
│ ├── auth_service.dart # Firebase Authentication
│ ├── database_service.dart # Hybrid хранилище (SQLite + Firestore)
│ ├── sqlite_service.dart # Локальная база данных
│ ├── ai_service.dart # Gemini AI интеграция
│ └── notification_service.dart # Уведомления
├── widgets/ # Переиспользуемые виджеты
│ ├── auth_wrapper.dart # Роутинг auth/main
│ ├── main_navigation.dart # Нижняя навигация
│ ├── task_card.dart # Карточка задачи
│ └── edit_task_dialog.dart # Редактирование задач
└── utils/ # Утилиты
└── task_grouper.dart # Логика группировки
pubspec.yaml- зависимости и ресурсыCLAUDE.md- инструкции для Claude Code- Firebase конфигурационные файлы
- Войдите в аккаунт (Google или Email/Password)
- Перейдите на вкладку "Профиль и аналитика"
- Найдите кнопку "Добавить AI ключ" в правом нижнем углу карточки профиля
- Введите ваш Gemini API ключ и нажмите "Сохранить"
- Создавайте или редактируйте задачу
- Введите описание в поле "Описание"
- Нажмите кнопку "✨" справа от поля (появляется при наличии API ключа)
- Дождитесь обработки - AI автоматически улучшит ваш текст
- Сохраните задачу с улучшенным описанием
- ✅ Исправляет орфографические и грамматические ошибки
- ✅ Улучшает структуру и читаемость текста
- ✅ Делает описания более профессиональными
- ✅ Сохраняет исходный смысл и содержание
- Автоматический подсчет: Каждая выполненная задача увеличивает счетчик достижений
- Сохранение при очистке: Статистика выполненных задач за всё время не удаляется при очистке данных
- Отображение в аналитике: Показывается отдельной строкой "Выполнено за всё время" в статистике
- Перейдите в профиль → Нажмите на иконку аккаунта в правом верхнем углу
- Выберите "Очистить данные" из выпадающего меню
- Подтвердите действие в диалоге (двойное подтверждение для безопасности)
- Дождитесь завершения - все задачи и предметы будут удалены
- Статистика достижений сохранится - счетчик выполненных задач за всё время останется
# Анализ кода
flutter analyze
# Запуск тестов
flutter test
# Сборка APK
flutter build apk
# Сборка для iOS
flutter build ios
# Сборка для Web
flutter build web
# Очистка проекта
flutter clean
flutter pub get- Изолированные данные: Каждый пользователь видит только свои задачи и предметы
- Firebase Security Rules: Настроены для защиты пользовательских данных
- Защита от SQL-инъекций: Использование параметризованных запросов SQLite
- Безопасная обработка паролей: Все пароли обрабатываются через Firebase Auth
- Шифрование: Все данные передаются через HTTPS
- Таймауты сетевых операций: Защита от зависания приложения
- Правильная обработка ошибок: Специфические Firebase exception handlers
- Анонимность: Поддержка анонимного входа для тестирования
- Удаление данных: Возможность полного удаления аккаунта и данных
- Селективная очистка: Отдельная функция очистки данных с сохранением достижений
- Локальное хранение API ключей: AI ключи хранятся только у пользователя
Приложение использует BLoC паттерн для разделения бизнес-логики и UI:
- AuthBloc: Управляет состоянием аутентификации
- TasksBloc: Обрабатывает CRUD операции с задачами
- SubjectsBloc: Управляет жизненным циклом предметов
- Singleton паттерн для глобального доступа
- Асинхронные операции с обработкой ошибок
- Real-time обновления через Firebase streams
- Immutable модели с методами копирования
- JSON сериализация для Firebase
- Type-safe операции с enum'ами
- Форкните репозиторий
- Создайте feature ветку (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Этот проект лицензирован под MIT License - см. файл LICENSE для подробностей.
Если у вас есть вопросы или проблемы:
- Создайте Issue
- Обратитесь к документации Flutter
- Ознакомьтесь с Firebase документацией
Сделано с ❤️ для студентов всего мира
🚀 StudyToDo - управляй временем, достигай целей!
📱 Release Ready - Готово к продакшену с полным аудитом безопасности!