{"id":35012614,"url":"https://github.com/guyfedwards/medicspot","last_synced_at":"2026-05-22T03:31:35.707Z","repository":{"id":43983391,"uuid":"243946154","full_name":"guyfedwards/medicspot","owner":"guyfedwards","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-24T01:32:07.000Z","size":7342,"stargazers_count":0,"open_issues_count":17,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-17T00:25:54.930Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/guyfedwards.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":"2020-02-29T10:12:13.000Z","updated_at":"2024-05-17T00:25:54.930Z","dependencies_parsed_at":"2023-02-13T09:00:40.314Z","dependency_job_id":null,"html_url":"https://github.com/guyfedwards/medicspot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/guyfedwards/medicspot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fmedicspot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fmedicspot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fmedicspot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fmedicspot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guyfedwards","download_url":"https://codeload.github.com/guyfedwards/medicspot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fmedicspot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28072683,"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","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-12-27T05:01:25.643Z","updated_at":"2025-12-27T05:03:14.057Z","avatar_url":"https://github.com/guyfedwards.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Node code challenge\n\n### New Readme\n##### Answers\nAnswers to the questions can be found in `./answers.md`.  \n\n##### Running the app\nYou can run the app with `yarn start`. The app will the be served at `localhost:8080`.\n\n##### Scripts\nThere are several `yarn` scripts for running the server, tests and ui\n```\nbuildui - builds new ui \ndev     - runs the server in dev mode with nodemon\nstart   - runs the server with NODE_ENV=production set\nstartui - starts ui server. Looks for api on port 8080\ntest    - runs the tests\n```\n\n##### Improvements\n- More comprehensive tests\n- Proper error handling middleware\n- Docker setup\n- Better styling on the UI\n- Usually I wouldn't include `public` in the git repo but for ease of use I have included it\n\n### Original\nThis challenge has three parts:\n\n1. Written answers to [Questions](./QUESTIONS.md)\n2. Build a geo search server\n3. Build a form to search and display results\n\nWe're looking for elegant, clean solutions.  Try to think of and handle possible edge cases.\n\nThis challenge is sent to experienced developers and newcomers alike. Developers who are familiar with the technologies can complete this within an hour, those who are less familiar will take longer. We suggest spending a maximum of 2 hours on this challenge, the objective is to demonstrate you think through a problem.\n\nThere are [hints](./HINTS.md) available should you get stuck.\n\n## Part 1: Questions\n\nThe goal here is to describe as clearly and tersely as possible. As much an assesment of communications as JavaScript knowledge.\n\n## Part 2: The geo search server\n\nThe objective is to create a server which can be queried for names of points of interest in the UK.\n\nFor a given input such as `hastin` a set of matching results should be returned which start with this input.\n\nSpecification:\n\nThe server should respond to the following route\n\n    /locations?q=fuzzyMatchString\n\nWhere `fuzzyMatchString` will be a partial name of a location. For example\n\n    /locations?q=hastin\n\nCould return a the following JSON response (NOTE: Your dataset only contains GB locations, so the results will differ)\n\n    [\n      \"Hastings Castle\",\n      \"Hastings Slieve Donard Hotel\",\n      \"Hastings Everglades Hotel\",\n      \"Hastings Railway Station\",\n      \"Hastings Culloden Estate\",\n      \"Hastings Europa Hotel\",\n      \"Hastings District\",\n      \"Hastingleigh\",\n      \"Hastingwood\",\n      \"Hastings Stormont\",\n      \"Hastings Ballygally Castle Hotel\",\n      \"Hastings Culloden Estate \u0026 Spa\",\n      \"Hastings Slieve Donard Resort And Spa\"\n    ]\n\nNOTE: You should only start fuzzy matches if 2 or more characters are in the search string.\n\nImplementation:\n\nYou can use whatever server library you like but it must be written in [node](https://nodejs.org). The data of the locations should be stored in a [SQLite](https://www.sqlite.org/) database, and be loaded in from the [data source](data/) provided in this repo.\n\nData source:\n\nThe data source is available in this repo in the [./data](data/) directory. The [readme](data/readme.txt) in that directory explains how to use the data.\n\n## Part 3: The search form\n\nThe objective is to provide a user interface to search for names.\n\nThe interface should comprise of a search box and list of results.\n\nWhen the user starts typing the results should be displayed in the list below.\n\n```\n   [ Search here     ]\n\n   * Result 1\n   * Result 2\n   * Result 3\n   * Result 4\n\n```\n\nNOTE: It is important to display the correct results for a given search term. \n\nImplementation:\n\nThe implementation should be a single page app.  Feel free to use any tools or frameworks to create the solution. The solution is only required to support the latest version of Chrome.\n\n## Rules\n\nAll work should be commited into a fork of this repo. Please note you won't have permission to push to this repo directly (see \u003chttps://help.github.com/articles/fork-a-repo\u003e for help)\n\nYou'll get bonus points if you\n\n * Display coordinates next to results\n * Unit test your code\n * Provide good documentation\n * Sort the results by the closest name match\n\nGood luck!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfedwards%2Fmedicspot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguyfedwards%2Fmedicspot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfedwards%2Fmedicspot/lists"}