/spartaaa

Web-app for taskwarrior

Primary LanguageJavaScript

Spartaaa

Build Status Coverage Status Greenkeeper badge

Spartaaa is a Web-frontend for taskwarrior.

CAUTION: USE AT OWN RISK! If you use this app, make sure that you made a backup of the Taskwarrior-data, first.

Requirements

  • Taskwarrior pre-installed
  • NodeJS 10
  • macOS

If the app is not run on a macOS, the path to the Taskwarrior-data, has to be set as env-variable (SPARTAAA_PATH_TASKWARRIOR_DATA).

How to run the app

The dependencies, for the server, have to be installed first. To do this, run

yarn install

To start the server, execute

yarn start

The web-app will be accessible at http://localhost:3010

How does it work

While the web-app itself, is served from an express-webserver, the communication between frontend and backend happens via Websockets.

This app does not access the Taskwarrior-data directly. The access happens through the Taskwarrior-CLI.

There is a watch on the directory, which contains the Taskwarrior-data (preconfigured for macOS, which is ~/.task) and as soon as any file within that directory is modified, the tasks will be exported and pushed to the client.

Development

How to start the tests

yarn test

Start the server in dev mode

yarn run start-dev

This will start the express- and websocket-server, additionally to a Webpack-dev-server. There are file-watches on the server-components, which will restart the server automatically, as well as file-watches on the frontend-code, which will recompile the frontend and hot-reload it in the browser.

The Webpack-dev-server, which will serve the hot-reloadable frontend, will be accessible at http://localhost:8080

Motivation

The initial motivation, was to create a React-boilerplate for future projects. Taskwarrior was just a proof of concept to build upon. However, it turned to out to become useful and so the development went on.

Used technologies / frameworks

  • Yarn
  • React
  • Redux
  • immutable.js
  • RxJS
  • SASS
  • Bulma
  • Fontawesome
  • Webpack
  • Jest
  • Babel
  • Express
  • lodash
  • moment.js
  • winston
  • ws