Send your first coding screen
Dieser Artikel ist noch nicht übersetzt und wird auf Englisch angezeigt.
Build a coding screen from your own repository, check that it runs, and invite a candidate. About 15 minutes.
Before you start
- A Kendor organization. Access is by request: ask on the contact form and you'll get a link to set it up.
- The Owner or Editor role. Viewers can read screens but can't create them.
- A repository for the candidate to work in, on any Git host. No repository yet? Start from a blank project instead (step 2).
Create a screen
Open Screens in the sidebar and choose New screen. Give it the name candidates will see, such as Rate limiter, in the Name this screen field.
In the settings on the right, pick a Time limit. 90 minutes is the default and suits most backend tasks; you can also choose 30 minutes to 4 hours, or a custom length. Once the draft exists, your changes save as you go.
Add a challenge from your repository
Paste the repository URL into Repository URL and choose Check. Kendor previews the import: the number of files, its size, and whether the repository already has a kendor.yaml.
- Hosts: github.com, gitlab.com and bitbucket.org, plus your own GitHub Enterprise Server, GitLab, Gitea or Forgejo.
- Private repositories: an organization owner adds a read-only token under Integrations → Code hosts first. Tokens are stored encrypted, and Kendor only ever shows their last four characters.
- One folder of a monorepo: paste a link to a branch or folder (for example
github.com/acme/platform/tree/main/services/billing) and only that part is imported.
Set the Title, Language, and any Databases the project needs, then choose Add challenge. The import is a copy of that commit: later pushes to the repository don't change a screen that's already out.
No repository? Under Or add:, choose Blank project to start from one of Kendor's starters, or Single file for an algorithm-style question.
Check how it runs
A kendor.yaml at the root of the project tells Kendor how to install, start and test it. When the repository doesn't have one, the editor opens Runtime configuration for you. Fill in the form, or switch to Raw YAML, and save: Kendor writes kendor.yaml and restarts the sandbox with it.
A small project with a PostgreSQL database looks like this:
version: 1
runtime:
type: python
version: "3.12"
databases:
- type: postgres
version: "18"
init: db/schema.sql
install:
commands:
- pip install --user -r requirements.txt
services:
app:
dev:
command: uvicorn main:app --host $HOST --port $PORT --reload
port: 8000
test:
command: pytest --tap-stream
preview:
service: appversion: 1
runtime:
type: node
version: "22"
databases:
- type: postgres
version: "18"
init: db/schema.sql
install:
commands:
- npm ci
services:
app:
dev:
command: node --watch src/server.js
port: 3000
test:
command: node --test
preview:
service: appKendor starts the database inside the sandbox and passes its connection string to your app as DATABASE_URL. Choose Preview as candidate to see the running app exactly as a candidate will.
Make sure the tests run
Candidates run the project's tests themselves, from the Tests tab in the editor or from the terminal, as often as they like. The tests are ordinary files in the project, so candidates can read them too.
The Tests tab runs the test command from kendor.yaml. To get one row per test instead of a single pass or fail, have the command print TAP: pytest --tap-stream (Kendor's Python ships with pytest-tap) or Node's built-in node --test both do. Run the suite once in the preview to check it.
Launch the screen
Back in the screen's settings, add Default reviewers and check the Invite expiry (7 days unless you change it). To let candidates use Claude Code or Codex in the terminal, turn on AI assistants in the terminal; it runs on your organization's own API keys.
The Launch checklist shows what's missing. A screen needs a title, at least one challenge, and a valid runtime configuration. Choose Launch and the screen goes Live.
Invite a candidate
Open Candidates and choose Invite candidate. Enter one or more emails, pick the screen (only live screens are listed), and choose Send invite.
Each candidate gets their own link by email. They don't need an account: they enter their name, and the timer starts when they choose Begin screen. If you'd rather send the link yourself, use Copy invite link in the candidate's row.
Tip. Send the first invite to yourself to see exactly what candidates see.
Review the submission
When the candidate submits, open them from Candidates and choose Open review. You'll find their code and its diff under Solution, plus the Timeline, Terminal, AI agents and Activity tabs.
Each reviewer records a recommendation, from Strong yes to Strong no, with an optional note. Then someone makes the call: Advance or Reject. Neither emails the candidate, so you decide when and how they hear back. Mark passed and Mark did not pass are different: they email the candidate their result straight away. See Review a submission.