Repository navigation
Ganek v0.2.0
Second release: the hardening and integration work that came out of running v0.1.0 for seven weeks. Over 120 commits, seven migrations (head 0030), no breaking changes for self-hosters beyond the upgrade notes below.
Highlights
- Two-factor login with TOTP, recovery codes and "sign out everywhere".
- Proof-of-work captcha (ALTCHA, self-hosted, no third party) on public forms in multi mode.
- Per-tenant abuse guards: active jobs, applications per hour, candidate emails per day, with a usage card and an 80% warning banner. 0 switches a guard off.
- Email you can trust: provider abstraction (SMTP or Mailjet), bounce and complaint webhooks feeding a suppression list, a DKIM/SPF guide, a test send from Settings.
- Operations: deep
/api/health(DB, Redis, S3, worker liveness), compose healthchecks, request ids on every log line and response, JSON logging, optional Sentry viaGANEK_SENTRY_DSN, CDN-friendly immutable logo URLs, backup and erasure-aware restore scripts with a guide. - Integrations: CSV/JSON export of the applicant list, per-company API keys (read or write scope), and outbound webhooks for
application.created,stage.changed,quiz.completedwith HMAC-SHA256 signatures, retries and a delivery log, all from Settings > Developers. Verification snippets in the docs. - Recruiter quality of life: dashboard queue (quiz flags to review, unbooked interviews, drafts without a quiz) with per-user dismissal, display names, a cleaner multi-mode signup with a "what you get" panel and a post-verify landing.
- Question bank: a difficulty recalibration pass (26 mid-band questions re-rated after review), distribution now 1:38 2:56 3:87 4:43 5:1 across 225 questions.
- Docs site (Astro Starlight) built from
docs/and audited in CI.
Upgrade from v0.1.0
- Migrations 0024 to 0030 apply automatically on
docker compose up(themigrateservice). Back up first:scripts/backup.shis new in this release and the guide is in the docs. - The object-storage image moved to
pgsty/minioafter the Docker Hub and quay.io images rotted. Pull the newdocker-compose.ymlor update theminioservice; the bucket and data are unaffected. - New optional environment variables, all documented in
.env.example:GANEK_SENTRY_DSN,GANEK_EMAIL_PROVIDERand the Mailjet keys,GANEK_CAPTCHA_ENABLEDandGANEK_CAPTCHA_SECRET,GANEK_QUOTA_*,GANEK_ENCRYPTION_KEY(recommended: lets you rotate the signing secret without invalidating stored Google tokens and webhook secrets). - Images are now published for linux/amd64 and linux/arm64.
Run it
git clone https://github.com/Ganek-dev/ganek && cd ganek
docker compose upContainer images: ghcr.io/ganek-dev/ganek-backend:0.2.0 and ghcr.io/ganek-dev/ganek-frontend:0.2.0.
Docs: the quickstart and the self-hosting guide on the docs site; the compliance pack is in docs/compliance/. Hosted version: join the waitlist at ganek.io.
License: AGPL-3.0.