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 .envKey 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

