GoTask is a powerful command-line task management tool built in Go, designed to help you efficiently manage your tasks with features like priority settings, tagging, time tracking, and more.
- Task Management: Create, update, and delete tasks
- Time Tracking: Set start and end times for tasks
- Priority System: Assign priorities to tasks
- Tagging System: Organize tasks with tags
- Notes: Add detailed notes to tasks
- Filtering: Filter tasks by various criteria
- SQLite Storage: Reliable local data storage
gotask/
├── configs/ # Configuration files
│ └── config.yaml # Main configuration
├── deployments/ # Deployment configurations
│ └── docker-compose.yml
├── internal/ # Private application code
│ ├── app/ # Main application logic
│ ├── cobra/ # CLI commands and handlers
│ ├── config/ # Configuration management
│ ├── service/ # Business logic services
│ ├── sqlite/ # Database layer
│ └── types/ # Common types and interfaces
├── pkg/ # Public packages
├── images/ # Project screenshots/demos
└── Makefile # Build and development commands
- Go 1.22.5 or higher
- SQLite3
- Make (optional, for using Makefile commands)
# Clone the repository
git clone https://github.com/EvoSched/gotask.git
cd gotask
# Build the project
make build
# Or using Go directly
go build
# Build and run using Docker Compose
docker-compose up --build
- Add a new task:
gotask add "Complete documentation" +docs @tomorrow !3
- List all tasks:
gotask list
- Mark task as done:
gotask done 1
- Add a note to a task:
gotask note 1 "Added section about installation"
add
: Add a new tasklist
: List all tasksdone
: Mark task(s) as completednote
: Add a note to a taskdelete
: Delete a task
@
: Set time/date (e.g., @tomorrow, @2pm-4pm)+
: Add tags (e.g., +urgent)!
: Set priority (1-5, where 1 is highest)
GoTask supports various flexible time and date formats to make task scheduling intuitive:
@today
,@tod
: Current day@tomorrow
,@tmrw
: Next day@monday
(or any weekday): Next occurrence of that weekday@eod
: End of current day (11:59 PM)@now
: Current time
- 12-hour format:
@2pm
,@2:30pm
,@2:30PM
- 24-hour format:
@14:00
,@1400
- Time ranges:
@2pm-4pm
,@14:00-16:00
- Combined date and time:
@tomorrow 2pm
,@monday 14:00
- Standard date:
@2024-03-15
,@15/03/2024
- Relative days:
@+3
(3 days from now)
All time inputs are converted to 24-hour format internally for consistency.
Copy .env.example
to .env
and adjust the settings:
cp .env.example .env
Key configurations:
APP_PORT
: Application port (default: 8080)- Other configurations can be set in
configs/config.yaml
- Go 1.22.5
- Air (for hot reload)
- Docker & Docker Compose (for containerized development)
# Run with hot reload
make dev
# Run tests
make test
# Build Docker image
make docker-build
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by EvoSched