Task Manager feat. real-time competitive system and user engagement

Overview

Dira

CodeFactor codebeat badge CI Build and Test

Что из себя представляет Dira?

Android-приложение Directa (сокр. Dira) - это планер, который способен улучшить жизнь пользователей. Он позволяет структурировать их ежедневные задачи и поддерживать уровень их мотивации за счёт соревновательного духа. Именно наличие соревновательной системы выделяет наш проект на фоне других.

Как же это выглядит?

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

Для чего нужны очки?

Очки пользователя позволяют ему участвовать в системе рейтингов и лиг, которые позволяют соревноваться с другими пользователями, улучшать свои результаты и повышать заинтересованность в достижении целей.

Что в итоге?

Таким образом, важнейшей задачей Dir-ы является мотивирование пользователей на выполнение ежедневных дел, благодаря чему они развивают свои soft-skills. Мы верим, что наше приложение поможет людям, которые не могут самостоятельно планировать свой распорядок дня и не обладают самодисциплиной, стать лучшей версией себя, а те, кто уже обладает достаточно развитыми soft-skills, получат дополнительную мотивацию и дополнительный интерес развиваться дальше.

Техническая характеристика проекта

Проект состоит из Android-приложения, серверной части (ссылка на репозиторий) и сторонних сервисов, добавляющих функционал в приложение.

  • Стэк технологий
    • Kotlin Coroutines - выполнение асинхронных операций для работы с сетью
    • Retrofit - быстрый и удобный доступ к API со стороны клиента
    • Spring Boot Framework - web-приложение развёрнутое на хостинге (ссылка на сервер) Heroku
    • Swagger2 - автоматическое создание документации API (ссылка на документацию)
    • Google Firebase Firestore - серверная документоориентированная NoSql база данных
    • Firebase Auth - аутенфикация пользователей
    • SharedPreferences - хранение временных данных пользователя на устройстве
    • Android Jetpack
      • Fragment - использование нескольких экранов в рамках одной активности
      • Navigation - навигация между фрагментами в рамках одной активности и создание вложенных контейнеров навигации
      • Navigation SafeArgs Plugin - безопасная передача данных между фрагментами
      • Lifecycle - обработка событий на основе жизненного цикла приложения
      • ViewModel - хранение и использование данных относящихся к UI в привязке к жизненному циклу представления
      • RecyclerView - представление данных в виде интерактивного списка
      • ViewBinding - современный способ доступа к элементам разметки
  • Современная архитектура
    • Многоуровневая архитектура
    • Паттерн проектирования MVVM на стороне клиента
    • Clean Architecture и UseCases
    • Spring MVС на стороне сервера
    • Koin - Инъекция зависимостей
    • JUnit4 и Espresso - тестирование
  • Continious Integration
    • GitHub Actions - сборка и анализ артефакта приложения с помощью Gradle
    • Detekt - статический анализатор кода
    • Автоматический анализ кода с помощью сторонних сервисов (Codebeat, Codefactor)
    • Firebase Analytics и Firebase Crashlytics - отслеживание состояния приложения и сбор статистики в реальном времени
  • UI
    • Material design
    • MaterialUI - Элементы навигации Bottom Navigation и Navigation Drawer из NavigationUI
    • TapTargetView library - интерактивные подсказки

Базовая структура

Слои приложения

Структура интерфейса

Скриншоты работы приложения

License

MIT License

Copyright (c) 2022 Konstantin Albatov

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Comments
  • Leagues

    Leagues

    Why are there only 5 leagues in the app? It doesn't seem fair to me to people of the "diamond" rank, because in one league are those who do absolutely all their tasks perfectly, and those who do much less. It shouldn't be that way, because they are not comparable!

    opened by CondInPunz 0
  • Broken exit

    Broken exit

    I'm sick and tired of having to log back into my account every single time I log out of the app and then log back in! When will you get the account remembering feature?

    opened by CondInPunz 0
  • Interface!

    Interface!

    Help me understand the interface! I don't understand what to do! I don't understand how to move up in the rankings, how often the leagues are updated and whether they are updated at all, how to add a task and how to delete it! It would be so much more convenient if there was a button in the app that gave out information about a certain section of the app!

    opened by CondInPunz 0
  • Stats

    Stats

    Good afternoon, I have a question. I'd like to see my stats for all the time I've spent in this app: for example, I'd like to know how many points I've gotten in total. Will this feature be added?

    opened by CondInPunz 0
  • Unfair advantages

    Unfair advantages

    Hi! I would like to ask a question. How are you going to deal with people who don't do any assignments, but mark them as completed? It annoys me that I can't get into the diamond league because of them!

    opened by CondInPunz 0
