A Pomodoro Server
Find a file
Sebastian Mark d2e34e84f8 refactor: move Clients map and mutex to handle_connections
- move Clients map definition to handle_connections.go
- move mutex definition to handle_connections.go
- remove unused import in client_commands.go

🤖
2024-10-20 20:51:21 +02:00
cmd/server feat: add CLI flags to app 2024-10-20 14:55:02 +02:00
internal refactor: move Clients map and mutex to handle_connections 2024-10-20 20:51:21 +02:00
pkg/models feat: add comments for configuration fields 2024-10-20 20:49:36 +02:00
Dockerfile feat: add Dockerfile for GoTomato 2024-10-19 17:13:15 +02:00
go.mod feat(server): restructure Pomodoro server into modular components 2024-10-19 16:49:09 +02:00
go.sum Genesis 2024-10-19 16:49:09 +02:00
GoTomato.go feat: (re)add GoTomato.go 2024-10-19 16:49:09 +02:00
index.html break: change the "stop" command to "reset" 2024-10-20 10:03:29 +02:00
README.md doc: update README with client commands and server messages 2024-10-20 19:26:14 +02:00

GoTomato

A pomodoro server written in Go

[[TOC]]

Installation

go install git.smsvc.net/pomodoro/GoTomato@latest

Usage

See GoTomato --help for Parameters

Client Commands and Server Messages

This section describes the WebSocket commands that clients can send to the Pomodoro server and the messages that the server sends to clients during a Pomodoro session.

Message Format

Both client commands (sent to the server) and server messages (sent to the client) use the JSON format. The structure of these messages are described in the sections below.

Client Commands

Clients communicate with the server by sending JSON-encoded commands. Each command must include a command field specifying the action to perform. Here are the available commands:

Command Action Example Sent by Client
start Starts a new Pomodoro session {"command": "start"}
pause Pauses the current session {"command": "pause"}
resume Resumes a paused session {"command": "resume"}
reset Stops and resets the current session {"command": "reset"}

Server Messages

The server sends JSON-encoded messages to all connected clients to update them on the current state of the Pomodoro session. These messages contain the following fields:

  • mode: Indicates the current phase of the Pomodoro session ("Work", "ShortBreak", "LongBreak", or "none" if no session is running).
  • session: The current session number (e.g., 1 for the first work session).
  • max_session: The total number of sessions for the current Pomodoro cycle (e.g., 4 if the cycle consists of 4 work/break sessions).
  • time_left: The remaining time for the current mode, in seconds (e.g., 900 for 15 minutes).
Message Type Sent by Server Example
Welcome Message Upon initial client connection {"mode": "none", "session": 0, "max_session": 0, "time_left": 0}
Session Update Periodically during a session {"mode": "Work", "session": 1, "max_session": 4, "time_left": 900}
Session End/Reset After session completes or is reset {"mode": "none", "session": 0, "max_session": 0, "time_left": 0}

Testing

docker run --rm -d --name pomodoro-client -v $PWD:/usr/share/nginx/html/ -p 8081:80 nginx
go run .

open http://localhost:8081