npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@sillhouette/book-cli

v2.2.0

Published

This is a CLI project that utilizes google's books API

Downloads

25

Readme

8th Light Technical Assessment Code Submission

This is the repo that contains my code submission for the technical assessment at 8th light. It contains three main directories, the first is a procedural directory that contains a procedural approach, the second contains an object oriented approach, and the third contains a test suite that has sub-folders with tests for each of the aforementioned versions of the program. Both version of attempts at achieving the goals set out by 8th light for the technical assessment code challenge.

A revised note to the reviewer(s):

After I implemented the feedback that I received from an employee at 8th Light who reviewed my first submission of this code base I completely changed my mind on the approach for this project. The reviewer rightfully pointed out that I had not achieved proper single responsibility for the objects and methods in my first attempt and therefore asked me to refactor it to better reflect that principle.

After making the necessary changes and looking at the result of those changes I've come to the conclusion that the Object Oriented approach that I produced is superior to the procedural one. It is well organized, easy to follow, and provides a much better base to build upon than the procedural approach. I find that change of perspective to be exhilarating and I'm excited to continue having others review my code and give me suggestions on how I can get better as a developer

A note to the reviewer(s): (written pre-refactor)

While I believe that the procedural approach was the best, most logical approach to this particular challenge, I provided an object oriented solution as well because I know how valuable programming from an object oriented standpoint is, and I wanted to demonstrate my capabilities from both perspectives.

Installation:

Follow these easy steps to install and start the app:

Npm:

Install:

Run npm install -g @sillhouette/book-cli

Execute:

Run book-cli or @sillhouette/book-cli from bash

Github:

Install:

Clone this repository, change directories into the folder for the repo and run npm install

Execute:

Start the application with the version selector: Run node index.js then choose which version of the app you want to run (recommended)

Start the procedural version directly: Open up /procedural/cli.js and uncomment the call to initialize(). Run node ./procedural/cli.js NOTE: This breaks the version selector so when you're done re-comment the line if you want to use the selector

Start the object-oriented version directly: Open up /object-oriented/cli.js and uncomment the instantiation of the cli class, instantiation of the cli object and the call to initialize(). Run node ./object-oriented/cli.js NOTE: This breaks the version selector so when you're done re-comment the lines if you want to use the selector

Test

Run the test suite using the command npm test

If you get a prompt after the tests run use ctrl + c to exit the prompt

The headers of the modules/classes and method names are highlighted in yellow and the test expectations in magenta, this helps separate out which output is test-related and which output is from the execution of the program

Note: The output from the running of the cli still gets printed to the console so you likely have to scroll up to see the results of the tests once they have been run.

Thank you!

Austin Melchior

This project has been licensed under the MIT open source license.