Giter Club home page Giter Club logo

goodtime's Introduction

Build Status Crowdin

Goodtime

Get it on Google Play Get it on F-Droid

A minimalist but powerful productivity timer designed to keep you focused and free of distractions.
Alternate between focused work sessions and short breaks, all handled by the app.
Get rid of procrastination and improve your time management!

โณ split your work into focused sessions and then reward yourself with a break
โ˜• after multiple work sessions, take a longer break

Features

  • No ads
  • No tracking or personal data collection
  • Free & Open Source
  • Lightweight: ~2 MB download size
  • Battery friendly
  • Configurable timer
  • Pause, skip or add 60 seconds
  • Long breaks after a number of completed work sessions
  • Detailed statistics
  • AMOLED-friendly user interface
  • Immersive fullscreen mode
  • Keep the screen on
  • Custom notification sounds
  • Auto start work or break without user interaction
  • Disable sound and Wi-Fi connection during the work sessions
  • Colored labels
  • Timer styles
  • Daily reminder
  • Manually add sessions
  • Edit completed sessions
  • Backup export and import
  • Export statistics to CSV
  • Screensaver mode
  • Themes
  • Separate notification sound for work and break
  • Insistent notifications

Translations

You can help translate or improve existing translations at Crowdin. Thank you!

Trouble with Goodtime getting killed by Android?

Different phone OEMs (phone vendors) have an aggressive take towards apps that rely on background work and alarms to save some battery life. It is recommended that you disable the battery optimization for this app in order to get accurate alarms. In the worst case, if you still have issues, try to keep the phone plugged in and/or the screen on while working.

Read more about this topic on www.dontkillmyapp.com

Suggestions, questions, contact

For any suggestions or questions, please contact me and I'll be glad to help!

You may also browse the issues to see if your question or request already exists and open a new issue if necessary.

Licence

Goodtime is free and open source software, licensed under the Apache License, Version 2.0. Copyright 2016-2019 Adrian Cotfas.

goodtime's People

Contributors

4yn avatar adrcotfas avatar audkar avatar axelsimon avatar easyvector avatar etylermoss avatar fdw avatar koiuo avatar matteodelabre avatar michiwieland avatar pierre-si avatar revealedsouleven avatar rubenvanerk avatar spagy avatar tacothedank avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goodtime's Issues

fix Android 7.0 SecurityException

Stack trace:

java.lang.SecurityException: Not allowed to change Do Not Disturb state
    at android.os.Parcel.readException(Parcel.java:1683)
    at android.os.Parcel.readException(Parcel.java:1636)
    at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:962)
    at android.media.AudioManager.setRingerMode(AudioManager.java:1022)
    at com.apps.adrcotfas.goodtime.MainActivity.A(Unknown Source)
    at com.apps.adrcotfas.goodtime.MainActivity.a(Unknown Source)
    at com.apps.adrcotfas.goodtime.MainActivity.c(Unknown Source)
    at com.apps.adrcotfas.goodtime.MainActivity.a(Unknown Source)
    at com.apps.adrcotfas.goodtime.e.onClick(Unknown Source)
    at android.view.View.performClick(View.java:5609)
    at android.view.View$PerformClick.run(View.java:22259)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

update Google Play Store page

  • add new screenshots and video according to the recent version
  • add localized screenshots for the translated versions

Add the possibility to label a session

Many other pomodoro apps enable the user to enter a task for each session. The main idea is that you can later check how many pomodoro sessions you spent for each task - for example, if you spent more time coding or writing documentation.

I would like a similar feature for Goodtime as an enhancement of the session counter.

long break bug

Workflow:

  • run work sessions until the break becomes long
  • manually stop the long break during it's progress
  • continue with a work session
  • the following break will also be long because it wasn't reset

Add stats page

As a user I would like to see stats about how many timers I have completed during the past x days

A simple stats view with a line chart would go a long way for this.
I understand that this is not essential but it would be a great addition to the experience.

IMO The best place for this would be by tapping the counter. This would take you to the stats page where you can look at the stats and also reset the counter.

I will have a go at implementing this but it could take some time as I am not familiar with the project.

On first run the product tour doesn't take up the full screen

Observed behaviour:
photo

The first time the app is first run it shows the product tour. The app is fullscreen. The notification bar isn't visible but the product tour doesn't take up the space where the notification bar would be. Instead, the top of the timer activity is visible.

Once the product tour has been dismissed the app leaves fullscreen and the timer activity shrinks to its normal size.

Desired behaviour:
Either the app shouldn't enter fullscreen mode in the first place or the app should enter fullscreen mode and the activity tour should take up all of the available space.

I can achieve the first behaviour by removing the line in the product tour activity that sets the app to full screen.

I'm not sure how to make the product tour work in fullscreen. If the first behaviour is acceptable then I'll submit a pull request. Otherwise I'd be happy to have a bit of a dig but I'm not really sure what I'm doing.

Notification sound is going thru speaker

There's a sound notification thru the speaker even though headphones are plugged in and notification sound is set to "Silent" in the settings.
The device is also set as prioritary notifications only (Goodtime is not set as prioritary) and it also still pass thru the speaker.

It would be great to have other way to be notified when working with people around you that you don't want to disturb.

Any ideas of why this is happening?

long break not working

After the work sessions before the long break are done, the break will not be a long one for some reason.
I'll investigate.

Phone starts playing music out loud after break/work notification

While listening to music through headphones , when the app notifies the start of a work/break session, the music being played starts being played through headphones and speakers. Music app used is Google Play Music. The same problem doesn't exist when using Bluetooth headphones. It's possible this may be similar to a duplicate issue however it's not just the notification sound that starts playing but the music as well (at least until I pause then play the music again), I would be very grateful if this bug gets fixed.
Great work with the rest of the app, it helps me a lot.

Make notifications actionable

The notifications for "session in progress" and "break in progress" should have actionable buttons, just like the GUI, i.e. the work session notification should have buttons for "stop" and "pause", and the break notification should be able to "stop".

This makes the notifications actually useful, instead of just being a reminder.

Implement dialogs as notifications

When the timer is up, the user is asked via a dialog if she wants to continue or stop. Is there a reason why it is implemented as a dialog and not as a regular notification?

If it were done with a notificiation, we could easily implement vibration, sound and LEDs (#16) with it (setVibrate, setSound and setLights, respectively), instead of doing it separately by hand. Besides, it makes more sense from the user's point of view if this is an actionable notification that can pop up instead of making the whole MainActivity appear with the dialog on top.

Add tests

Unfortunately, Goodtime has no tests. This makes code changes much more challenging than it needs to be (as I found out the hard way ;)).
It would be very useful to have automated unit and functional tests. A CI-infrastructure with Travis is already in place, so all we need are tests.

Timer should run as separate service

I often use my phone for tasks while working, which means that the Goodtime app winds up in the background and Android sometimes decides to pause it. (To reproduce this consistently, enable Settings > Developer options > Don't keep activities.) This means that I'll sometimes notice half an hour later that there's still 15 minutes left of a 25-minute session.

I tried to fix this myself, but I got confused trying to understand how the preferences are set up. Is there a particular reason that some of the preferences (e.g. mSessionTime, mBreakTime, mDisableWifi) are stored in variables and saved into the bundle instead of using mPref.get*() each time they're needed?

Add 'Disable Mobile Data' to settings

At the moment there's a 'Disable Wi-Fi' option in the settings. I assume this is so that the phone doesn't receive internet notifications during work sessions. If this is the case then it would make sense to add an option to disable mobile data. Otherwise, it seems likely that, in a lot of cases, disabling wifi will just enable mobile data instead.

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.