A collection of small, beginner-friendly challenges for practicing (and evaluating) the real GitHub workflow: fork, branch, commit, PR, respond to review.
Built and maintained by Integify, and MIT licensed so any team can fork it and run the same exercise for their own hiring. This repo is the reference instance, live at playground.integify.io.
Doing a challenge? Start at How it works. Running this for your own company? Start at Use this for your own team.
AI agents can write code. What's still worth testing in a junior candidate is whether they can work like a developer: follow instructions, make a small isolated change, explain it clearly, and take feedback on a pull request without getting lost or defensive.
- Fork this repo to your own GitHub account.
- Pick ONE challenge from the list below (unless told otherwise).
- Create a branch named after the challenge, e.g.
challenge/01-css-bug-hunt. - Read that challenge's own
README.mdinside its folder and make the fix. - Commit with a clear message.
- Open a Pull Request back to this repo. Describe what you changed, why, and how you checked it works.
- We'll leave feedback on the PR. Reply and adjust, that's part of the challenge.
Your challenge PR will be closed, not merged, and that's the expected outcome. The challenges have to stay broken for the next person. Closing is not a rejection: the review conversation is the whole point. See CONTRIBUTING.md for the full picture.
| # | Challenge | Skill focus | Difficulty |
|---|---|---|---|
| 01 | CSS Bug Hunt | CSS, attention to detail | Beginner |
| 02 | Typo Fix | HTML, content editing | Beginner |
| 03 | Missing Footer | HTML/CSS, building from scratch | Beginner |
| 04 | Broken Button | Basic JavaScript, debugging | Beginner+ |
| 05 | Broken Image | HTML, file paths | Beginner |
| 06 | Responsive Cards | CSS layout, mobile checking | Beginner+ |
| 07 | Broken Form | HTML forms | Beginner+ |
| 08 | Missing Alt Text | Accessibility (a11y) | Beginner |
| 09 | Broken Link | HTML links, verifying navigation | Beginner |
| 10 | Color Contrast | Accessibility, CSS color | Intermediate |
| 11 | Update the Docs | Documentation PRs | Beginner |
| 12 | Console Error | JavaScript, browser console | Beginner+ |
More challenges get added over time, this repo is meant to grow.
You don't need permission and you don't need to ask. Fork it, rebrand it, run it.
- Fork this repo into your own GitHub org (or use GitHub's "Use this template" if you'd rather start without the fork link).
- Swap the branding. Replace
integify_logo.png, and update the company name, copy, and links inindex.htmland in eachchallenges/*/index.html. Grep forIntegifyto find every mention. - Update this README: your domain, your intro, and your own contact details.
- Deploy it. It's a plain static site, no build step. Vercel, Netlify, Cloudflare Pages, or GitHub Pages all work. For Vercel: connect the repo, Framework Preset "Other", leave the build command empty, then add your domain under Domains and point DNS as instructed.
- Decide your review flow before you send it to a candidate: which challenge to assign, who reviews, what you're actually grading. CONTRIBUTING.md has notes on this and on staying mergeable with upstream.
If you improve a challenge or write a new one, a PR back here is very welcome, but never required.
New challenges, fixes to the site itself, and doc improvements are all welcome. Read CONTRIBUTING.md first: it covers the challenge folder layout, the conventions each challenge README follows, and how candidate PRs are handled differently from real contributions. By taking part you agree to the Code of Conduct.
- This repo is the permanent source. Everyone forks it, nobody pushes to
maindirectly. - Candidate submissions land as PRs here so there's one place to review and compare them. They get the
candidate-submissionlabel, a review, and then a close, never a merge. - Genuine contributions (new challenges, site fixes, docs) get merged normally.
- To add a new challenge: copy
challenges/_TEMPLATE/, rename it, write the task, and add a row to the table above. Full checklist in CONTRIBUTING.md. - Hosted on Vercel: Framework Preset "Other", no build command, custom domain
playground.integify.iounder the project's Domains settings.
MIT. Use it, fork it, sell training on it, no attribution needed beyond the license text.