LonelyDNS Tech Stack

I’ve started and stopped several side projects over the years. Many of these false starts were the result of chasing shiny new programming languages and cloud-based services that promised to solve all my worldly needs.

I’m going to do something different this time: make my tech stack decisions up front and stick to them. Fortunately, I have a good idea of what technologies I want to use for LonelyDNS.


At the 10,000 foot view, LonelyDNS is basically a database-backed API with a web frontend. I’m using some technologies that I’m very familiar with, a few that I need a refresher on, and some that are brand new to me.

Let’s dig into the different parts.


PostgreSQL will be used for the database. It is a straightforward RDMS and my API server’s framework supports it. If I want to get fancy and use JSONB in the database, it supports that too.

An additional benefit of using PostgreSQL is several cloud providers I’m considering–specifically AWS & DigitalOcean–offer managed PostgreSQL database hosting. These can take the administrative burden off of me and allow me to focus on the app.


I’m building the initial version of the web app and API using Django because I’m most familiar and comfortable with Django/Python. This will allow me to quickly iterate through the account management and API functionality while I stumble with the frontend framework. And I expect to stumble.

Web Frontend

The frontend will use Vue.js and Tailwind CSS. Both of these are completely new to me so there will be a learning curve. I could use templates and views within Django but a goal of this project is to force me to learn a frontend framework.

Background Workers

LonelyDNS needs a way to periodically run scanning tasks asynchronously. Since the app and API will be built with Django, I’ll use Celery and a Redis broker to handle background tasks.

Misc Tech

The e-commerce/payment processing functionality of the app will be handled by Paddle. SMS notifications will be sent using Twilio while Sendgrid will be used for email notifications.

There are a few additional pieces to my tech stack that I’m using to keep my sanity during development. I’m using Docker and docker-compose to manage containers for the different parts of LonelyDNS (e.g. app, database, worker). I’m planning to use a MailHog container for testing email notifications.

Next Steps

Now that I’ve laid out what tech I’m planning to use, I’ll walk you through my development environment in the next post.