{"id":23635317,"url":"https://github.com/0xcadams/interview-api","last_synced_at":"2025-08-31T11:30:52.507Z","repository":{"id":60759033,"uuid":"141482119","full_name":"0xcadams/interview-api","owner":"0xcadams","description":"👨🏽‍💼Simple API designed to challenge interviewees with creative thinking.","archived":false,"fork":false,"pushed_at":"2023-04-19T19:26:21.000Z","size":351,"stargazers_count":8,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-23T22:26:42.286Z","etag":null,"topics":["api","hiring","hiring-without-whiteboards","interview","jobs","serverless","tech","typescript","whiteboard"],"latest_commit_sha":null,"homepage":"https://api.cadams.io/v1/nobelprize","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xcadams.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-18T19:40:53.000Z","updated_at":"2025-07-30T08:40:46.000Z","dependencies_parsed_at":"2023-01-25T18:15:12.821Z","dependency_job_id":null,"html_url":"https://github.com/0xcadams/interview-api","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/0xcadams/interview-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcadams%2Finterview-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcadams%2Finterview-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcadams%2Finterview-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcadams%2Finterview-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xcadams","download_url":"https://codeload.github.com/0xcadams/interview-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcadams%2Finterview-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272973098,"owners_count":25024447,"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-08-31T02:00:09.071Z","response_time":79,"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":["api","hiring","hiring-without-whiteboards","interview","jobs","serverless","tech","typescript","whiteboard"],"created_at":"2024-12-28T05:33:59.121Z","updated_at":"2025-08-31T11:30:52.201Z","avatar_url":"https://github.com/0xcadams.png","language":"TypeScript","readme":"\u003ch1 align=\"center\" style=\"border-bottom: none;\"\u003e👨🏽‍💼 interview-api 💻\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003eSimple API with a twist, to challenge interviewees with creative thinking.\u003c/h3\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)\n[![Build Status](https://travis-ci.org/chase-adams/interview-api.png?branch=master)](https://travis-ci.org/chase-adams/interview-api)\n[![Docker Repository](https://img.shields.io/docker/build/chaseadams/interview-api.svg)](https://hub.docker.com/r/chaseadams/interview-api/)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n\n\u003c/div\u003e\n\n**interview-api** helps promote healthy software hiring practices by providing candidates an opportunity to showcase real-world skills.\n\n## Inspiration\n\nTech thought-leaders including [Adrianne Jeffries](https://theoutline.com/post/1166/programmers-are-confessing-their-coding-sins-to-protest-a-broken-job-interview-process?zd=1\u0026zi=76vosc6m), [Anil Dash](https://medium.com/make-better-software/against-the-whiteboard-f1df0013954f), [David Heinemeier Hansson](https://twitter.com/dhh/status/834146806594433025), [Jeff Atwood](https://blog.codinghorror.com/how-to-hire-a-programmer/), [Jon Evans](https://techcrunch.com/2015/03/21/the-terrible-technical-interview/), [Julie Bort](http://www.businessinsider.com/why-an-older-google-contract-programmer-left-google-2016-10), [Max Howell](https://twitter.com/mxcl/status/608682016205344768?lang=en), [Quincy Larson](https://medium.freecodecamp.org/why-is-hiring-broken-it-starts-at-the-whiteboard-34b088e5a5db), projects like [Hiring with Whiteboards](https://github.com/poteto/hiring-without-whiteboards) and [They Whiteboarded Me](http://they.whiteboarded.me/), and companies like [Foursquare](https://engineering.foursquare.com/improving-our-engineering-interview-process-106173ba25a9#.uuih4wg3m), [Slack](https://slack.engineering/a-walkthrough-guide-to-finding-an-engineering-job-at-slack-dc07dd7b0144), [Square](https://medium.com/square-corner-blog/why-we-pair-interview-c2ab4b599bd7), and [WebPT](https://www.webpt.com).\n\nIf you are a company looking for quality software engineers, whiteboard interviews are a thing of the past.\n\n## Usage\n\n### Public API\n\n1.  Provide a machine for your interviewee to code with, or allow them to use their own.\n\n2.  Don't tell them what the API does, just give them `https://api.cadams.io/v1/` and some overall direction (see [below](#a-few-considerations)) and let them build something awesome!\n\n### Local\n\n1.  Provide a machine for your interviewee to code with, or allow them to use their own (must have Docker installed).\n\n2.  Instruct them to run the command: `docker run -d --name interview-api -p 3000:3000 chaseadams/interview-api`\n\n3.  Don't tell them what the API does, just give them some overall direction (see [below](#a-few-considerations)) and let them build something awesome!\n\n### A Few Considerations\n\n#### Timeboxing\n\nFind a time that works right for your needs. Maybe you want to see well-written code with unit tests - that will take much longer than an hour. Perhaps you care less about the written code and more about the design, and an hour is plenty of time.\n\n_The recommended time is three hours_, to give the candidate enough time to research the interview-api, work on a solution, and implement a rough draft of it. However, depending on the role, this may be too little or too much time.\n\n#### Unnecessary Assistance\n\n- Port: If this project in Docker, there is no need to tell the candidate what port to use to access the API - it is in the command you give them.\n\n- Path: The candidate should be able to find out what URL the real API information is under. This can be done either by using `docker exec` to get to the code in the Dockerfile, or by finding the _interview-api_ repository. Hence the twist! There are no Swagger docs.\n\n#### Unnecessary Impediments\n\nThe goal of this project is to get rid of unnecessary impediments in the interview process - _don't add any with a restriction of IDE, OS, or if you are bold, technologies_. Any good programmer can learn those in time - what makes them stand out is the ability to design/build something awesome.\n\n#### Preventing Pre-Prepared Solutions\n\nYou're going to have these if you're not careful. Once word spreads you use an open-source project and let developers write whatever they want, someone will come in with a pre-baked solution and ace the challenge.\n\nProviding an original, randomized alteration to your instructions is key. Some examples of good guidelines are (please _do not_ use these):\n\n\u003e Interviewer: Please write an API (in any language) which consumes the _interview-api_ Docker container and gracefully handles any upstream intermittent failures.\n\nThere is intentionally opinion in this - what does \"gracefully\" mean to them? Does that mean retry with backoff, or does it mean transforming the error into something more meaningful? There is merit to both, depending on how the candidate imagined the usage of it.\n\n\u003e Interviewer: Please create a UI (in any language) which uses the _interview-api_ Docker container and displays a rating system using any characteristic(s) in the JSON payload.\n\nCandidates have the freedom to build however/whatever they want, given the loose constraint that it must be a system which allows users to rate the startups. It could be an Amazon-flavored system, something more Tinder-inspired, or any novel idea.\n\n\u003e Interviewer: Please create an API (in any language) which acts as a proxy for the _interview-api_ Docker container and provides application-level caching.\n\nThis lets candidates improve upon the (intentionally flawed) _interview-api_ and create something better. It provides an opportunity for them to showcase the areas they think need to be fixed.\n\n## License\n\nThe interview-api is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xcadams%2Finterview-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xcadams%2Finterview-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xcadams%2Finterview-api/lists"}