{"id":35012287,"url":"https://github.com/guyfedwards/skyscanner","last_synced_at":"2026-05-14T16:02:58.711Z","repository":{"id":86503284,"uuid":"244192610","full_name":"guyfedwards/skyscanner","owner":"guyfedwards","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-07T23:08:16.000Z","size":459,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-28T18:52:02.857Z","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-01T17:26:47.000Z","updated_at":"2020-03-01T17:27:33.000Z","dependencies_parsed_at":"2025-12-27T05:01:46.357Z","dependency_job_id":null,"html_url":"https://github.com/guyfedwards/skyscanner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/guyfedwards/skyscanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fskyscanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fskyscanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fskyscanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fskyscanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guyfedwards","download_url":"https://codeload.github.com/guyfedwards/skyscanner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guyfedwards%2Fskyscanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33032638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"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:00:16.630Z","updated_at":"2026-05-14T16:02:58.705Z","avatar_url":"https://github.com/guyfedwards.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skyscanner full-stack recruitment test\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/Skyscanner/full-stack-recruitment-test.svg)](https://greenkeeper.io/)\n\nThanks for taking the time to do our front-end / full-stack coding test. The challenge has two parts:\n\n1) a [task](#task) to create a basic flight results front-end site to show flight prices\n\n2) some [follow-up questions](./FOLLOW-UP.md)\n\n----\n\nYou will be graded based on the following have been met:\n\n* Your implementation works as described in the [task](#task).\n\n* Your solution looks like the provided [design](#design).\n\n----\n\n## Task\n\nWe have placed a number of helpful todos inside the code (see `index.js` and `App.jsx`) to help get you started, the main items we are looking for are:\n\n- Fetch flight results from the provided `flights.json` and format them into client readable results.\n  - You are not required to serve this separately from the dev server (i.e. `npm start`).\n\n- Use the returned data to display a page of results that matches the given design.\n  - Times should be displayed in 24 hour format.\n\n## Design\n\nWe've provided a [design](./designs/results-small.png) for small-screens (480px). Don't worry about tackling larger breakpoints, but **please make sure your solution looks good at 480px in portrait orientation**.\n\nThe design shows a look and feel defined in our [styleguide](https://backpack.github.io/). Feel free to import our React components into your project, or lift colours and things directly from the styleguide pages. We also have some auto-generated [sassdoc](https://backpack.github.io/sassdoc/) that may help.\n\n**NB:** You don't have to use our styleguide or our components -- picking colours from the image and rolling your own css to save time is absolutely fine.\n\nFor the airline logos, insert the airline id to the following url: `https://logos.skyscnr.com/images/airlines/favicon/{id}.png`\n\n## Client implementation\n\nWe'd like you to use [React](https://facebook.github.io/react/). On top of that, use whatever front-end libraries you feel comfortable with.\n\nWe've set you up with a build based on [our custom fork](https://backpack.github.io/using/backpack-react-scripts) of Facebook's [create-react-app](https://github.com/facebookincubator/create-react-app).\n\nWe've wired in [Sass](http://sass-lang.com/) with our base stylesheet (`bpk-stylesheets`) + mixins (`bpk-mixins`) for you to get at -- see the [`Header`](./client/src/components/Header/Header.jsx) component for example use.\n\n## Flight results\n\nThe provided `flights` `json` will return two collections of different items:\n\n* **Itineraries** - These are the containers for your trips, tying together **Legs**, and **prices**. Prices are offered by an **agent** - an airline or travel agent.\n\n* **Legs** - These are journeys (outbound, return) with **duration**, **stops** and **airlines**.\n\nA good structure to represent trip options would be hierarchical:\n\n```\nItineraries\n  Legs\n```\n\n## Running the project\n\nTo startup the frontend client run the following command.\n\n* `npm start` - This will start the application for development\n* `npm run build` - Will create a production optimised build\n* `npm test` - Will run the front end tests\n* `npm run lint` - Will run the code through our linting rules\n\n## Submission Guidelines\n\n* The zip file should be named {yourname}.zip, and should itself contain the full-stack-recruitment-test project folder with your submission.\n\n* The zip file should contain the [FOLLOW-UP.md](./FOLLOW-UP.md) file with answers to the follow-up questions.\n\n* The zip file should **not** include the `node_modules` folder.\n\n\n----\n\nInspiration for the test format taken with ❤️ from [JustEat's recruitment test](https://github.com/justeat/JustEat.RecruitmentTest).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfedwards%2Fskyscanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguyfedwards%2Fskyscanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguyfedwards%2Fskyscanner/lists"}