Skip to content

Ganek v0.2.0

Choose a tag to compare

@grumpy-miner grumpy-miner released this 23 Oct 20:29
· 355 commits to main since this release
af07b7e

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 via GANEK_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.completed with 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 (the migrate service). Back up first: scripts/backup.sh is new in this release and the guide is in the docs.
  • The object-storage image moved to pgsty/minio after the Docker Hub and quay.io images rotted. Pull the new docker-compose.yml or update the minio service; the bucket and data are unaffected.
  • New optional environment variables, all documented in .env.example: GANEK_SENTRY_DSN, GANEK_EMAIL_PROVIDER and the Mailjet keys, GANEK_CAPTCHA_ENABLED and GANEK_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 up

Container 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.