|
1 | | -# NodeJS Work Sample (roster editor) |
2 | | - |
3 | | -Welcome to the Digication work sample for NodeJS developers! This is our way to get some experience working with you and to get an idea about your level of NodeJS skills and knowledge about common npm packages. There is no official time-limit for this exercise, but you should finish it within a week. We encourage you to take the time you need in order to provide quality work that best reflects your skills. |
4 | | - |
5 | | -## Context |
6 | | - |
7 | | -A new course roster editor is needed! Imagine we are building an app for a university, where we need to provide a way for administrators to manage who should be teaching or taking a course. The frontend will be implemented at a later time. Today our goal is to create a basic version of the backend. |
8 | | - |
9 | | -## Data Models |
10 | | - |
11 | | -- The `Course` has `id` and `name` fields. |
12 | | -- The `User` consists of `id`, `name` and `email`. |
13 | | - |
14 | | -### Relationships |
15 | | - |
16 | | -The model relationship in this example is kept as simple as possible, think of it this way: |
17 | | -- Courses have many users assigned of which some can be flagged as faculty. |
18 | | -- Users can be enrolled in many courses |
19 | | - |
20 | | -## API methods |
21 | | - |
22 | | -- Add the necessary functionality to add/remove users to/from courses. This should also allow mark/flag a user as faculty of the course. |
23 | | -- Provide a way to get the users enrolled in a given course (and their faculty status). |
24 | | -- You do not need to provide CRUD APIs for the Users and Courses models, but feel free to do so if you need them. |
25 | | - |
26 | | -## Technical Requirements |
27 | | - |
28 | | -You have to use NodeJS >10.0, expressjs 4.x and a relational database. This work sample already includes SQLite but feel free to use a different one. Regarding an ORM and SQL query builder we have selected `sequelize` but the final choice is up to you. |
29 | | - |
30 | | -Since your backend app will be used by other developers, documentation of the API (check the scripts in `package.json` for an idea how you could do this) and unit tests will be much appreciated. Please make sure to apply common design patterns and best practices. |
31 | | - |
32 | | -Please also point out which recommendations regarding security would you have, given that React will be used to build the frontend. |
33 | | - |
34 | | -## Encouragement |
35 | | - |
36 | | -Please don't go overboard with using external packages and don't try to introduce extra complexity in your code just for the sake of showcasing your skills. A simple and elegant solution for this should be your goal. |
37 | | - |
38 | | -Digication team members have worked through this work sample to make sure we are not asking for too much of your time. This shouldn't take you longer than a couple of hours depending on your knowledge and the bells and whistles you want to add. |
39 | | - |
40 | | -We are looking forward to hearing from you! |
0 commit comments