- There are NPM scripts to help your development enviroment easy
- Use npm run devto start the app in development mode
- Go to http://localhost:PORT_NUMBERto see the app running
This codebase follows MVC pattern with few additional layers.
The codebase has following flow of different layers:
- Routes
- Controllers
- Request Validators
- Service Layer
- Dispatch Response
 
 
- Controllers
- Routes are the top level and are created using Express.jsroutes
- They internally calls the controllers
- Every route has it's own controller
- Controller is invoked by it's route
- Controllers at it's core has following responsiblities:
- Validation of the client request
- Extract the request entities (body, params or query)
- Invokes different services
- Returns the final response back to the client
 
- This layer is a set of custom functions in a separate file
- They are used to validate the client request be it the body, params or query of the request
- If the client request is not desireable, it returns the errors back to the client
- This layer primarily interacts with the Database
- It is reponsible only for getting the required data from the Database and return it to the controller
- Note: All the business logic and query filteration should take place inside the controller
- Express.js
- Express Validator
- Mongoose
- GET : Use this to fetch data from the DB to client
- POST: Use this when creating new record in DB
- PATCH: Use this when you partially update any entity
- DELETE: Use this when you are performing delete operation
- 
200 - Used when you get data successfully 
- 
201 - Used when your data created successfully 
- 
400 - Used when there is bad request from the client 
- 
401 - Used when user is not authenticated 
- 
403 - Used when user is authenticated but do not have permissions to access resource 
- 
404 - Used when data not found 
- 
422 - Used when payload key(s) is valid but the data in the key(s) are unprocessable 
- 
500 - Used when server encounter unexpected condition