Skip to content

Gamified productivity Android app built with Java. Features task management, Pomodoro timer, and RPG elements (XP, levels). Uses Clean Architecture, MVVM, Hilt, and Room Database.

License

Notifications You must be signed in to change notification settings

BUka228/ProjectQuestOnJava

Repository files navigation

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! Мы надеемся, что он поможет вам стать более продуктивным и получать удовольствие от процесса.

About

Gamified productivity Android app built with Java. Features task management, Pomodoro timer, and RPG elements (XP, levels). Uses Clean Architecture, MVVM, Hilt, and Room Database.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages