Contents

The Side-Project Takes a Hard Right Turn

Ugh. 2021 is halfway over and you probably noticed that LonelyDNS has not been released yet.

I completed a Django-based MVP back in March, deployed it to Heroku, and then solicited feedback from some trusted friends. It was very honest feedback. I started to implement some of the changes and then became disillusioned with it (and Heroku).

Below I have captured some of my thoughts on what did and didn’t work so far.

The Really Good

User Registration. The user registration process worked great. When a user signed up, they received an email with a verification link. Once the email address was verified, they could use the app.

Transactional Email Service. PostmarkApp worked great for transactional account email and email notifications. I had no issues at all.

The Ok

Multi-Tenant Support. I had a very basic multi-tenant architecture working where users could only see and manage their own domains and alerts. It worked but was very basic and did not support inviting additional users to your tenant.

DNS Lookup Workers. Celery and Redis supported a couple of Python workers that performed the periodic DNS lookups. The setup was rock solid during testing and for the most part, did well on Heroku.

The Not So Great

Web App Design/UI. I had not completed the UI design when I first deployed the MVP. I was still trying to figure out what I wanted the user’s experience to be and I did not invest much time in it. During my initial user feedback, it became crystal clear that what I thought made sense was actually confusing to end users.

Heroku (& Redis & PostgreSQL). I started seeing odd errors that initially started with user registrations and logins failing. Later, the Python workers performing the DNS lookups started throwing odd errors. While I only had 3 “active” users, I was running into PostgreSQL and Redis connection limits. These errors were compounded by the repeating DNS lookups every 5 minutes. I was able to increase the PostgreSQL and Redis instance sizes and implement connection pooling for the database. However, I continued to hit connection limits which caused a terrible user experience.

Where to now?

I’m going back to the drawing board on some things. I have not given up on this side project yet but I’m not happy with my architecture nor some of my design choices.

I hope this re-evaluation won’t take too long and I’ll be able to make some changes and get more valuable feedback on MVP v2.