KadraPractice

A Go practice project with real bugs in a real REST API

Servly is a working Go service built on net/http. Its sprint goal is to harden the public API before launch, and three bugs stand in the way. You take a ticket at standup, fix it in the actual codebase, and open a GitHub pull request. An AI teammate reviews the diff, and a hidden go test suite decides whether the fix holds.

Real GitHub PRs · Graded by go test · Free during beta

What you'll actually do

Three bugs between Servly and launch

You work in a Go codebase someone else wrote. Each ticket reads like a real bug report, with acceptance criteria and a teammate you can ask for help. The sprint also puts you on call for a day, where you read the logs and recent deploys to name what broke.

API-301

The list endpoint ignores limit and returns every row

The collection endpoint never applies limit or offset to its query, so every request returns the full table. To pass, ?limit=20 has to return at most 20 records, a sensible default has to apply when limit is missing, and offset has to return the next slice of records.

API-315

Auth middleware accepts expired tokens

The middleware checks the token signature and never looks at the exp claim, so a token that expired hours ago still gets in. To pass, an expired token has to get a 401 while a valid, unexpired token still authenticates.

API-322

The rate limiter is global instead of per API key

The limiter keeps one shared bucket for the whole service, so a single noisy client can throttle everyone else. To pass, limits have to apply per API key, one key hitting its limit can't affect other keys, and each key's window has to reset on its own.

How grading works

go test decides whether the fix works

Each Servly ticket comes with a hidden Go test file that is added to your branch when it's graded. The result shows up on your pull request as a check, the same way CI gates a merge on a real team.

  • The hidden tests run with go test -v against your branch in a clean sandbox. They check the acceptance criteria on the ticket, edge cases included, so a fix that only handles the example in the bug report won't pass.
  • An AI teammate reviews the diff in the PR thread. They ask questions and can request changes, like a coworker would. Their review is feedback; the tests are the pass or fail.
  • If a check fails, the test output is on the PR. Push another commit and it runs again.
  • Shipped tickets and tracked hours go on a certificate with a public link you can put on a résumé or LinkedIn.
See exactly how the grading pipeline works →
Who it's for

Who the Go track is for

Servly assumes you can already read and write Go. It tests whether you can find and fix a bug in a service you didn't write.

Developers moving into Go from another backend language who want real Go work to point to.

Bootcamp grads and self-taught devs whose projects have never had a code review.

Anyone preparing for backend interviews who would rather talk about a rate limiter they fixed than a tutorial they followed.

Juniors who want to see what pagination, auth and rate limiting bugs look like in practice before they meet them at work.

Not for: people who haven't written Go before. Servly is a debugging exercise in an existing service, so start with the language basics first.

FAQ

Questions about the Go track

What do I need installed?

Go 1.25 or newer if you work locally. Every Servly repo also opens in GitHub Codespaces, so you can do the whole sprint in the browser instead.

Who reviews my pull request?

An AI teammate reviews the diff in the PR thread and can ask for changes. Whether the fix is correct is decided separately by the hidden go test suite.

What happens if the tests fail?

You see the failing test output on the pull request. Push a new commit and the check runs again, as it would against CI at work.

How is this different from LeetCode?

LeetCode gives you a function to write from nothing. Servly gives you a running service, a bug report and a reviewer, which is what most of a backend job looks like.

Can I put it on my résumé?

Yes. When you finish the sprint you get a certificate listing the stack, the tickets you shipped and your tracked hours, with a public link anyone can check.

Does it cost anything?

It's free during the beta.

Take the API-301 ticket and open your first Go pull request.