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
.envfiles 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 installto install all required dependencies.- rename
.env.exampleto.envand fill in the details. npm startto start the server.npm run watchto restart the server after file change.npm run testto run test using Jest and Supertest.