A cross-platform todo application with quick-note hotkey support and REST API.
Godo combines three powerful features:
- A global hotkey that triggers a lightweight graphical popup for instantly capturing thoughts and tasks
- A full-featured graphical interface for detailed todo management
- A REST API for programmatic task management and integration
The quick-note feature uses a minimal graphical window that appears when you press the hotkey - type your note, hit enter, and it disappears. The main todo management interface provides efficient task organization with a clean, modern design. The REST API allows for integration with other tools and services.
- Cross-platform support
- Windows: Full support with system tray integration
- Linux: Full support (except system tray)
- macOS: Coming soon
- Instant note capture with global hotkey
- Press hotkey → Graphical popup appears
- Type note → Press enter → Window disappears
- Zero-friction task capture with minimal visual interruption
- Robust hotkey lifecycle management
- Proper cleanup and resource management
- Graphical todo management interface
- Organize and manage tasks
- Mark tasks as complete
- Delete tasks when done
- REST API
- Full CRUD operations for tasks
- JSON responses
- Health check endpoint
- Proper error handling
- Robust storage system
- SQLite-based persistence with comprehensive validation
- Interface segregation (TaskReader, TaskWriter, TaskStore)
- Transaction support with proper rollback
- Connection pooling and prepared statements
- Thread-safe operations with proper concurrency
- Snapshot support for testing
- Prevents data inconsistencies (empty IDs, duplicates)
- Connection state management
- Structured error handling
- Automated migrations
- High test coverage (80%+)
- Robust logging system
- Structured logging with multiple implementations
- Test-friendly logging for better test output
- Comprehensive operation tracking
- Clean abstraction for easy customization
- Comprehensive testing
- Unit tests with high coverage
- Integration tests for critical paths
- Platform-specific feature testing
- Error path and edge case coverage
- Resource cleanup verification
- Component lifecycle testing
- Mock implementations for reliable testing
- Automated builds and releases
- GitHub Actions CI/CD pipeline
- Cross-platform binary releases
- Docker support for development and testing
- Built with Fyne toolkit for native look and feel
All endpoints return JSON responses. The base URL is http://localhost:8080
.
GET /health
Response: {"status": "ok"}
- List all tasks:
GET /api/v1/tasks
- Create task:
POST /api/v1/tasks
- Update task:
PUT /api/v1/tasks/{id}
- Delete task:
DELETE /api/v1/tasks/{id}
Example using HTTPie:
# List tasks
http :8080/api/v1/tasks
# Create task
http POST :8080/api/v1/tasks title="Buy groceries" description="Milk, bread, eggs"
# Update task
http PUT :8080/api/v1/tasks/{id} title="Updated title" description="New description"
# Delete task
http DELETE :8080/api/v1/tasks/{id}
- Go 1.23 or higher
- SQLite3
- MinGW-w64 GCC (for Windows users)
- Recommended version: MinGW-w64 GCC 14.2.0 or later
- Choose the appropriate version based on your system architecture (x86_64 or i686)
- Installation steps:
- Download the appropriate version (e.g., x86_64-14.2.0-release-posix-seh-ucrt-rt_v12-rev0.7z)
- Extract to C:\mingw64 (or your preferred location)
- Add C:\mingw64\bin to your system's PATH environment variable
- Verify installation by running
gcc --version
in Command Prompt
- Task (task runner)
# Install using Chocolatey choco install go-task
For Windows developers:
- GNU diffutils (required for code linting)
# Install using Chocolatey choco install diffutils # Add to PATH (in PowerShell) $env:PATH += ";C:\ProgramData\chocolatey\lib\diffutils\tools\bin" refreshenv
- This project uses CGO dependencies (specifically
golang.design/x/hotkey
) - Do not use
go mod vendor
as it may break CGO dependencies - Always use
go mod tidy
to manage dependencies
- Clone the repository
git clone https://github.com/jonesrussell/godo.git
cd godo
- Build the application
# For Windows
task build:windows
# For Linux
task build:linux
# For Linux using Docker
task build:linux:docker
- Run tests
# Run tests for current platform
task test
# Run tests in Docker
task test:linux:docker
- Run linting
# Run linting for current platform
task lint
# Run linting in Docker
task lint:linux:docker
Default hotkey: Ctrl+Shift+N
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to all contributors
- Inspired by the need for a simple, efficient todo system