domainhawk checks the names you care about against official registry records, and sends a email the moment one comes free. https://domainhawk.chaops.de
  • Go 83%
  • HTML 9%
  • CSS 7.3%
  • JavaScript 0.3%
  • Shell 0.2%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
rwxd 4b7ae3abbf
All checks were successful
Build and Release / test (push) Successful in 2m42s
Build and Release / container (push) Successful in 3m9s
Build and Release / prune (push) Successful in 8s
Build and Release / semantic-release (push) Successful in 1m5s
ci: keep latest on the newest release
Only move the latest tag for an explicit latest=true dispatch. Semantic-release sets it automatically; manual backfills of older tags now leave latest untouched.
2026-11-06 19:08:17 +01:00
.forgejo/workflows ci: keep latest on the newest release 2026-11-06 19:08:17 +01:00
docs ci: keep latest on the newest release 2026-11-06 19:08:17 +01:00
e2e feat(drop-radar): add registry details, expiry and drop alerts 2026-11-06 17:18:35 +01:00
internal feat(drop-radar): add registry details, expiry and drop alerts 2026-11-06 17:18:35 +01:00
migrations feat(drop-radar): add registry details, expiry and drop alerts 2026-11-06 17:18:35 +01:00
scripts ci: prune images through the forgejo api 2026-10-24 12:04:06 +02:00
.dockerignore fix(security): harden OIDC discovery, headers, origin checks and UI fallbacks 2026-10-23 20:09:40 +02:00
.env.example feat(logging): add structured json logs and pocketbase mirror 2026-11-06 14:02:56 +01:00
.gitignore ci: build multiarch images with podman 2026-10-24 11:27:05 +02:00
.releaserc.yml ci: add Forgejo container releases and image pruning 2026-10-24 09:00:00 +02:00
docker-compose.yml refactor: rename project to domainhawk 2026-10-23 23:24:07 +02:00
Dockerfile ci: build multiarch images with podman 2026-10-24 11:27:05 +02:00
go.mod feat(auth): add account settings, registration, reset codes and help 2026-10-24 02:48:23 +02:00
go.sum feat(ui): add hawk branding, docs pages, and fix watchlist dividers 2026-10-24 00:37:39 +02:00
main.go feat(logging): add structured json logs and pocketbase mirror 2026-11-06 14:02:56 +01:00
Makefile feat(logging): add structured json logs and pocketbase mirror 2026-11-06 14:02:56 +01:00
README.md feat(drop-radar): add registry details, expiry and drop alerts 2026-11-06 17:18:35 +01:00

domainhawk hawk logo

domainhawk

A hawk's eye on every domain you want.

domainhawk is a small, self-hosted domain watchlist. Add a domain and it checks the registry every four hours, emailing you once the name becomes available. It also reads registration and expiry details from RDAP, warns you before a registered name expires, and flags drop-related registry states. The UI is server-rendered with HTMX, availability comes from authoritative RDAP with a WHOIS fallback, and data, users and auth live in an embedded PocketBase.

Quick start

go run . serve --http=127.0.0.1:8090 --dir=./pb_data

Open http://127.0.0.1:8090. On a fresh data directory PocketBase asks you to create a superuser; the dashboard is available at /_/.

For local development without an identity provider, enable the password form and seed a user:

export DH_APP_URL=http://127.0.0.1:8090
export DH_PASSWORD_AUTH=true
export DH_SEED_EMAIL=you@example.com
export DH_SEED_PASSWORD='a-long-dev-password'
go run . serve --http=127.0.0.1:8090 --dir=./pb_data

DH_SEED_* is intended for development and tests. Remove it in production.

Documentation

The full documentation is embedded in the binary and served at /docs.

Guide What it covers
User docs User guide and API reference.
Operations Configuration, OIDC, availability semantics, production and Docker.
Development Tests, build tags, project layout and stack.

License

No license file is included yet. Add one before distributing.