Why?

Like many, I had to work remotely starting with the pandemic, and had difficulty saying focused. I turned to Pomodoro, but it felt artificial and self-imposed. Pomodachi hopes to solve that in a few ways.


User Experience (GIFS OF USE ON GITHUB)
On boot we see Pomo, a small clock in the bottom, and a food count at the top. Press either button alone to feed Pomo.

When you run out of food, Pomo will need to go exploring for new food. Press and hold both buttons down to start a Pomodoro session, Pomo will leave to search for food until break time where Pomo will return with a suggested break activity. 

Press either button to start the break, and then again when the break ends to start the next leg of the Pomodoro and so on until all legs are completed to get the session reward.

Based on a configurable daily eating rate, Pomo will need food to survive. Fall behind your goals and low on food? If Pomo is very hungry, it will feed a multiplier to restore health so you will always be able to recover from dips in productivity.

TIP: If the key buttons are lit up, holding both down will move you to the next phase.

Licenses
* Code is by droxpopuli under the MIT Licence.  
* Runtime and Library is by Adafruit under the MIT Licence.  
* Art and Audio is by droxpopuli, under CC BY 4.0.  
* Enclosure is a modification of the PyPortal Retro Cases from Adafruit, edits  by droxpopuli, both under CC BY 4.0.

Roadmap

Immediate
* Persistent Storage to hold state between boots.
* Total Refactor out of this Prototype/Proof of Concept Code
* Implement a "first boot" to allow time setting from the main file itself.

Ideas Going Forward
* Setting Time and other settings in runtime. Integrate with first boot.
* Increase Tactile Response of setting the timer with a haptic motor.
* Portable Enclosure
* Implement preferred work times where Pomo reminds the user to start a set.
* Create more virtual pet style features such as development, and growth.
* More Virtual Pet interactions (make use of the accelerometer, the touch analog connections?)

Configuration:
As of now all configuration is a set of constants at the top of the python file but configurable is:

ConfigInfodefault
length_of_legHow long a leg of a session is in minutes20
length_of_breakHow long breaks are in minutes5
legs_in_sessionNumber of legs in a Pomodoro session4
food_for_legFood gained in each leg of a Pomodoro1
food_for_sessionFood gained on completion of a full Pomodoro set5
session_rewardsAutomatically calculated total food in a session<N/A>
eating_rate[day]Per day full Pomodoro goal(0, 1, 2, 2, 2, 0, 0)
difficultyHow many session rewards hungry before pomo runs away
7
hunger_multiplierIf hunger is negative, a multiplier to allow for catching up3