Cover image for I wanted free subdomains for my project. Ended up building my own registry in Python (and fighting DNS, Git and Cloudflare along the way)

Illium

I registered fluxcast.dev for my Linux casting project (FluxCast). One apex record was enough, the rest of the subdomains were just wasting away.

Then I remembered is-a.dev. The idea of getting free subdomains through a simple GitHub PR looked so good that I decided to build my own version.
"Sounds like an evening project," I thought.

It wasn’t.

The validation rabbit hole

First I needed proper validation. I wrote a bunch of checks using pytest. Blocking private IPs was easy with ipaddress, but catching duplicate keys in JSON was trickier, Python’s json.loads silently keeps only the last value. If I hadn’t caught that, someone could have hidden malicious records in a PR.

Production paranoia

The real fluxcast.dev landing page was already live. I was terrified of accidentally deleting it with my sync script. So I made every managed record carry the tag managed-by:fluxcast-domains. The script only touches records with this label. Everything else is invisible to it.

Of course I still managed to confuse Zone ID with Account ID in the Cloudflare dashboard. Then came the fun error: TypeError: Missing required argument: 'ttl'. Turns out the new Cloudflare Python SDK made it mandatory.

Git strikes back

While studying is-a.dev I cloned their repo for reference… and somehow committed the entire .git folder as a submodule. On GitHub it looked completely broken. Regular git rm didn’t help. I had to rewrite history with a clean commit.

The final boss

When I finally ran the real sync, it stayed "in queue" for minutes. Turns out GitHub had a small Actions hiccup and my repo was private (private repos get lower priority). Made it public — problem solved.

Then I created a public API endpoint on raw.fluxcast.dev via GitHub Pages. Opened it in the browser and got a big red "Connection is not secure" warning. For a few scary seconds I thought the domain was hijacked. Nope — just the certificate hadn’t propagated yet, and .dev is in the HSTS preload list.

Result

Now anyone can get a free yourname.fluxcast.dev subdomain in minutes:

JSON

{
  "owner": { 
    "username": "your-github-username", 
    "email": "[email protected]" 
  },
  "records": { 
    "CNAME": "your-github-username.github.io" 
  }
}

Enter fullscreen mode Exit fullscreen mode

No accounts, no long reviews, no "is your project developer-related enough?" nonsense. As long as it’s not harmful — you’re good!

The registry is very fresh. If you want a subdomain, the guide is here: https://sub.fluxcast.dev

Repo: https://github.com/IlyaP358/fluxcast-domains

Would love your feedback, bug reports, or ideas how to make it better. =]