Skip to content

CSC207-2022F-UofT/Kronos

Repository files navigation

Kronos symbol

KRONOS

Description

Named after the Titan of Time, ‘Kronos’ is a great tool for planning and managing your schedule. You can efficiently organize tasks and track habits. It also comes with a Pomodoro Timer.

Motivation

As students, we have to balance and keep track of various things at the same time. Hence, we decided to create a Time-management system based on our personal experiences and needs.

Features

  • Account Creation and Login
  • Habit Creation and Tracking
  • Task and Category Creation
  • Pomodoro Timer
  • User Habits Visualization

How to Use

The user needs to have an account on the system to be able to access the features. In case the user has an account, they can log in.

Logging in leads to the Menu page which has options for the features: Habits, Tasks, Categories, Data Visualization and Timer. The user can then choose any of them and they will be led to the corresponding page.

NOTICE: The UI for the features are not currently connected properly to the main UI, so the user needs to run the following files for each feature:

  • MainUI : User feature
  • HabitProfileScreen : Habit Feature
  • ToDoListMain : Category and Tasks Features (has makeshift user data)
  • TimerScreen : Tomato Timer Feature
  • Database Visualization Feature has no UI, database is mostly backend

Graphical User Interface

1. Feature: User

a. User Login Screen

front page

b. User SignUp Screen

sign up

c. Menu Page

home page

2. Feature: Habit

a. Habit Profile Screen

habit profile

b. Habit Creation Screen

habit creation

c. Habit Edit Screen

habit edit

d. Habit Track Screen

habit track

3. & 4. Features: Task and Category

a. To-Do List Screen

To Do List View

b. Task Creation Screen

Create Task

c. Task Edit Screen

Edit Task

d. Category Creation Screen

Create Category

e. Category Edit Screen

Edit Category

5. Feature: Tomato Timer

a. Timer Start Screen

timer

b. Set Timer

Set Timer

c. Start Timer

Start Timer

d.Rest Timer Running Screen

Rest Timer Running

6. Feature: Data Visualization

a. Weekly Visualization Screen

daily

b. Monthly Visualization Screen

month

c. Yearly Visualization Screen

year

Design Pattern

The design patterns implemented in the project are:

Façade

  • The use cases are implemented using the Façade design pattern.

Private Data Class

  • The entities are implementing using the Private Data Class design pattern. This is to reduce coupling and limit user access to the core of the system.

SOLID Principles

We ensured that the project followed all the SOLID principles.

Single Responsibility Principle (SRP)

  • Each use case is specifically responsible for one function, ensuring the Single Responsibility Principle. We are

Open - Closed Principle

  • We used interfaces in the use cases which are open to extension but not modification.

Liskov Subsitution Principle

  • We ensured that that the principle was not violated. Application behaviour does not depend on which subtypes it uses.

Interface Segregation Principle

  • We ensured that no classes were forced to implement or use interfaces they did not need.

Dependency Inversion Principle

  • It was implemented by the User use cases.

MVP

The project mainly follows the MVP model. However, to ensure clean architecture, we implemented controllers and presenters separately.

GitHub Features

The GitHub features used in project are:

  • Issues
  • Pull Requests
  • Action
  • License

Test Coverage

  • The test coverage is 80%.
  • We have tested the entities, use cases, controllers and database.
  • We did not test UIs because we though the way to ensure its correctness is to check if it runs correctly and fulfils its function.
  • We partially tested controllers and presenters.

Future Plans

Provide more functionalities:

  • Our initial plan for this project was too ambitious as we only had a limited time. We didn't realize this until we implemented it. During the implementation, we removed some features mentioned in our plan because implementing these features can be very complicated, and we don't know how to make things work for some of them.

Improve test coverage:

  • We would use Mockito or a property-based testing library to add more unit tests to improve the test coverage of our project.

Improve UI:

  • Currently, text, frame sizes, and colors are fixed in our UI. Users with more limited sensory abilities may have different preferences that aren't accounted for. Also, the UI is very limited and undynamic. We need to make it more interactive and user-friendly.

Improve and add more accessibility features :

  • Currently, our program is inaccessible to some groups of people. For example, our program does not accommodate blind people as we did not have functions such as automatic reading and cursor navigation. We can add these to our program to make it more accessible to blind people.

About

One stop shop for your time, task and habit management needs, implementing well-researched productivity tehniques and data visualization to help you progress and marvel at how fast you've grown!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages