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.