This is a good practice tho. The HTTP code describes the status of the HTTP operation. Did the server handle it? No? Was the url not found? Did it time out? Was the payload too large? And the JSON describes the result of the backend operation. So 200 OK with error: true
means that your HTTP request was all good, but the actual operation bugged out for whatever reason. If you try to indicate errors in the backend with a HTTP error code, you quickly get confused about which codes can happen for what reason.
Yeah this is the way. Debian stable has outdated packages, debian testing has broken packages. Ubuntu is difficult for beginners because of snap. Linux mint is the perfect just-works debian-based beginner distro. Same for DE: Gnome is hard to use, KDE is bloated and unstable, and XFCE is too minimalist/diy/quirky for beginner users (you need to add a panel applet in order for the volume keys to work? Huh??). Cinnamon is the perfect middle ground between resource usage and features.
Or at least as large as your RAM if you want to be able to hibernate.