Introducing LonelyDNS (the side project)

I’ve had an idea for a side project for several years but I have not had the time to bring it to reality. After taking some vacation time to ponder, I’d like to introduce you to my future side project aptly named… LonelyDNS.

So what does it do?

LonelyDNS is going to be a web application that allows you to monitor your DNS zones for changes. It will:

  • Actively Poll Domains: It will actively poll your domain’s DNS records (e.g. NS, SOA, MX, A, CNAME for www), validate DNSSEC (if used), and record any changes since the last polling cycle.

  • Alert on Changes: If a significant change is detected–your domain starts using new nameservers or is not resolvable)–an alert will be sent. I’m envisioning user configurable alerts that can use email, SMS, Microsoft Teams, Slack, or Pagerduty.

  • Perform Periodic Health Checks: In addition to the polling, LonelyDNS will a perform weekly or monthly DNS “health check” for your domains. It will verify that your DNS records are RFC-compliant and follow best practices (e.g. NIST 800-81-2). Results from the health check will be emailed to account owners.

  • Support Multitenancy: The app will include multi-tenant support but I’m not sure which multitenancy approach I’m going to use yet.

  • Implement a self-serve first approach: I want the account registration and billing to be as painless as possible. While I have some experience with Stripe, I’m going to investigate using Paddle for this project.

In theory, this sounds relatively simple.

My Goals

My goal is to use LonelyDNS as a professional development opportunity outside of my day job. Specifically, I’m looking to:

  1. Brush up on my Test Driven Development Django skills
  2. Implement a true multi-tenant Django app
  3. Keep my docker/aws/terraform/postgresql knowledge current
  4. Gain experience with Vue.js
  5. Gain experience with Tailwind CSS
  6. Make something useful

This project may be a good candidate for a future series on how to transition a web app from Django to Go or Elixir. I’ll cross that bridge when I get there.

Why this blog post?

I could toil away in secret and release this web app on the world once its complete.

However, my wife has informed me that I’m more likely to follow through and complete a project when others know about it. By announcing this to the world, I’m forcing myself to be accountable. (Maybe I should also post that I will get my private pilot license in 2021?)

Here’s to the journey ahead!