A console-based productivity app involving both To-Do Lists and Goal tracking

Overview

Overview

This is a console-based productivity app involving both To-Do Lists and Goal tracking. It allows users to create To-Dos, check them off, and filter the display between complete/incomplete items. It also allows for the creation of daily goals that the user can track their progress toward. The most unique feature, however, is the ability to set a goal for how many to-do list items the user wants to complete on a given day.

The purpose of writing this software is to become familiar with the Kotlin language's syntax and style, utilizing both functional and object-oriented programming paradigms. For example, the goals and todos are represented by classes inheriting from a parent class Task, while both are stored in encapsulated collections under subclasses of an abstract class ProductivityList. Meanwhile, the console menus are handled using Menu and MenuOperation classes, which accept and store anonymous functions to associate code to be executed with each menu item.

The latest feature developed is integration with Cloud Firestore as a means of cloud-based data storage. This (in theory) allows users to store updates to their todos and goals as edits are made.

Demonstration Video

Cloud Database

While Cloud Firestore does have libraries made specifically for the Kotlin language, they are available only as Android libraries, included with Android Jetpack. As such, using them within a Kotlin-only project - i.e. no Android or Android Studio involved - proved to be impossible (or too difficult to be worth it). Instead, I used the libraries made for Java. This, however, proved to come with endless difficulties of its own. Kotlin models have to be converted to Java classes for proper storage and retrieval, which caused issues such as completely empty data sets being returned from the database. Because of this and other issues, at this time the app can currently only write to the database - it cannot read from, update, or delete any documents in the database.

That being said, the structure is as such: users are stored as documents within a users collection. Each user has an array of ToDo items and Goals attached, as well as necessary metadata. This type of nested document database proved to be very useful for this type of data storage, since no complex relational tables need to be made, and everything can be simply stored in hierarchical format.

Development Environment

  • Java
  • Kotlin
  • IntelliJ IDEA 2021.3.2 (Ultimate Edition)
  • Cloud Firestore (for Java)
  • Firebase Admin SDK 8.1.0

Useful Websites

Future Work

Unimplemented Features

  • Deleting/updating tasks/goals
  • Updating the progress of count-based goals
  • Acknowledgement of completing all todos or all goals
  • Resetting daily goals
  • Reading, deleting, and updating records in the database
  • Completing the storage of all necessary data (e.g. Goals, GoalLists, etc.)

Features to Add

  • Weekly goals / enhanced scheduling
  • An Android app (!!)
You might also like...
Real time gps location based alarming system tracking the road accident and providing medical assitance plus concern from near by police station.
Real time gps location based alarming system tracking the road accident and providing medical assitance plus concern from near by police station.

Real time gps location based alarming system tracking the road accident and providing medical assitance plus concern from near by police station.

Based on Android + NodeMCU platform to achieve object detection and tracking, AI capabilities come from Google MLKit.
Based on Android + NodeMCU platform to achieve object detection and tracking, AI capabilities come from Google MLKit.

Based on Android + NodeMCU platform to achieve object detection and tracking, AI capabilities come from Google MLKit.

📱 AppListManager (Android Library) makes managing application and activity lists easy.
📱 AppListManager (Android Library) makes managing application and activity lists easy.

AppListManager (Android Library) AppListManager is easy to use Android library, which minimizes developing time when working on application or activit

一个简单的每日新闻速报/动画速报 mirai-console 插件
一个简单的每日新闻速报/动画速报 mirai-console 插件

Mirai News Reporter 一个简单的每日新闻速报/番剧速报 mirai-console 插件 项目地址: https://github.com/LinHeLurking/mirai-news-reporter 功能 爬取知乎的一个每日新闻页面, 以图片形式分享. 向机器人说 "今日新闻

A reliable android app that shows upcoming fixtures, updated league tables, and top goal scorers in a Premier League and French Ligue 1
A reliable android app that shows upcoming fixtures, updated league tables, and top goal scorers in a Premier League and French Ligue 1

RapidScore Screenshots Table of Contents Description Dependencies API Reference Lessons Learnt Contributing Roadmap Google Playstore License Author In

A transaction management android app which allows you to verify records from both parties before addition.
A transaction management android app which allows you to verify records from both parties before addition.

Transact - Transaction Management Application Description Whenever we lend money to some people, friends, colleagues, we need to keep track of it to r

React Native Stone SDK Implementation (Support for both Mobile and POS versions)

react-native-stone-pos Stone Android POS Native Module Installation Stone has a private packageCloud repository, so we need to have your token before

An Animated Scrolling View for React Native applications, supported on both iOS and Android

react-native-focused-scroll An Animated Scrolling View for React Native applications, supported on both iOS and Android Preview react-native-focus-scr

GOD - Goal of the day is the notes app which tracks your daily tasks, most important tasks & monthly goals
GOD - Goal of the day is the notes app which tracks your daily tasks, most important tasks & monthly goals

GOD - Goal of the day GOD - Goals of the day Problem Statement: People always face problems in finding their goals and keeping track over a period. Th

Owner
Joel Jossie
Software Engineering student at BYUI. Application Development Intern @Vanguard, June-August 2022.
Joel Jossie
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction ?? This is a small introduction video about Taskif

Vaibhav Jaiswal 101 Jan 4, 2023
TIRO - Time Is Running Out : Productivity app and widget for Android

TIRO-2022 TIRO - Time Is Running Out : Productivity app and widget for Android The purpose of this app is to let you know how much remaining time you

Alubecki 2 Aug 28, 2022
Productivity Note App utilizing Jetpack Compose

DailyDoc Productivity Note App utilizing Jetpack Compose Currently working on improving UI features and will be applying these directly to the main br

Bryan L 31 Dec 16, 2022
Daily Doc is a Productivity Note App utilizing Jetpack Compose

Daily Doc is a productivity app to help you keep track of your daily progress inspired by 100-day-challenges.

Bryan L 31 Dec 16, 2022
A productivity tracker app published on Google Play

producktivity-tracker A productivity tracker app published on Google Play. Includes Google AdMob and in-app-purchases to disable ads. This project was

null 1 Mar 9, 2022
This console based application calculates sales tax, import duty and provide a way to print the invoice

Sales Tax Problem This console based application calculates sales tax, import du

null 0 Dec 17, 2021
A minimalist but powerful productivity timer designed to keep you focused and free of distractions.

Goodtime A minimalist but powerful productivity timer designed to keep you focused and free of distractions. Alternate between focused work sessions a

Adrian Cotfas 692 Dec 27, 2022
Maxibon kata for Kotlin Developers. The main goal is to practice property based testing.

Kata Maxibon for Kotlin. We are here to practice property based testing. We are going to use KotlinTest to write our tests. We are going to practice p

Karumi 44 Oct 3, 2022
Project BlueWeather is an android app that lists the closest locations to you and shows the 7-day weather forecast for the location you select.

Project BLUEWEATHER Description Project BlueWeather is a weather forecast application for android. It lists the locations closest to you. It then prov

Burak Unutmaz 4 May 12, 2021
An android app that lists all planets in our solar system and brings some information about them.

SolarSystem This application was developed in Android Studio and uses Kotlin as programming language. In short, it is an app that lists all the planet

Dayon Oliveira 0 Nov 3, 2021