Skip to content

bibliotom/express-code-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Express Coding Challenge

The premise of this challenge is to see the approach you take to:

  • Use an ORM to interact with a simple database model
  • Create a basic routing mechanism for HTTP requests
  • Authenticate a user’s access to a route
  • Respond to a request in a consistent and logical manner
  • Test your work with both unit tests and integration tests.

Please clone this repository and send through your completed coding challenge using whatever you feel fit. We'll take a look and then have a chat about the decisions you took and challenges you encountered. Thanks for taking the time.

Challenge

  1. Use Sequelize or Mongoose to define:

    1.1. A User model which should have basic identifying information:

    • Name
    • Email address
    • Role (Acceptable entries: ‘student’, ‘academic’, ‘administrator’)
    • Password.

    1.2. An Institution model which stores information about a school:

    • Name
    • URL
    • Email domain.

    1.3. A Book model which stores information about books:

    • ISBN
    • Title
    • Author.

    1.4. Relationships between Users and Institutions, and Books and Institutions (Consider #4.3 in the relationships you create).

  2. Use Express to respond to requests.

  3. Create a test suite which includes code coverage, to unit and integration test the routes you’ve created.

  4. Create routes:

    4.1 POST /users/signin Use the passport library to authenticate a user and respond with a successful message that uses the JSend framework

    4.2 POST /users/create Creates a user and based on the user’s email domain links them to an institution. Denies creation of a user if their domain does not exist.

    4.3 GET /books Once authenticated, responds with a JSON object containing a list of Books that the user has access to via their Institution.

  5. (Optional) Provide a Postman collection which performs some basically functionality on the routes you've created.

Things to keep in mind

  • Security
  • Scalability
  • Consistency
  • Testing.

Running this application

You can run the application by typing: npm install followed by npm start

The structure of this repository

The structure of this repository should be relatively self-explanatory. Use the appropriate directory for your code. A basic example has been provided for the index route.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published