└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Backend Developer (Node.js) test 2 | 3 | Make sure you read the whole document carefully and follow the guidelines in it. 4 | 5 | ## Context 6 | 7 | Build a RESTful API that can `get/create/update/delete` user data from a persistence database 8 | 9 | ### User Model 10 | 11 | ``` 12 | { 13 | "id": "xxx", // user ID 14 | "name": "test", // user name 15 | "dob": "", // date of birth 16 | "address": "", // user address 17 | "description": "", // user description 18 | "createdAt": "" // user created date 19 | } 20 | ``` 21 | 22 | ## Requirements 23 | 24 | ### Functionality 25 | 26 | - The API should follow typical RESTful API design pattern. 27 | - The data should be saved in the DB. 28 | - Provide proper unit test. 29 | - Provide proper API document. 30 | 31 | ### Tech stack 32 | 33 | - Use Node.js and any framework. 34 | - Use any DB. NoSQL DB is preferred. 35 | 36 | ### Bonus 37 | 38 | - Write clear documentation on how it's designed and how to run the code. 39 | - Write good in-code comments. 40 | - Write good commit messages. 41 | - An online demo is always welcome. 42 | 43 | ### Advanced requirements 44 | 45 | *These are used for some further challenges. You can safely skip them if you are not asked to do any, but feel free to try out.* 46 | 47 | - Provide a complete user auth (authentication/authorization/etc.) strategy, such as OAuth. 48 | - Provide a complete logging (when/how/etc.) strategy. 49 | - Imagine we have a new requirement right now that the user instances need to link to each other, i.e., a list of "followers/following" or "friends". Can you find out how you would design the model structure and what API you would build for querying or modifying it? 50 | - Related to the requirement above, suppose the address of user now includes a geographic coordinate(i.e., latitude and longitude), can you build an API that, 51 | - given a user name 52 | - return the nearby friends 53 | 54 | 55 | ## What We Care About 56 | 57 | Feel free to use any open-source library as you see fit, but remember that we are evaluating your coding skills and problem solving skills. 58 | 59 | Here's what you should aim for: 60 | 61 | - Good use of current Node.js & API design best practices. 62 | - Good testing approach. 63 | - Extensible code. 64 | 65 | ## FAQ 66 | 67 | > Where should I send back the result when I'm done? 68 | 69 | Fork this repo and send us a pull request when you think it's ready for review. You don't have to finish everything prior and you can continue to work on it. We don't have a deadline for the task. 70 | 71 | > What if I have a question? 72 | 73 | Create a new issue in the repo and we will get back to you shortly. 74 | --------------------------------------------------------------------------------