pomo

package module
v0.0.0-...-5375a1e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2024 License: MIT Imports: 2 Imported by: 0

README

pomo

pomo is a terminal-based pomodoro timer with task tracking, inspired by the commercial Pomotodo service.

Unlike Pomotodo, pomo is locally hosted. All data is stored in the ~/.pomo directory in human-readable YAML files.

Features

  • Task management
    • Create, edit, and delete tasks, including the task title, status (to do, doing, or done), tags, and optional notes.
    • Present tasks in a Kanban board with columns for each status.
    • Navigate through tasks using arrow keys.
    • Move tasks around using shift+arrow keys. Moving a ticket to the right sends it to the bottom of the next list. Moving it left moves it to the top of the previous list.
  • Pomodoro timer
    • User can start, cancel, or complete pomodoros.
    • Pomodoro and break timers count down automatically, and resume automatically when the app is closed and reopened.
    • Plays an alarm and displays a notification when a pomodoro is over.
    • After a Pomodoro is done, prompt the user to update their tasks to reflect what they worked on, and the status of each task at the end of the pomodoro.
    • After the user updates their tasks and completes the pomodoro, save the pomodoro to history, remove all completed tasks from the Done column, and start the break.
    • Automatically select a short break (5 minutes) or long break (15 minutes) based on how many pomodoros have been completed today.
    • User can start or cancel breaks.
    • Plays an alarm and display a notification when the break is over.
    • Doesn't start the next pomodoro until the user starts it.
    • Resume any running pomodoro or break timers if the user exits pomo and starts it again later.
  • Saves as you go: every pomodoro action or task change is saved to disk.

Installation

pomo requires Go 1.22 or later to install:

go install github.com/qualidafial/pomo/cmd/pomo

You can also build the application from the repository root:

make

Configuration

pomo may be configured by modifying ~/.pomo/config.yaml, which is automatically generated the first time it runs:

pomo:
    daily-goal: 8
timer:
    break: 5m
    long-break: 15m
    pomodoro: 25m

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Pomo

type Pomo struct {
	Start time.Time `yaml:"start,omitempty"`
	End   time.Time `yaml:"end,omitempty"`
	Tasks []Task    `yaml:"tasks"`
}

func (Pomo) MarshalYAML

func (p Pomo) MarshalYAML() (any, error)

func (*Pomo) UnmarshalYAML

func (p *Pomo) UnmarshalYAML(unmarshal func(any) error) error

type Status

type Status int
const (
	Todo Status = iota
	Doing
	Done
)

func ParseStatus

func ParseStatus(s string) (Status, error)

func (Status) String

func (s Status) String() string

type Task

type Task struct {
	Status    Status
	UpdatedAt time.Time
	Name      string
	Notes     string
}

func (Task) MarshalYAML

func (t Task) MarshalYAML() (any, error)

func (*Task) UnmarshalYAML

func (t *Task) UnmarshalYAML(unmarshal func(any) error) error

Directories

Path Synopsis
cmd
examples
Package timer provides a simple timeout component.
Package timer provides a simple timeout component.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL