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-webui
Then 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:3
Finally, 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-webui
The following environment variables may be set:
TASKRC
- the location of the.taskrc
file,/.taskrc
by default when run in production modeTASKDATA
- the location of the.task
directory,/.task
by 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-webui
GPL-3.0 License