I wanted free subdomains for my project. Ended up building my own registry in Python (and fighting DNS, Git and Cloudflare along the way)
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
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"
}
}
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. =]
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.