{"id":16455125,"url":"https://github.com/leotm/book-store","last_synced_at":"2026-04-11T14:03:18.662Z","repository":{"id":101623841,"uuid":"113236361","full_name":"leotm/book-store","owner":"leotm","description":"MVP app for Vendigo's coding exercise for an online book shop 📚 Chose to try the new Angular 5. Followed by successful 2 hours of live pair programming implementing and learning HapiJS on the fly. Later further successful phone interviews with the CEO, then investor Mads Faurholt.","archived":false,"fork":false,"pushed_at":"2017-12-05T21:45:27.000Z","size":357,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-09T17:59:49.219Z","etag":null,"topics":["angular5","bootstrap4-alpha6","chai","coding-exercise","hapi","http-get","json","karma-jasmine","minimal","mocha","mvp","nodejs","sinon","typescript","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leotm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-05T21:45:19.000Z","updated_at":"2021-12-05T14:10:20.000Z","dependencies_parsed_at":"2023-06-06T20:30:30.567Z","dependency_job_id":null,"html_url":"https://github.com/leotm/book-store","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotm%2Fbook-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotm%2Fbook-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotm%2Fbook-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leotm%2Fbook-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leotm","download_url":"https://codeload.github.com/leotm/book-store/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240943652,"owners_count":19882434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular5","bootstrap4-alpha6","chai","coding-exercise","hapi","http-get","json","karma-jasmine","minimal","mocha","mvp","nodejs","sinon","typescript","unit-testing"],"created_at":"2024-10-11T10:21:10.641Z","updated_at":"2025-09-25T22:31:47.295Z","avatar_url":"https://github.com/leotm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Requirements\n\nLet's pretend we want to sell books online (like Amazon). As a first step we want to build a site that lists books displaying the book cover image, title, author, open library Id number (OLID), and price.\n\nWe'd also like a form that allows us to filter (on the server side) by the book's title or OLID. If searching by OLID we should validate it before we send it to our server. If it's not a valid OLID then we can assume it's a title.\n\nThe API to get the list of books we want to sell is available here https://goo.gl/Lk2MTJ. There is an example of the API response in the `books.json` file to ease development, but we should fetch a fresh copy from the API each time. Note that the API doesn't provide pricing. We'll have to add that later.\n\nFinally, we’d like the front-end to be styled to match the following design. The designer forgot to add the OLID number to the mockup.\n\n![Design](design.jpg)\n\n# BookStore\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.5.0.\n\n## My solution\n\nAs I had done the filtering on the client side, we pair programmed a couple hours, nearly completing the filtering server side with unit tests.\nI noticed the API data was unpurposely missing an author, so I chose to display `[Author missing!]`.\n\n## Hapi server\n\nRun `npm start` for a hapi server. This will also build the project beforehand. Navigate to `http://localhost:3000/`. The node app will automatically reload if you change any of the source files in the root directory.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the Angular source files.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\nRun `npm test` or `mocha test` to execute the unit tests via [Mocha](https://github.com/mochajs/mocha).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleotm%2Fbook-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleotm%2Fbook-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleotm%2Fbook-store/lists"}