Contents

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.

Architecture

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.

Database

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.

App/API

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.