Skip to content

Latest commit

 

History

History
200 lines (181 loc) · 13.6 KB

File metadata and controls

200 lines (181 loc) · 13.6 KB

License

Project Quest (Java Edition)

О проекте

Project Quest (Java Edition) - это многофункциональное Android-приложение, разработанное для повышения личной продуктивности и организации задач с использованием различных методологий тайм-менеджмента и элементов геймификации. Приложение является Java-версией, с сохранением и улучшением ключевых функций. Основная цель - предоставить пользователю гибкий и увлекательный инструмент для достижения целей, управления временем и развития полезных привычек.

Мы верим, что продуктивность не должна быть скучной! Интеграция игровых механик, таких как уровни, опыт, награды и кастомизация, призвана сделать процесс выполнения задач более мотивирующим и приятным.

Ключевые преимущества и особенности

  • Гибкое Управление Задачами:
    • Создание, редактирование и организация задач с описаниями, сроками выполнения и тегами.
    • Поддержка подзадач для декомпозиции крупных целей.
  • Календарное Планирование:
    • Интегрированный календарь для визуализации задач на день, неделю и месяц.
    • Удобная навигация по датам и месяцам.
    • Возможность переноса задач между датами.
  • Методологии Тайм-Менеджмента (Планируется/Частично реализовано):
    • Getting Things Done (GTD): Контексты, проекты, следующие действия.
    • Матрица Эйзенхауэра: Приоритезация задач по важности и срочности.
    • Eat The Frog: Выделение самой важной/сложной задачи дня.
    • Пользователь может выбирать и комбинировать подходы для разных рабочих пространств.
  • Техника Pomodoro:
    • Встроенный таймер Pomodoro с настраиваемыми интервалами работы и отдыха.
    • Связь сессий Pomodoro с конкретными задачами.
    • Звуковые уведомления и вибрация для сигнализации о завершении фаз.
    • Возможность выбора системных и пользовательских рингтонов.
  • Геймификация для Мотивации:
    • Уровни и Опыт (XP): Получение опыта за выполнение задач, Pomodoro-сессий и другие полезные действия. Повышение уровня открывает новые возможности или награды.
    • Монеты: Внутриигровая валюта, зарабатываемая за активность, которую можно тратить во внутриигровом магазине (в планах).
    • Ежедневные Награды и Стрики: Поощрение за регулярное использование приложения.
    • Значки (Badges): Достижения за выполнение определенных условий (например, стрик в 7 дней, выполнение X задач).
    • Испытания (Challenges): Специальные задания (ежедневные, еженедельные, одноразовые) с уникальными наградами.
    • Виртуальный Сад: Пользователь может выращивать виртуальные растения, ухаживая за ними (например, поливая за счет выполнения Pomodoro-сессий или ежедневного входа). Рост растения визуализирует прогресс.
    • Задачи-Сюрпризы: Небольшие неожиданные задания с быстрыми наградами.
  • Статистика и Аналитика:
    • Отслеживание выполненных задач, времени, потраченного на фокусировку (Pomodoro).
    • Графики продуктивности по дням недели, тренды выполнения задач, получения XP и монет.
    • Глобальная статистика и история активности пользователя.
  • Пользовательский Интерфейс:
    • Современный дизайн, основанный на Material 3.
    • Поддержка светлой и темной тем.
    • Возможность использования динамических цветов (Material You) на Android 12+.
    • Кастомизация аватара и имени пользователя.
  • Персонализация:
    • Настройка уведомлений.
    • Управление данными: очистка кэша, экспорт/импорт данных (в планах).
  • Архитектура и Технологии:
    • Java как основной язык программирования.
    • Clean Architecture (разделение на слои data, domain, presentation).
    • MVVM (Model-View-ViewModel) для слоя представления.
    • Hilt для внедрения зависимостей.
    • Room для локального хранения данных (SQLite).
    • Android Jetpack Libraries: Navigation Component, LiveData, ViewModel, DataStore (для настроек), WorkManager (для фоновых задач, если потребуется).
    • ListenableFuture (Guava) для асинхронных операций в data и domain слоях.
    • Lombok для уменьшения бойлерплейта в моделях данных.
    • Coil для загрузки изображений.
    • MPAndroidChart для отображения графиков статистики.
    • SLF4J с Logback-Android для гибкого и мощного логирования.

