This repo is an express server instance for the Task managment app project. The frontend is maintained separeately built using React, maintained in another repository
Still under development.
The idea behind this project is to build a task management app, to keep track of tasks, time spend on each task and also generate invoices for the tasks. The project has 2 routes Tasks and Invoices. Additional details:
- Tasks handles the create, update and delete of tasks. Fields - task details, time spent on task and a field for invoice status check. This route is complete.
- Invoices handles the invoice creation. When an invoice creation in initiated all the non-invoiced tasks are bundled and an invoice is generated. Still under development
- The application skeleton is generated using express-generator
- ExpressJS - for handling and routing requests
- MongoDB (Mongoose) - for modeling and mapping MongoDB data
- Mongoose Currency - to add currency type to Mongoose Schema
- Mongoose Sequence - autoincrement value for invoice number
- Use environment variables from
.env
files with dotenv - Tests with Jest and supertest
- Nodemon - tool to automatically restart node application of file change.
- Dynamic HTML PDF - tool to convert HTML to PDF with handlebars for dynamic data.
Key | Additional Info |
---|---|
Date | Date type |
Task | String type, task details |
Hours | Number type, time spend on a task in hours with default set to 0.25 (15 mins) |
Invoiced | Boolean time, default set to false |
Key | Additional Info |
---|---|
Invoice number | Number type |
Date | Date type, default now |
Rate | Currency type, the hourly rate at which the invoice needs to be generated |
Total Hours | Number, total invoice hours |
Amount | Total invoice amount |
Tasks | An object of task ids for which the invoice is generated for, for any features to be added in the future |
invoice file | invoice file name |
To get the server running locally:
- Clone this repo
npm install
to install all required dependencies.- rename
.env.example
to.env
and fill in the details. npm start
to start the server.npm run watch
to restart the server after file change.npm run test
to run test using Jest and Supertest.