Today we've shipped Starchart 0.3, which lays the ground work for a lot of interesting feature work in 0.4+.
The release includes a similar amount of code to 0.2. Here are some highlights:
- CI Workflow updates, including a new job to build and push our Docker image to the GitHub Container Registry. We hope to use this in production soon (maybe by 0.4)
- Add UI for the Domains table
- Updated UI for the Header and Login to make things responsive
- Wrote Prisma models for the remaining bits of our schema that needed it
- Wrote the Certificate Ordering Worker/Queue process code. This will get filled out with the previous Let's Encrypt API that landed previously in the next releases
- Fixed our CSP code so Remix uses a nonce on all scripts
- Added tests for the notifications code
- Updates to our dependabot config to include Docker and GitHub Actions. We also merged quite a few updates from dependabot.
There was also quite a bit of work that slipped. The decision was made to push this all to 0.4, which was the right move. However, I'm sad we couldn't get this all reviewed and landed:
All of these are partially working, but the scope of the PRs is such that we can't land any of it. That means we failed because we approached the task as all-or-none. In the coming releases, I'm hoping to guide the team toward smaller and more frequent PRs vs. always thinking in terms of features. A feature is great, and everyone loves to see some new thing suddenly spring to life. But a feature is almost always best thought of as a series of PRs: dependencies, APIs, back-end, front-end, tests, docs, etc. Splitting that work up into smaller bits makes it much, much easier to review and land.
We're moving fast, so I have no doubt that these features will all get in this week (hint to the developers!). To get there, we'll need to solve another problem I'm seeing: people thinking about their code vs. our code. There is only our code. We need all of it in order to ship this app. Your code is useless to me without everyone else's code too. I can't function without a database, without auth, without a build system, without front-end, without API calls, without docs, without automation, without testing, etc. The app is all of this, and more.
We have to help each other land their code. This means doing design work and talking in Issues; doing PR reviews (lots of reviews) in a timely manner; testing code before and after it lands, and filing Issues when things break. Above all, it requires system-level-thinking. If we all keep our heads down and only look at the small area of code we're working on, we won't get this done.
I leave 0.3 with some frustration, but also excitement of what's about to get unlocked in 0.4.