Repository reserved to candidates taking the programming test for the open position of "full stack developer" at Kopjra Srl. In order to complete the test, 4 hours (est.) are needed.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
- Fork this repository;
- Do the exercise of your choice, following both common and specific directives;
- If you have any question, feel free to ask mailing to your contact person or [email protected];
- Following the completion of the excercise, open a pull request: please note that there is no delivery deadline.
You MUST include a plaintext/markdown file (INSTRUCTIONS.md) that lists all the shell commands required to make your application work, including all the additional hypotheses on the underlying environment and business requirements (those SHOULD be as few as possible).
The front-end MUST be a Single Page Application built in React and it MUST consume the RESTful APIs of your back-end. For the basic templating you SHOULD use Bootstrap. You MAY use Gulp for the automated building process.
The back-end MUST expose RESTful APIs and it MUST be built in Javascript using Node.js on the Express 4 framework.
Instead of using a database, every interaction with the persistance layer SHOULD be mocked properly.
All the back-end calls MUST accept just an application/json
and MUST respond with the same content type.
You MAY serve static content through Express. You SHOULD NOT pre-render HTML through the back-end.
You MAY manage user creation; otherwise just provide a set of users. Choose your preferred authentication and authorisation model.
Build a simple notekeeping website.
- Every user can create, edit and delete any amount of notes;
- Notes are secret (ie: accessible only to the creator);
- Notes contain a title, a body and the creation date;
- Notes can be tagged;
- Every user can create, edit and delete any amount of tags;
- Tags are secret;
- Tags contain just the name of the tag;
- Users can list their notes and tags;
- Users can browse their notes by tag and creation date.
Build a simple online food ordering application for a restaurant.
- Every regular user can place any amount of orders;
- Every order must contain at least a course;
- A course contains a title, a body and a price;
- The administrator can create, edit and delete any amount of courses;
- The administrator can list the orders;
- The administrator can view the details of an order;
- Every regular user can list his own orders;
- Every regular user can view the details of any of his own orders;
- Payment is cash only on delivery.