Update to Shelf-Dockered

Re-make of the Shelf Docker app. Lessons learned.
Update to Shelf-Dockered

Late last year, I vibe-coded an existing project called 'Shelf' to containerise it after the main-branch didn't work well in my environment despite me RTFM. Shelf is a little favourite project that I've been following since its first release cause it was a way of hosting and showing off a little bit of yourself in this world of platforms.

The original vibe-coded project had a major flaw. I translated all variables and hardcoded them into the code. This would make refactoring to docker container a complex process due to the amount of code that needed to be done each time @barrowclift released a new version.

Why did I make such a rookie error? Well because I had little to no idea what I was doing and what were the options. Most AI minimalists would say that is expected. I trusted the approach after several planning sessions with Claude Code and of course 2-3 months later a new release came from main-branch and I didn't want to go through the pain/token-burning of it all again.

What did I improve this time around?

  • There's a start-up script that takes the environment variables from the docker-compose .YAML and injects upon container start
  • I created a docker repo buildx script for AMD64 and ARM64 this time around. My first build / deployment was ARM64 only. 🤦‍♂️
  • The first release took weeks to deploy and troubleshoot. Second release (the refactor) took 2-3 days. The next release after that took minutes to merge.

What lessons are there from this?

  1. Keep it simple, stupid! Keeping it small and as simple as possible made this project so much more fun and manageable.
  2. Vibe-coding is a great spring-box to learn so many concepts. Just put time aside to learn from the mistakes, go through the code.
  3. Planning planning planning. Plan without AI. Then plan with AI. Be descriptive. Claude Code's course is a good starter.