{"id":15421060,"url":"https://github.com/cjsheets/node-image-search-abstraction","last_synced_at":"2025-06-11T11:35:48.080Z","repository":{"id":143840172,"uuid":"73756153","full_name":"cjsheets/node-image-search-abstraction","owner":"cjsheets","description":"Provide an abstraction layer to an image search API","archived":false,"fork":false,"pushed_at":"2017-02-19T06:01:13.000Z","size":192,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-27T14:42:30.338Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gog-img-api.herokuapp.com/","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/cjsheets.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":"2016-11-14T23:27:10.000Z","updated_at":"2017-02-15T00:27:35.000Z","dependencies_parsed_at":"2023-07-02T20:00:30.707Z","dependency_job_id":null,"html_url":"https://github.com/cjsheets/node-image-search-abstraction","commit_stats":{"total_commits":42,"total_committers":1,"mean_commits":42.0,"dds":0.0,"last_synced_commit":"5e92ede2ef901e91658694cc2bbd99d56811b6e9"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjsheets%2Fnode-image-search-abstraction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjsheets%2Fnode-image-search-abstraction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjsheets%2Fnode-image-search-abstraction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjsheets%2Fnode-image-search-abstraction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cjsheets","download_url":"https://codeload.github.com/cjsheets/node-image-search-abstraction/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239471244,"owners_count":19644280,"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":[],"created_at":"2024-10-01T17:32:59.575Z","updated_at":"2025-02-18T12:32:07.236Z","avatar_url":"https://github.com/cjsheets.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image Search Abstraction Layer\n\n## Overview\n\nThis app creates an abstraction layer for Googles image search API. The client is built on Angular v2.x\nand Typescript, with a backend supported by Node + MongoDB and hosted on Heroku.\n\nA demo version of this app is deployed at: [https://gog-img-api.herokuapp.com/](https://gog-img-api.herokuapp.com/)\n\n![](client/assets/img/app-screenshot.jpg?raw=true)\n\nPart of the [FreeCodeCamp](https://www.freecodecamp.com/cjsheets) curriculum based on the following user stories:\n\n* I can get the image URLs, alt text and page urls for a set of images relating to a given search string.\n* I can paginate through the responses by adding a ?offset=2 parameter to the URL.\n* I can get a list of the most recently submitted search strings.\n\n### Version 2.0\n\nThis app underwent a major rewrite. Version 2 improvemetns includes: \n\n* Use of reactive forms \n* Added model constraints\n* Stricter Typing\n* Jasmine / Karma unit tests\n* Jasmine / Karma integration tests\n* Protractor e2e tests\n\n## Install\n\nClone this repository and install npm dependencies:\n\n```\ngit clone git@github.com:cjsheets/node-image-search-abstraction.git\ncd node-image-search-abstraction\nnpm install\n```\n\n## Run\n\nTo run locally or deploy, first build the client with `ng build`, and start the backend:\n\n```\nnpm run express-prod\n```\n\nNavigate to `http://localhost:3000`\n\n## Dev\n\nFor client development, first create a `proxy.conf.json` to redirect client requests from the\nwebpack dev server to the backend:\n\n```\n{\n  \"/api\": {\n    \"target\": \"http://localhost:3000\",\n    \"secure\": false\n  }\n}\n```\n\nStart the front end, back end, and linter simultaniously:\n\n```\nnpm start\n```\n\nNavigate to `http://localhost:4200`\n\n## Test\n\nFor client unit and integration tests run:\n\n```\nnpm test\n```\n\nFor server tests, run:\n\n```\nnpm run test:node\n```\n\nFor end-to-end tests, first either install protractor globally \n(`npm install -g protractor`) or install developer dependencies and source\nthe local npm packages (`export PATH=$(npm bin):$PATH`). Confirm by running \n`protractor --version`. \n\nStart the selenium (protractor) server with: `npm run pre:e2e`\n\nFinally, run the tests:\n\n```\n\n```\n\n\n## Technology Stack\n\nThis package contains:\n\n| Front-End | Back-End |\n| ------- | ------- |\n| Angular v2.x | Node.js |\n| Material | Express |\n| HTML5/CSS | MongoDB |\n| Webpack | Bluebird |\n\n| Both | \n| ------- |\n| Typescript |\n| Jasmine/Karma | (testing)\n| Protractor | (e2e testing)\n\n\n### To-Do\n\n* Flatten routers promise chain\n* Handle concurrent addToLatest, parseApiResponse\n* Re-introduce custom error handling\n* Use bluebird for promises\n\n### License\n\nMIT License\n\n[![Analytics](https://cjs-beacon.appspot.com/UA-10006093-3/github/cjsheets/node-image-search-abstraction?pixel)](https://github.com/cjsheets/node-image-search-abstraction)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjsheets%2Fnode-image-search-abstraction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcjsheets%2Fnode-image-search-abstraction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjsheets%2Fnode-image-search-abstraction/lists"}