Owner
Konstantin Albatov
Nanomachines, son
Konstantin Albatov
A simple ToDo Task Manager App made in Kotlin using Room DataBase.

ToDo List App ?? About A simple To-Do List Management App that helps you get things done. Built with Kotlin, it helps the user to add their task. User

Tanya Gupta 17 Dec 12, 2022
FirestoreCleanArchitectureApp is an app built with Kotlin and Firestore that displays data in real-time using the MVVM Architecture Pattern. For the UI it uses Jetpack Compose, Android's modern toolkit for building native UI.

FirestoreCleanArchitectureApp FirestoreCleanArchitectureApp is an app built with Kotlin and Cloud Firestore that displays data in real-time using Andr

Alex 66 Dec 15, 2022
An Android app that scans images or human faces in real time and detects whether the mask is worn or not, with the ability to set an audible alert

Swift Mask Real time face mask detection Brief overview Swift Mask scans images or human faces in real time and detects whether the mask is worn or no

Giorgio Cantoni 4 Sep 22, 2022
Android Project to find FatMax in real time with a Polar H10

FatMaxxer According to recent research (see below) the FatMaxxer Android app may help you to exercise at the optimum effort level for fat burning, mea

null 37 Dec 28, 2022
The app features real-time chatting between different users on daily topics

DailyDiscuss The app features real-time chatting between different users on daily topics. The app comes with 2 types of user interface: Admin who crea

null 1 Dec 20, 2021
Online real-time android quiz game

KQuiz Описание проекта Проект представляет собой мобильное приложение, выполнящее роль платформы для создания, поиска, организации и выполнения онлайн

Konstantin Albatov 1 Sep 1, 2022
Map-vs-list-comparator - The project compares the time needed to find a given element in a map vs the time needed to find a given element in a list.

Map vs List Comparator The project compares the time needed to find a given element in a map vs the time needed to find a given element in a list. To

null 0 Jan 4, 2022
A TODO list app with location reminders that remind the user to do something when the user is at a specific location

Project Title Location Reminder Getting Started A TODO list app with location reminders that remind the user to do something when the user is at a spe

Raghav Saboo 0 Dec 5, 2021
Take beautiful markdown notes and stay organized with task lists.

Take beautiful markdown notes whenever you feel inspired. Place them in notebooks and tag them accordingly. Stay organized by making task lists, set reminders and keep everything in one place by attaching related files.

null 412 Dec 27, 2022
Meetups microservice, applying tactical DDD building blocks and in a real example.

Meetups microservice: Applying tactical DDD Description This project is a practical example to understand the tactical patterns/building-blocks that d

Albert Llousas Ortiz 6 Aug 2, 2022
A small application for working with the Github API, made as a practical task. GeekBrains, course of study: Popular libraries: RxJava 2, Dagger 2, Moxie.

GeekBrains_Course_AndroidOnKotlin_HW_My_Movie Домашнее задание к занятию №2-6 Студента GeekBrains Веремеенко Дмитрия Факультет: Android-разработки Кур

Dmitriy 3 Aug 24, 2021
Solution for task 5 on Spring Boot https://t.me/try2py/197

IouRestService (Spring Boot Application) Решение задачи 5 https://t.me/try2py/197 Условие задачи: Четверо соседей по комнате имеют привычку занимать д

Fomin Sergei 1 Nov 22, 2021
Netguru Android: Recruitment CR task

Netguru Android: Recruitment CR task

null 0 Oct 7, 2021
Test task from AppSelect company

Test task from AppSelect company

Chapaev Anton 0 Nov 22, 2021
Netguru Android: Recruitment CR task

Netguru Android: Recruitment CR task Prerequisites Things that you need to have before starting working with a project. Your git provider (Github, Git

Owl 0 Nov 29, 2021
A Simple Task Template With Kotlin

Tarefas - Kotlin Download do aplicativo Tecnologia MVVM Retrofit SQLite Navigation Fingerprint - Autenticação biométrica Tela de Login Tela de cadastr

Erick Weigner Freitas Cunha 1 Mar 3, 2022
Netguru Android: Recruitment CR task

Netguru Android: Recruitment CR task Prerequisites Things that you need to have

keyur thumar 0 Dec 18, 2021
AppToDo is a simple Android project that performs the basic database CRUD operations that creates a todo task list

AppToDo is a simple Android project that performs the basic database CRUD operations that creates a todo task list

Rafiul Hye 1 Mar 13, 2022