Skip to content

damoresa/taskmanager

Repository files navigation

Task manager backend

Build Status Coverage Status Quality Gate Status

Task management application that features an Angular frontend and a NodeJS backend with a MongoDB database.
The backend is designed to be deployed on Heroku on a free or hobby dyno and is thought for individual use - as in one user per application instance as of 28/11/2017 - so most of it's provided tooling is either used or recommended. On the other hand, the frontend is designed to be deployed on any CDN like surge.

As of 2/12/2017 the application supports a very simple JWT authentication pattern, with expiry yet to be implemented. Also, tasks / projects are still global so the application is designed for a single user. In the future I may consider adding a user to project relationship, but that's out of the scope now.

As of 5/12/2017 the application goes through TravisCI and Coveralls and is automatically deployed to an Heroku staging environment.

As of 25/12/2017 SonarCloud support has been implemented.

As of 30/10/2020, the mLab MongoDB database has been migrated to Atlas.
Mongoose version has been bumped and the project could use several improvements such as better CORS configuration or a reimplementation of the existing callbacks into async/await constructs which leverage Promises. However, since this is sort of a "pet project", I probably won't be investing my time into these refactors.

The purpose of the application is to actually help myself manage my own time in order to be able to analyze certain scenarios.

Project structure

The project contains the following folders:

  • Constants: as it may be obvious, contains contants such as the database connection string.
  • Controllers: Express controllers.
  • Models: Mongoose models.

Frontend

As of 5/12/2017 the frontend has been moved away from this repository and can be found here.

Backend

The backend is built using NodeJS and MongoDB. As of today, the following data can be stored and handled at the application:

  • Projects: allows you to define projects you'll later attach tasks to.
  • Tasks: allows you to define your tasks, setting estimated duration. On the future, it should also be possible to set deadlines and even launch email notifications with Sendgrid.

The database connection string is injected by the process environment using the variable name DATABASE_URI.

Future features

On the near/mid future, you can expect the following features:

  • Dockerfile to support Docker image deployments.
  • Better JWT management - expiry and whatnot.
  • User roles to allow multi-user instances where "project leaders" can assign other users to their projects in order to grant or revoke vision of the tasks. Aditionally, this could also bring user assignment to tasks.

Running the project

The following scripts are provided by default:

  • npm run devStart: start nodemon process in order to enable hot reloading while implementing new features.
  • npm start: start the backend application on production mode.