Questlog 0.29 – Technical Debt

Hi there! This update is more exciting for me than for you all, because it removed a big burden of mine: Technical Debt.

In development the term describes the phenomenon that you have to update your dependencies (Like Frameworks, Third Party scripts etc) or change your code in a way it’s more modern or efficient.

This can be as simple as using more modern CSS to style something more flexible and with better performance. This can mean using a native Browser API instead of a custom JavaScript to achieve something. Or it can be as scary as updating a Framework.

Behind the Scenes Questlog works with Laravel und Vue.js. In the layer between sits Inertia.js to make things even smoother for me. When everything works, everything is awesome. But when one of the three layers gets an big update things get scary fast. This time Vue and Laravel were the big updates I wanted to achieve.

Vue.js 3.5

Gladly Vue was extremely smooth. No breaking changes but some nice features and Syntactic sugar. This term describes that you can do something in a cleaner way as before. For example needing to write 10 lines of code but now only needing one line. Or having a complex and unreadable way to to something and get a much cleaner way to achieve the same.

So this one was nice and easy, made my code better and resulted in less compiled JavaScript. And I guess we all can agree, that less JavaScript is always better.

Laravel 11

Laravel 11 got release a couple of months ago actually. Back in March it released and was pretty controversial. Not many features but a huge load of code changes. It’s still controversial of this was a good change or not but they did it and we have to live with it now. I like the way Laravel 11 is structured but I think it just turned around too fast. Too many things changed at once and that made the update more complicated.

While Vue.js 3.5 was so easy I took the time to refactor some parts of the app to use (and compile) less code, Laravel 11 was scary. Nothing worked in the first place and I had to dig through the Framework code to find it. I actually started to write on my private Mastodon account about this.

And I’m glad I did.

I was far from the only person that experienced challenges like me and this not only gave me confidence I’m not an imposter for 18 years of coding now but also gave me the opportunity to get help. Especially one post from Stefan Zweifel helped me a lot. Without him it would have taken me much longer to fix the Exception handling.

Anyways: It worked out after a few hours of coding and I deployed it just yet. 🎉

So… Why did I made this update now and now half a year ago? First of all: All the changes were scary. And because there were no clear benefits to me I just didn’t see why I should go through this. But Laravel gets an update every week and gets better and better and Laravel 11 now has features I want to use for Questlog. Features that enable me to do stuff I wanted to do for a while but couldn’t without tinkering a lot.

Now it’s “just” a function call here or a new service there to get this working. Still work, but a lot less than before.


On my way I fixed some smaller bugs I noticed and cleaned up the code. The full* Changelog follows as always:

*Full means “for you noticable changes” this time as I restructured a lot of code and this info is probably extremely boring for you. Even more than this whole post 😀

Changelog

Improvements

  • The background color of the header bar in profiles is now lighter resulting in a much better contrast
  • Multiple noticable performance improvements by Vue.js, Laravel 11 and own optimiziations
  • Reduce the footprint of some replies from the server to speed things up and transfer less data to you
  • Change the way success and error messages are presented in auth forms
  • Improve accessibility for profile picture upload
  • Improve accessibility for modals
  • Instead of hiding empty sections in user profiles there’s now a placeholder indicating that there should be something
  • Improve headline readability

Fixes

  • The play status navigation isn’t vanishing in Chrome anymore on profiles
  • The PlayStatusNavigation on profile pages now refreshes correctly
  • Remove nested headlines on home