⚠️ UNDER CONSTRUCTION: This project is currently in active development and is not ready for production use. Features may change without notice. Use at your own risk.
A modern, lightweight Progressive Web App (PWA) for accessing your Taskwarrior tasks from anywhere.
Taskwarrior is a powerful CLI-based task management tool that follows the Unix philosophy - do one thing and do it well. It excels at managing tasks through the command line with extensive features and customization.
DotbinTask extends Taskwarrior to the web while maintaining the same philosophy. It doesn't replace the CLI or duplicate functionality - instead, it provides web-based access to your existing Taskwarrior setup, respecting your configurations and workflow.
DotbinTask consists of two independent components, each focused on doing one thing well:
1. DotbinTask API - A headless REST API that wraps Taskwarrior CLI. Provides programmatic access for building UIs, mobile apps, or integrations.
2. DotbinTask GUI (This Project) - A web-based PWA frontend. Report-centric interface that reads configurations directly from your .taskrc and displays tasks exactly as Taskwarrior would.
Create a docker-compose.yml:
services:
# Backend API
api:
image: ghcr.io/dotbinio/dotbintask-api:latest
environment:
- TW_API_TOKENS=your-secret-token-here
volumes:
- ~/.task:/root/.task
# Frontend GUI
frontend:
image: ghcr.io/dotbinio/dotbintask-reports-gui:latest
# Nginx proxy - routes /api to backend, / to frontend
proxy:
image: nginx:alpine
ports:
- "3000:80"
volumes:
- ./nginx-proxy.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- api
- frontendCreate nginx-proxy.conf:
server {
listen 80;
# API routes
location /api/ {
proxy_pass http://api:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /health {
proxy_pass http://api:8080;
}
# Frontend routes
location / {
proxy_pass http://frontend:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}Start everything:
docker-compose up -dAccess at: http://localhost:3000
Enter your API token: your-secret-token-here
For standalone frontend (requires API running elsewhere):
docker run -d \
-p 3000:80 \
--name dotbintask-gui \
ghcr.io/dotbinio/dotbintask-reports-gui:latestNote: Configure API URL in your browser when prompted, or see Full Stack Setup above for a complete solution.
- 📊 Report-based - View all your Taskwarrior reports with configured columns and labels
- 📱 PWA - Install as an app on desktop and mobile
- 📴 Offline mode - Read-only access to cached tasks when API is unreachable
- 🌙 Dark theme - Clean, modern interface
- 🔐 Secure - Token-based authentication, stored locally in browser
By default, the app expects the API on the same domain. To use a different API server:
- Set the environment variable at build time:
docker build --build-arg VITE_API_BASE_URL=http://your-api-server:8080 -t dotbintask-gui .- For development, create a
.envfile:
VITE_API_BASE_URL=http://localhost:8080- Development Guide - For developers (npm setup, project structure)
- Docker deployment Guide - Complete docker-compose file for running the frontend and API together
Phase 1 (Current): Read-only task viewing with reports
Future phases:
- Task creation and editing
- Mark tasks as done/start/stop
- Advanced filtering and search
- Alternative views (kanban, calendar)
┌─────────────────┐
│ Browser │
│ (DotbinTask) │
└────────┬────────┘
│ HTTPS/REST
│
┌────────▼────────┐
│ DotbinTask API │
│ (Go Server) │
└────────┬────────┘
│ CLI Commands
│
┌────────▼────────┐
│ Taskwarrior │
│ ~/.task/ │
└─────────────────┘
Each component follows Unix philosophy - focused, independent, composable.
- Preact - 3KB React alternative
- PicoCSS - Minimal CSS framework
- Vite - Fast build tool
- TypeScript for type safety
MIT License - see LICENSE file for details.
Made with ❤️ for Taskwarrior users