Структура проекта

Проект следует принципам Clean Architecture и разделен на следующие основные пакеты/модули (на примере Java-структуры):

com.example.projectquestonjava
├── app                   /
│   ├── MainActivity.java
│   ├── MainViewModel.java
│   └── MyApplication.java
│
├── approach              
│   ├── calendar
│   │   ├── data
│   │   │   ├── dao
│   │   │   ├── factories
│   │   │   ├── model       
│   │   │   └── repositories
│   │   ├── di
│   │   ├── domain
│   │   │   ├── factories
│   │   │   ├── model       
│   │   │   ├── repository
│   │   │   └── usecases
│   │   └── presentation
│   │       ├── screens    
│   │       ├── ui_parts    
│   │       └── viewmodels
│   ├── eatthefrog          
│   ├── eisenhower          
│   └── gtd                 
│
├── core                  
│   ├── commonUi            
│   ├── context_scope       
│   ├── data
│   │   ├── converters
│   │   ├── dao            
│   │   ├── database        
│   │   ├── factories       
│   │   ├── initializers    
│   │   ├── model          
│   │   ├── relations       
│   │   ├── repositories    
│   │   └── security        
│   ├── di                  
│   ├── domain
│   │   ├── factories      
│   │   ├── model           
│   │   ├── repository      
│   │   ├── security        
│   │   └── usecases        
│   ├── managers            
│   ├── navigation          
│   ├── priority_strategy   
│   ├── ui                  
│   └── utils               
│
├── feature               
│   ├── gamification
│   │   ├── data
│   │   │   ├── dao
│   │   │   ├── managers    
│   │   │   ├── model       
│   │   │   └── repository
│   │   ├── di
│   │   ├── domain
│   │   │   ├── model
│   │   │   ├── repository
│   │   │   └── usecases    
│   │   └── presentation
│   │       ├── adapters
│   │       ├── dialogs
│   │       ├── screens    
│   │       ├── ui_elements 
│   │       └── viewmodels
│   ├── pomodoro
│   │   ├── data
│   │   │   ├── dao
│   │   │   ├── managers   
│   │   │   ├── model       
│   │   │   ├── repository
│   │   │   └── service     
│   │   ├── di
│   │   ├── domain
│   │   │   ├── logic       
│   │   │   ├── model       
│   │   │   ├── repository
│   │   │   └── usecases    
│   │       ├── adapters
│   │       ├── controllers
│   │       ├── screens 
│   │       └── viewmodels
│   └── statistics
│       ├── data
│       │   ├── dao
│       │   ├── model
│       │   └── repository
│       ├── di
│       ├── domain
│       │   ├── model
│       │   └── repository
│       └── presentation
│           ├── screens 
│           └── viewmodel 
│
└── utils                
    └── dialogs             

Описание слоев:

  • Data Layer: Отвечает за получение и хранение данных. Включает DAO (Data Access Objects) для Room, модели данных для базы данных (entities), репозитории (реализации интерфейсов из domain layer), DataStore, сетевые вызовы (если будут).
  • Domain Layer: Содержит бизнес-логику приложения. Включает интерфейсы репозиториев, UseCase'ы (интеракторы), доменные модели (чистые Java/POJO объекты, не зависящие от Android SDK или деталей реализации data layer).
  • Presentation Layer: Отвечает за отображение данных пользователю и обработку пользовательского ввода. Включает Activities, Fragments, ViewModels, Adapters, кастомные View и элементы UI. Использует MVVM.

Начало работы

  1. Клонируйте репозиторий.
  2. Откройте проект в Android Studio (рекомендуется последняя стабильная версия).
  3. Дождитесь завершения сборки Gradle и синхронизации проекта.
  4. Запустите приложение на эмуляторе или физическом устройстве.

При первом запуске должны быть созданы и инициализированы тестовые данные для пользователя test@example.com, что позволит сразу начать использовать приложение.

Вклад в проект

Мы всегда рады новым идеям и помощи в разработке! Если вы хотите внести свой вклад:

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

Пожалуйста, убедитесь, что ваш код соответствует принятым в проекте стандартам и проходит все проверки.

Спасибо за ваш интерес к Project Quest! Мы надеемся, что он поможет вам стать более продуктивным и получать удовольствие от процесса.