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.
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.
As of 5/12/2017 the frontend has been moved away from this repository and can be found here.
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.
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.
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.