Router receives http requests and forwards them to the controller Receives data from the Controller and bundles it in http responses that it sends
Creates, reads, updates, and deletes data models defined with the Mongoose library Fulfills requests received
Creates data models the controller uses
User profiles and sessions information will reside here Document database where each record and its associated data is thought of as a "document"
Mongoose makes it easy to move data between app and MongoDB database Mongoose allows the creation of schemas for the data and provides facilities for connecting to MongoDB and validating, saving, updating, deleting, and retrieving instances of the schemas
Register user Log on a user Log off a user Initiate a password reset for a user Finalize a password reset for a user
Data transfer class that helps move data out of the controller
Defines causes for when ApiResponse instance does not succeed
Data sent in the extras property of an ApiResponse instance can include a read-only version of the user's profile Helps pass user data from database to the outer layers of the backend without exposing sensitive information such as hash and salt values