Code Monkey home page Code Monkey logo

tempo-android's Introduction

Tempo

This is my personal productivity app that is based on the Pomodoro technique.

Beware it is in a very, very early beta state.

Contributing

Although no PRs will be accepted at this time, please feel free to create issues or fork this with wanton abandon.

tempo-android's People

Contributors

sudosays avatar

Watchers

 avatar

tempo-android's Issues

Add testing

The project up until this point (commit: da36ced) lacks any proper testing suite: unit tests, integration tests, end-to-end tests etc.

This needs to be remedied retroactively and will probably cause a lot of refactoring in the process.

For testing to be considered comprehensive we're looking at:

  • Unit tests
  • Integration tests
  • Code coverage reports
  • Testing pipeline
  • CI testing (CircleCI)

Any development of new features should immediately follow the Test Driven Development cycle as suggested here

Move Flow system to background service

Describe the problem

The flow timer stops unexpectedly when over apps draw over it.

Steps to reproduce

  1. Add a task
  2. Start a flow session
  3. Open notifications tray or draw over

Context/Info

  • Device(s): Sony Experia Z, Huawei P20
  • Android version(s): 8 (Oreo), 9 (Pie)
  • App version(s): 0.2.0

Proposed solution

Move the flow logic into a foreground service that can be bound to.

App crash when selecting tasks

Describe the problem

The app crashes/exits when trying to rearrange the list by selecting tasks at the bottom of the list.

Steps to reproduce

  1. Add ~9 tasks
  2. Select task 9
  3. Press 'Done'
  4. App should crash

Context/info

  • OS ver: 9 (Pie)
  • App ver: 0.2.0

Subtasks

Allow for a task to contain one or more subtasks with their durations linked. This way a super task can be selected to be worked on at a given time and the flow view will only focus on that super task's subtasks.

Detect Settings Change and Prompt User

As mentioned in 30b1b5e, changes from the previous settings should be detected and unsaved settings should be communicated to the user.

One idea would be to use a flag that is set in onseekbar change listener that changes the color of the save settings button and also ensures a prompt on cancel? or on back button.

Usage analytics and statistics

Keep statistics on how many tasks have been completed per day and the total work hours put in per day.

From this reports can be generated, possibly heatmaps for which hours of the day are most productive.

Some key analytics include:

  • averages for flow sessions
  • longest flow session
  • average tasks completed per day/week/period
  • most productive hours
  • totals for tasks completed, hours focused, sessions completed

An idea for how this could be done is essentially logging "analytics events" with an EventType enum and then storing these events. Each event is timestamped.

Event types that can be implemented include:

  • task session start/stop
  • flow session start/stop
  • task complete

One issue I could forsee is logging the time spent when the session lengths can be changed in the settings.

Gantt Chart View

Adding a gantt chart view for ordering tasks in tempos perhaps? Or rather save it for the web app?

AddTask: Give user friendly drop-down list for durations

The duration is currently specified with the number of sessions, but this can be improved by giving a dropdown of how much time (roughly) the user wants to spend eg:

  • 25mins (1 session)
  • 50mins (2 sessions)
  • 1h15mins (3 sessions)

And so on. The code for the session number to time string is already present but needs to be implemented in a smart way.

Goal line

Adding a goal line will set a goal for the amount of tasks to complete in a given day (ending at midnight system time). this should log the position of the task right above it and stick to it or some other manner.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.