A simple task management system with a Go backend API and HTMX frontend.
- JSON REST API with full CRUD support
- Support for multiple task lists
- Task states (Todo, In Progress, Blocked, Done)
- Subtasks support
- Task notes
- Due dates
- State duration tracking
- Export to markdown
- Flat file storage
- All tasks view across all lists
- List-specific view
- Kanban board view
- Go 1.22 or higher
- Clone the repository:
git clone https://github.com/jbutlerdev/tasks.git
cd tasks- Download dependencies:
go mod download- Build the application:
go build -o tasks./tasks --port 8080 --data ./dataOptions:
--port: Port to run the server on (default: 8080)--data: Directory to store task data (default: ./data)
GET /api/lists: Get all task listsPOST /api/lists: Create a new task listGET /api/lists/{listID}: Get a specific task listPUT /api/lists/{listID}: Update a task listDELETE /api/lists/{listID}: Delete a task listGET /api/lists/{listID}/tasks: Get all tasks for a listPOST /api/lists/{listID}/tasks: Create a new task in a list
GET /api/tasks: Get all tasks across all listsGET /api/tasks/{listID}/{taskID}: Get a specific taskPUT /api/tasks/{listID}/{taskID}: Update a taskDELETE /api/tasks/{listID}/{taskID}: Delete a task
GET /api/export: Export all tasks as markdown
/: View all tasks across all lists/lists: View all task lists/lists/{listID}: View tasks for a specific list/kanban/{listID}: View tasks for a list in kanban board format
Task data is stored in flat JSON files, organized by task list:
data/
└── lists/
├── list-id-1/
│ ├── list.json
│ └── tasks/
│ ├── task-id-1.json
│ ├── task-id-2.json
│ └── ...
└── list-id-2/
├── list.json
└── tasks/
├── task-id-3.json
└── ...
MIT