Hiretea is a self-hosted platform for running technical assessments end to end.
Define case templates against your own Gitea repositories, provision candidate
accounts, assign per-candidate working repositories, capture reviewer signal,
and keep an auditable trail of every state transition.
It bundles Gitea as the code host and uses PostgreSQL as the data store —
everything runs behind your own firewall, with no external SaaS dependencies.
Bootstrap — On first boot, the stack automatically sets up PostgreSQL,
initializes Gitea with an admin account, registers an OAuth application,
applies the database schema, and seeds the first workspace admin. A manual
/setup page is also available as a fallback.
Create templates — Admins define case templates that point to Git
repositories. A template can provision a brand-new repo, link an existing
one, or copy from an existing repository. Each template carries reviewer
assignments, review guides, and rubric criteria with weighted scores.
Provision candidates — Recruiters provision candidate accounts, which
automatically creates a Gitea user with an initial password and a linked
identity record. Invite links (with token hashing, expiration, and
revocation) are generated for onboarding.
Assign cases — Assigning a template to a candidate creates a working
repository (mirrored from the template), grants the candidate write access,
registers a webhook for status tracking, and persists the case row in
READY status.
Candidate works — The candidate pushes code to their working repository.
Webhook deliveries automatically advance the case status: first push →
IN_PROGRESS, review-submission PR → REVIEWING.
Review & decide — Reviewers access the review workflow, see the template
guide and rubric, leave evaluation notes with scores and summaries, and
finalize the case with a decision (ADVANCE, HOLD, or REJECT).
Audit — Every meaningful mutation (provisioning, status changes, access
grants, invite lifecycle, webhook deliveries) is recorded in an append-only
audit log.
Copy the sample environment file: cp .env.example .env
Edit .env — at minimum, change these secrets for any non-local deployment:
NEXTAUTH_SECRET, BOOTSTRAP_TOKEN, GITEA_ADMIN_PASSWORD,
GITEA_SECRET_KEY, GITEA_INTERNAL_TOKEN, GITEA_WEBHOOK_SECRET.
Startup is fully automatic: PostgreSQL is provisioned, Gitea is initialized
with an admin account and OAuth application, the database schema is applied, and
the first workspace admin is seeded.