Skip to content

Мультиплатформенное приложение для ведения задач по учёбе и отслеживания дедлайнов.

Notifications You must be signed in to change notification settings

nn80nn/studytodoapp

Repository files navigation

StudyToDo 📚✨

Красивое Flutter-приложение для управления учебными задачами с ИИ помощником

Flutter 3.10+ Dart 3.0+ Firebase Material Design 3 Google AI

🌟 Особенности

🔐 Гибкая аутентификация

  • Анонимный режим - работа без регистрации с локальным хранением
  • 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 - безопасное удаление с возможностью восстановления
  • Умная синхронизация конфликтов - автоматическое разрешение между устройствами
  • Автоматическая очистка старых удаленных записей
  • Полная работа оффлайн - все функции доступны без интернета
  • Минимальные задержки интерфейса

🤖 ИИ Интеграция (Google Gemini)

  • Персональные 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 нужна только для синхронизации между устройствами.

Установка

  1. Клонируйте репозиторий
git clone https://github.com/yourusername/study-todo-app.git
cd study-todo-app
  1. Установите зависимости
flutter pub get
  1. Настройте Firebase (опционально, для облачной синхронизации)

Приложение работает без Firebase в анонимном режиме с локальным хранилищем. Настройка Firebase нужна только для:

  • Синхронизации данных между устройствами
  • Входа через Google аккаунт
  • Облачного бэкапа данных

Создание проекта:

  • Создайте проект в Firebase Console
  • Включите Firestore Database (начните в тестовом режиме)
  • Включите AuthenticationSign-in methodEmail/Password, Google и Anonymous

Android:

  • Добавьте Android приложение с package name com.example.studytodoapp
  • Скачайте google-services.json в папку android/app/

iOS:

  • Добавьте iOS приложение с Bundle ID com.example.studytodoapp
  • Скачайте GoogleService-Info.plist в папку ios/Runner/
  • Добавьте файл в Xcode проект

Web:

  • Добавьте Web приложение в Firebase
  • Скопируйте конфигурацию в web/index.html
  1. Настройте Gemini AI (опционально)

AI функции теперь настраиваются индивидуально каждым пользователем через приложение:

  • Откройте приложение и войдите в аккаунт
  • Перейдите на вкладку "Профиль"
  • Нажмите кнопку "Добавить AI ключ" или "Настроить AI"
  • Введите ваш API ключ от Google AI Studio
  • Теперь кнопка "✨ Улучшить с помощью AI" будет появляться в полях описания задач

Получение API ключа:

  1. Перейдите на ai.google.dev
  2. Нажмите "Get API key in Google AI Studio"
  3. Создайте новый API ключ
  4. Скопируйте ключ и добавьте его в приложении

💡 Примечание: AI функции работают только с личным API ключом каждого пользователя. Это обеспечивает приватность и безопасность данных.

  1. Запустите приложение
# Разработка с 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 конфигурационные файлы

🎯 Как использовать AI функции

Настройка AI ключа

  1. Войдите в аккаунт (Google или Email/Password)
  2. Перейдите на вкладку "Профиль и аналитика"
  3. Найдите кнопку "Добавить AI ключ" в правом нижнем углу карточки профиля
  4. Введите ваш Gemini API ключ и нажмите "Сохранить"

Использование улучшения текста

  1. Создавайте или редактируйте задачу
  2. Введите описание в поле "Описание"
  3. Нажмите кнопку "✨" справа от поля (появляется при наличии API ключа)
  4. Дождитесь обработки - AI автоматически улучшит ваш текст
  5. Сохраните задачу с улучшенным описанием

Что делает AI

  • ✅ Исправляет орфографические и грамматические ошибки
  • ✅ Улучшает структуру и читаемость текста
  • ✅ Делает описания более профессиональными
  • ✅ Сохраняет исходный смысл и содержание

📈 Управление данными

Статистика за всё время

  • Автоматический подсчет: Каждая выполненная задача увеличивает счетчик достижений
  • Сохранение при очистке: Статистика выполненных задач за всё время не удаляется при очистке данных
  • Отображение в аналитике: Показывается отдельной строкой "Выполнено за всё время" в статистике

Очистка данных

  1. Перейдите в профиль → Нажмите на иконку аккаунта в правом верхнем углу
  2. Выберите "Очистить данные" из выпадающего меню
  3. Подтвердите действие в диалоге (двойное подтверждение для безопасности)
  4. Дождитесь завершения - все задачи и предметы будут удалены
  5. Статистика достижений сохранится - счетчик выполненных задач за всё время останется

🔧 Команды разработчика

# Анализ кода
flutter analyze

# Запуск тестов
flutter test

# Сборка APK
flutter build apk

# Сборка для iOS
flutter build ios

# Сборка для Web
flutter build web

# Очистка проекта
flutter clean
flutter pub get

🔒 Безопасность и приватность

Проверено безопасности (Security Audit Passed)

  • Изолированные данные: Каждый пользователь видит только свои задачи и предметы
  • Firebase Security Rules: Настроены для защиты пользовательских данных
  • Защита от SQL-инъекций: Использование параметризованных запросов SQLite
  • Безопасная обработка паролей: Все пароли обрабатываются через Firebase Auth
  • Шифрование: Все данные передаются через HTTPS
  • Таймауты сетевых операций: Защита от зависания приложения
  • Правильная обработка ошибок: Специфические Firebase exception handlers
  • Анонимность: Поддержка анонимного входа для тестирования
  • Удаление данных: Возможность полного удаления аккаунта и данных
  • Селективная очистка: Отдельная функция очистки данных с сохранением достижений
  • Локальное хранение API ключей: AI ключи хранятся только у пользователя

🏗️ Архитектура

BLoC Pattern

Приложение использует BLoC паттерн для разделения бизнес-логики и UI:

  • AuthBloc: Управляет состоянием аутентификации
  • TasksBloc: Обрабатывает CRUD операции с задачами
  • SubjectsBloc: Управляет жизненным циклом предметов

Сервисы

  • Singleton паттерн для глобального доступа
  • Асинхронные операции с обработкой ошибок
  • Real-time обновления через Firebase streams

Модели данных

  • Immutable модели с методами копирования
  • JSON сериализация для Firebase
  • Type-safe операции с enum'ами

🤝 Участие в разработке

  1. Форкните репозиторий
  2. Создайте feature ветку (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📝 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для подробностей.

📞 Поддержка

Если у вас есть вопросы или проблемы:


Сделано с ❤️ для студентов всего мира

🚀 StudyToDo - управляй временем, достигай целей!

📱 Release Ready - Готово к продакшену с полным аудитом безопасности!

About

Мультиплатформенное приложение для ведения задач по учёбе и отслеживания дедлайнов.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •