Skip to content

Code kata in JavaScript where you have to write a library of books and magazines.

License

Notifications You must be signed in to change notification settings

jonathan3692bf/javascript-kata

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaScript Kata - Part 1: Library

Code kata in JavaScript where you have to write a library of books and magazines.

A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition.

Topic

You have to implement an abstracted and simple library system.

Frame conditions

  1. You have exact 2.5 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.

  2. 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.

  3. 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.

  4. Develop your code based on ECMAScript 2018 (ES2018).

  5. Keep the following priorities in mind while you implementing - in the mentioned order:

    1. Code quality
    2. Usage of object oriented methods
    3. Functionality
  6. Given resources:

    Hint: There is a reason why there are so many books and authors in german with umlauts.

    • authors.csv: Contains authors with its email, firstName and lastName.
    • books.csv: Contains books with its title, description, one or more authors and an isbn.
    • magazines.csv: Contains magazines with its title, one or more authors, a publishedAt and an isbn.

Tasks

Main tasks

  1. Your software should read all data from the given CSV files in a meaningful structure.

  2. Print out all books and magazines (could be a GUI, console, …) with all their details (with a meaningful output format).

    Hint: Do not call printBooks(...) first and then printMagazines(...) 😉

  3. Find a book or magazine by its isbn.

  4. Find all books and magazines by their authors’ email.

  5. Print out all books and magazines with all their details sorted by title. This sort should be done for books and magazines together.

Optional tasks

Hint: Optional means optional.

  1. Write Unit tests for one or more methods.

  2. Implement an interactive user interface for one or more of the main tasks mentioned above. This could be done by a website, on the console, etc.

  3. Add a book and a magazine to the data structure of your software and export it to a new CSV files.

Procedure

  1. Get the code. There are several ways for it:

    1. With fork (makes it possible to preserve your work):

      1. Fork this repository
      2. Clone this fork to your computer:
        git clone <your github url>
        # Example: git clone https://github.com/blaubaer/nodejs-kata-1.git
    2. Clone this repository with local branch:

      git clone https://github.com/wundertax/javascript-kata.git
      git checkout -b run-<yourname>-<iteration number>
      # Example: git checkout -b run-blaubaer-1
    3. Just download it from here

  2. Open in your favorite text editor/IDE.

    Hint: We recommend IntelliJ IDEA Community Edition or Visual Studio Code.

  3. Start the kata.

  4. Discuss with your friends and/or colleges your solution.

  5. Repeat after some days/weeks.

FAQ

How to run your application?
  1. Install dependencies:

    npm i
  2. Run start script:

    npm run start

    This command will run dev server. After this the project is accessible on http://localhost:9000/

What's the structure of the boilerplate?

Important! react and react-dom are already included in package.json. If you want to use other libraries/frameworks, you have to install and include them manually.

  1. webpack for building and bundling:

    • .js and .css files work out of the box
    • entry point is src/index.js file
    • bundle is being written in dist/main.js
  2. jest for testing.

  3. eslint for code checking.

  4. webpack-dev-server for hacking:

    • configured to serve content of dist, data and static folders. If you run server, CSV files are gonna be available from the root, e.g. data/authors.csv will be served over http://localhost:9000/authors.csv
    • supports live reload
  5. babel for code transpiling:

    • preconfigured preset-env and preset-react

Hint: if you prefer using another build tool/bundler/test suite/etc: feel free to modify whatever you need.

How to lint your code?

For code check:

npm run lint

To fix the linting errors:

npm run lint:fix
How to run your tests?
npm run test

License

See LICENSE file.

About

Code kata in JavaScript where you have to write a library of books and magazines.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.5%
  • CSS 4.6%
  • HTML 3.9%