The Idea

Background

I was going to start with my next project (Barelytics) right away, but I feel like I should work on this first.

The idea with DevJourney was to create a simple project, go slow and build something I understand and can build upon easily. I wanted the end result to be a simple but effective full stack solution that I can reuse for future projects. This includes frontend, backend, and infrastructure.

The Stack

I've landed on Go and Postgres on backend, NextJS on frontend, and a mostly self-hosted infrastructure.

Backend

I feel like my backend is rock solid. It will need little to no modifications going forward. I can add stuff easily, I'm comfortable with the language, the tools and the workflow, and I rarely need to look things up.

I might need to change a few things to accomodate unit testing if I ever decide to do that, but I'm more likely to introduce an integration testing stack. This is an open question and something I will tackle only if I start scaling any of the projects massively.

Infrastructure

I've put a lot of work into building the infrastructure well, and it's been paying off.

The versioning and releases are 100% automated. This greatly simplifies my life, as it takes off the overhead of thinking about deployments and rollbacks completely.

The observability is set up and working. I haven't had that much use of it though, and haven't used it much since Code Interactive, so some of the config has gone stale. I will revisit it if a need arises, not before.

My Postgres instance is running with automatic backups. I am self hosting it, which is not ideal, but I need to keep my costs at absolute minimum. I can easily migrate to a managed solution if the need arises.

I am running everything using Docker Compose. It's been working very well.

Frontend

The frontend is a bit problematic.

I am using NextJS but I don't completely understand it.

I'm not completely sure how to structure stuff nicely and use all of the NextJS capabilities.

I was also thinking of abandoning NextJS altogether, as I can't seem to produce a good result with it. Most of my pages are relatively slow to load, although they're pretty much serving static content. I don't have the capacity for that yet though, so the first iteration of hatch will still be using NextJS.

hatch

The Problem

  • I want to build and deploy products rapidly to allow fast iterations and experimentation
  • I want to automate most of the boring work, allowing me to focus 100% on building the products and have more fun while doing it.
  • I want most of my projects to have a similar structure, so that jumping between them is easy
  • I want my code to be well written, simple and clear, to keep the devex good and mental overhead low

The Solution

Hatch is a project bootstrapper.

It allows me to deploy a working project in a few minutes. This includes:

  • Simple logo / Design
  • DNS records
  • Repositories
  • Infrastructure
    • Auth
    • Database
  • Frontend
  • Backend

Tomorrow I will dive more into the brainstorming and writing out everything that needs to be done.

I will aim to get this to a usable state as fast as possible, so that I can start working on Barelytics.