Code kata in Node.js where you have to write a library of books and magazines.
You have to implement an abstracted and simple library system.
-
You have exact 2 hours of time - no minute longer.
If you reach this time limit stop your work immediately. It is one part of the kata to respect this time limit.
-
There are no restrictions on how to use the provided time. If you want to code the entire time, take a break or a cigaret - it’s up to you.
-
This is a real world situation. You are allowed to consult the Internet, use every library you want, call a friend ...
BUT: You are not allowed to do pair programming. AND If you have already done this kata before to have a look at your previous implementation.
-
Develop your code based on Node.js language level 8.
-
Keep the following priorities in mind while you implementing - in the mentioned order:
- Clean Code
- Loose coupling
-
Given resources:
Hint: There is a reason why there are so many books and authors in german with umlauts.
authors.csv
: Contains authors with itsemail
,firstName
andlastName
.books.csv
: Contains books with itstitle
,description
, one or moreauthors
and anisbn
.magazines.csv
: Contains magazines with itstitle
, one or moreauthors
, apublishedAt
and anisbn
.
-
Rating:
- We'll mostly rate your code and see how you structure and think it.
- Finishing the Kata in 2h, it's not the primary goal.
-
Your software should read all data from the given CSV files in a meaningful structure. For the given dataset is for test development/test, we'll run it with a larger dataset.
-
Expose a Rest route to :
- List all books
- List all magazines
- Find a book by its
isbn
- Magazine by its
isbn
- List all
authors
- Find all book by their by their
authors
Hint: Optional means optional.
-
Write useful Unit tests.
-
Add a route to add a book or a magazine to the data structure of your software
-
Add a route to export each resource to CSV
-
Add a docker to run your server
-
Get the code. (Git clone)
-
Open in your favorite IDE.
-
Start the kata.
-
Publish your code and give us the url.
npm run start
npm run lint
npm run test
See LICENSE file.