repository
0.0.0-20241206165647-5af8c6273cf5
Repository: https://github.com/evosched/gotask.git
Documentation: pkg.go.dev
# README
GoTask - Efficient Task Management CLI
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.
š Features
- 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
š Project Structure
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
š ļø Installation
Prerequisites
- Go 1.22.5 or higher
- SQLite3
- Make (optional, for using Makefile commands)
Local Installation
# Clone the repository
git clone https://github.com/EvoSched/gotask.git
cd gotask
# Build the project
make build
# Or using Go directly
go build
Docker Installation
# Build and run using Docker Compose
docker-compose up --build
šÆ Quick Start
- 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"
š Command Reference
Basic Commands
add
: Add a new tasklist
: List all tasksdone
: Mark task(s) as completednote
: Add a note to a taskdelete
: Delete a task
Task Properties
@
: Set time/date (e.g., @tomorrow, @2pm-4pm)+
: Add tags (e.g., +urgent)!
: Set priority (1-5, where 1 is highest)
Time and Date Formats
GoTask supports various flexible time and date formats to make task scheduling intuitive:
Date Keywords
@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
Time Formats
- 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
Custom Date Formats
- 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.
š§ Configuration
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
š Development
Requirements
- Go 1.22.5
- Air (for hot reload)
- Docker & Docker Compose (for containerized development)
Development Commands
# Run with hot reload
make dev
# Run tests
make test
# Build Docker image
make docker-build
š Contributing
- 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
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
Made with ā¤ļø by EvoSched