Responsive Web UI for Taskwarrior based on Vue.js and Koa.js.
- Responsive layouts
- Material Design UI
- PWA support
- Easy to deploy (using Docker)
- Support for multiple types of tasks
- Support for light and dark themes
- Sync with a taskserver
First pull the docker image: (Note that taskwarrior v2 and v3 are not compatible with each other. Choose based on your current data version.)
# For taskwarrior 3
docker pull dcsunset/taskwarrior-webui:3
# For taskwarrior 2
docker pull dcsunset/taskwarrior-webuiThen run it with the command:
docker run -d -p 8080:80 --name taskwarrior-webui \
-v $HOME/.taskrc:/.taskrc -v $HOME/.task:/.task \
dcsunset/taskwarrior-webui:3Finally, open http://127.0.0.1:8080 with your browser (replace 127.0.0.1 with your ip address if running on a remote server).
If you want to use already existing taskwarrior data in another container, use :z or :Z labels. See
here.
# e.g.
docker run -d -p 8080:80 --name taskwarrior-webui \
-v $HOME/.taskrc:/.taskrc:z -v $HOME/.task:/.task:z \
dcsunset/taskwarrior-webui
If your configuration file contains absolute path to your home directory like /home/xxx/ca.cert.pem,
you may want to mount files to the same paths in the container using the following command:
docker run -d -p 8080:80 --name taskwarrior-webui \
-e TASKRC=$HOME/.taskrc -e TASKDATA=$HOME/.task \
-v $HOME/.taskrc:$HOME/.taskrc -v $HOME/.task:$HOME/.task \
dcsunset/taskwarrior-webuiThe following environment variables may be set:
TASKRC- the location of the.taskrcfile,/.taskrcby default when run in production modeTASKDATA- the location of the.taskdirectory,/.taskby default when run in production mode
Remember to mount your files to the corresponding locations when you set TASKRC or TASKDATA to a different value.
First build the frontend:
cd frontend
npm install
npm run build
npm run export
Then build and start the backend:
cd backend
npm install
npm run build
npm start
Then install nginx or other web servers
to server frontend and proxy requests to backend
(you can refer to nginx/nginx.conf).
First start the server at backend:
cd backend
npm install
npm run dev
Then start the dev server at frontend:
cd frontend
npm install
npm run dev
Then the frontend will listen at port 8080.
Contributions are very welcome! Please create or comment on an issue to discuss your ideas first before working on any PR.
I've been very busy recently and may not be able to handle every issue timely. So I'm also looking for maintainers who are interested in this project. Feel free to open an issue if you have any interest.
This Web UI supports auto sync with a taskd server
by calling the task sync command periodically.
In order to use this function,
first you need to follow the instructions
to configure both the taskserver and client manually until the task sync can be executed successfully.
Then remember to map the client configurations (.taskrc and .task) into the container.
Though authentication is not supported directly, it is possible to use basic auth by configuring nginx (or you can even use your own reverse-proxy to do it).
For example, you can modify the file nginx/server.conf as below:
server {
listen 80;
listen [::]:80;
# add auth
auth_basic "Protected page";
auth_basic_user_file /etc/htpasswd;
# remaining part unchanged
...
}Then mount the file and htpasswd file:
docker run -d -p 8080:80 --name taskwarrior-webui \
-v $HOME/.taskrc:/.taskrc -v $HOME/.task:/.task \
-v $PWD/server.conf:/etc/nginx/conf.d/default.conf \
-v $PWD/htpasswd:/etc/htpasswd \
dcsunset/taskwarrior-webuiGPL-3.0 License

