https://github.com/nikolajlauridsen/raspberrytimebuddy
A raspberry pi productivity tool
https://github.com/nikolajlauridsen/raspberrytimebuddy
flask-web iot pomodoro pomodoro-technique productivity raspberry-pi timer
Last synced: 2 months ago
JSON representation
A raspberry pi productivity tool
- Host: GitHub
- URL: https://github.com/nikolajlauridsen/raspberrytimebuddy
- Owner: nikolajlauridsen
- License: gpl-3.0
- Created: 2017-01-07T23:52:38.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-03-22T10:09:29.000Z (about 8 years ago)
- Last Synced: 2025-01-20T11:48:14.994Z (4 months ago)
- Topics: flask-web, iot, pomodoro, pomodoro-technique, productivity, raspberry-pi, timer
- Language: Python
- Homepage: https://nikolajlauridsen.github.io/RaspberryTimebuddy/
- Size: 6.29 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# TimeBuddy

## Project Background
TimeBuddy is built as a part of a school project, the given subject is
"On the Edge of Time", the general theme is that time is a shrinking commodity
and our task is to create a product that can somehow alleviate that.Considering how it's impossible to increase the amount of time available we
quickly agreed that a product that helps one increase productivity was the way
to go an we then started to develop the idea behind TimeBuddy.Having recently read about the Pomodoro Technique we wanted this to be the
core idea in TimeBuddy.## Core Idea
The idea of TimeBuddy is really two things:
1. A Pomodoro timer
2. An activity trackerEach idea will be further described in greater detail by its own.
But since this project basically needs to do two things it's build as a basis
platform with hardware wise a 16x2 LCD screen, two LEDs and a buzzer for output and
four buttons (start, stop, back, forward) for input.
Software wise TimeBuddy is just a simple program which initializes the
input and output, then creates the different program objects with said
input/output and then runs the program objects main method, but this is
explained in greater detail in the TimeBuddy README file.### Pomodoro Timer
#### Description of the Pomodoro Technique from wikipedia (15/2 - 17)
The Pomodoro Technique is a time management method developed by Francesco Cirillo in the late 1980s. The technique uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks. These intervals are named pomodoros, the plural in English of the Italian word pomodoro (tomato), after the tomato-shaped kitchen timer that Cirillo used as a university student.##### TL;DR
The Pomodoro Technique is:1. Select a task
1. Start a 25 minute timer
2. Work on said task
3. When the timer rings
* Make a mark
* Stop working
* Start a 5 minute timer
5. Have a break
6. When the break timer rings go to step 2
7. Once you have 4 marks
* Have a longer break (30 minutes)
* Go to step 2##### How it helps
This technique helps your productivity since it:
* Forces you to actively decide what task to accomplish
* Gives you small breaks for reflection
* Gives you longer breaks, this feels both feels like a reward, but also keeps you
from burning out### Activity Tracker
Activity tracker might seem like something out of some creepy sci-fi show
but sometimes it's nice to know how much time you spent on certain activities,
especially if you're trying to optimize your time.And activity tracker does just that, when starting an Activity Tracker session
you will be asked to choose an activity from your list of activities, once the
timer is stopped the time spent on the activity will be logged in a database
on the restful API.The web UI is then used to display a summary of your activities and time
spent on each one of them, the web UI is also used to manage your activities
and pomodoro tasks.Activity Tracker also bleeds into the Pomodoro timer, and every pomodoro
session is logged as well and displayed on the web UI.## How it works
### TimeBuddy consists of 2 parts
1. A flask project hosting a web UI and restful API
2. The TimeBuddy program.For specific documentation on either of these parts see the README in their
respective folders (Coming soon!)### Broad strokes
The TimeBuddy platform can best be explained with the following wannabe UML
diagram
Please note that arrows above the line signal information flow, and arrows
above the line signal how the classes are importedStarting from above the user interacts with TimeBuddy through both the Web UI
generated by the Restful API, implementing a google calender, and through the
physical screen, buttons and notifying tools (LEDs and buzzer).
TimeBuddy only communicate with the restful API and google calendar through
the TimeBuddy program classes, which in turn communicate with the necessary
APIs through abstracted helper classes called EventCreator and ApiHandler.
This means that TimeBuddy is just the launcher program which uses the physical
inputs to let a user choose and run a program class, which in turns makes it
really easy to expand TimeBuddy, simple write a new program object and add it
to the list in the \_\_main\_\_.py file in [the TimeBuddy folder](https://github.com/nikolajlauridsen/RaspberryTimebuddy/tree/master/TimeBuddy),
and then of course update the restful api as nececary.# Dependencies
* Flask
* requests
* google-api-python-client
* RPi.GPIO
* sqlite3
* json
* threading