{"id":13787132,"url":"https://github.com/busbud/coding-challenge-frontend-a","last_synced_at":"2025-05-12T00:30:43.655Z","repository":{"id":9498453,"uuid":"11390843","full_name":"busbud/coding-challenge-frontend-a","owner":"busbud","description":"Busbud coding challenge baseline","archived":true,"fork":false,"pushed_at":"2020-03-11T22:55:49.000Z","size":12,"stargazers_count":5,"open_issues_count":1,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-11T17:56:17.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/busbud.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}},"created_at":"2013-07-13T16:39:28.000Z","updated_at":"2025-01-23T07:13:47.000Z","dependencies_parsed_at":"2022-09-21T19:12:39.882Z","dependency_job_id":null,"html_url":"https://github.com/busbud/coding-challenge-frontend-a","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/busbud%2Fcoding-challenge-frontend-a","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/busbud%2Fcoding-challenge-frontend-a/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/busbud%2Fcoding-challenge-frontend-a/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/busbud%2Fcoding-challenge-frontend-a/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/busbud","download_url":"https://codeload.github.com/busbud/coding-challenge-frontend-a/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253655761,"owners_count":21943068,"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-08-03T20:00:29.419Z","updated_at":"2025-05-12T00:30:43.353Z","avatar_url":"https://github.com/busbud.png","language":"HTML","funding_links":[],"categories":["HTML \u0026 CSS"],"sub_categories":[],"readme":"# FrontEnd Challenge A\n\nImplement a form with two autocomplete text-boxes (sourced from a location suggestion endpoint) to help users formulate a search for departures and destinations.\n\n## Functional requirements\n* Suggestions are sourced from http://busbud-napi-prod.global.ssl.fastly.net/search?q={prefix}\u0026callback={fn}.\n* User must be able to type a few (minimum 2) letters and obtain suggestions\n* Selection can be made via mouse, touch or keyboard\n* Form can only be submitted (for javascript enabled clients) if both text-box values were selected from the suggestion list\n    * If user cannot submit form due to such an error, a message must be displayed to help the user correct the problem\n* Form should be styled to match [design](https://www.evernote.com/shard/s7/sh/71b5f7bd-f1d2-4ecc-8c64-e1865f0a060e/61a1aa9e277820fe653cf4bfb1a5ae29/deep/0/Schedules-and-ticket-info-for-worldwide-bus-travel---Busbud.png)\n* Feature is cross-browser compatible (Recent Chrome, Safari, Firefox and IE10-7) with [graceful degradation](http://en.wikipedia.org/wiki/Graceful_degradation) as appropriate\n\n## Non-functional requirements\n* The code should be hosted on github, and the repo should be shared with Busbud and submitted as a pull request\n* Style guide: https://github.com/busbud/js-style-guide\n\n### Bonus\n* Localization: support for multiple languages (English, French, ...)\n* Responsive design\n\n### Remarks\n\n* Feel free to refactor or restructure as needed\n* In order to issue an authorized request against the suggestion endpoint, a long-lived guest token must be obtained from `http://busbud-napi-prod.global.ssl.fastly.net/auth/guest` and passed as the value of the `x-busbud-token` HTTP Header\n* CSS and JS added to support feature may be included in separate files\n* CSS can be written using SASS, LESS or similar higher-level language\n\n## Suggestion endpoint details\nThe endpoint has the following format\n\nhttp://busbud-napi-prod.global.ssl.fastly.net/search?q={prefix}\u0026callback={fn}\nWhere\n\n* `prefix` is the suggestion search prefix, like 'New' for a user typing 'New York'\n* `fn` is the javascript function injected into the response to support JSONP-style callbacks, if omitted the response is returned as JSON\n* \nHere's a sample\n\n```bash\n$ curl http://busbud-napi-prod.global.ssl.fastly.net/search?q=Mon\u0026callback=fn \n\ntypeof fn === 'function' \u0026\u0026 fn(([\n  {\n    \"city_id\": \"375dd5879001acbd84a4683dedfb933e\",\n    \"city_url\": \"Montreal,Quebec,Canada\",\n    \"full_name\": \"Montreal, Quebec, Canada\"\n  },\n  {\n    \"city_id\": \"375dd5879001acbd84a4683dedaab0e1\",\n    \"city_url\": \"Montevideo,Montevideo,Uruguay\",\n    \"full_name\": \"Montevideo, Departamento de Montevideo, Uruguay\"\n  },\n  {\n    \"city_id\": \"1bd27fec73a7b466133eaba87d314682\",\n    \"city_url\": \"Monterrey,NuevoLeon,Mexico\",\n    \"full_name\": \"Monterrey, Nuevo León, Mexico\"\n  },\n  {\n    \"city_id\": \"8359ea19b60b6c5b8200638f641fc77f\",\n    \"city_url\": \"Monchengladbach,GallicEmpire,Germany\",\n    \"full_name\": \"Mönchengladbach, Gallic Empire, Germany\"\n  },\n  {\n    \"city_id\": \"375dd5879001acbd84a4683ded682175\",\n    \"city_url\": \"Montpellier,LanguedocRoussillon,France\",\n    \"full_name\": \"Montpellier, Languedoc-Roussillon, France\"\n  }\n]);\n```\n    \n## What we're looking for\n1. Using high-quality existing libraries or small amounts of custom code\n1. Showing your work through your commit history\n1. Polish\n1. Pride in craftsmanship\n\n# Getting Started\n\n    # install NVM, NodeJS Version Manager\n    curl https://raw.github.com/creationix/nvm/master/install.sh | sh\n\n    # clone the repo\n    git clone git://github.com/busbud/coding-challenge-frontend-a.git\n    cd coding-challenge-frontend-a\n\n    # install the right version of node and the app depdencies\n    nvm install $(cat .nvmrc)\n    npm install\n    npm start\n    \n    \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbusbud%2Fcoding-challenge-frontend-a","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbusbud%2Fcoding-challenge-frontend-a","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbusbud%2Fcoding-challenge-frontend-a/lists"}