Ask HN: What's the best technology for a CRUD website to minimize maintenance

4 points by MrPowers ↗ HN
The first website I ever built (CodeQuizzes) still has some users and I'd like to migrate it to a tech stack that's easier to maintain: https://www.codequizzes.com/

It's a Rails app that's hosted on Heroku. It's a simple CRUD app that's backed by a Postgres database, only a few lines of JavaScript. I am a data engineer and don't have the time to keep up with the constantly evolving Rails ecosystem. I don't need a web framework that makes breaking changes to add new features.

* I know Python, but guess that Django is a constant maintenance effort after looking at all the releases

* I also know Scala, but find it really difficult to maintain, as I noted in this thread: https://news.ycombinator.com/item?id=26539508

* I'm working on a Node / React app right now and it seems it will also require constant maintenance

I'm leaning towards Go. From what I understand, Go really cares about backwards compatibility and lets you build a CRUD app that'll continue to work with minimal maintenance. Interested in thoughts on the best technology for this.

9 comments

[ 3.5 ms ] story [ 27.0 ms ] thread
Flask could be one option
Other than security updates why can't you just freeze your dependencies as they are now? Or am I understanding you want to continuously work on it but don't want to have to fix forward version incompatibilities?
Web Framework versions go EOL and then you're forced to upgrade. So constant maintenance is required with Rails, even if you just want to put the app in "security patch only mode".
I feel like this is less of an issue for Django but I don't have any data to support that opinion.
I've had a Django app running for 3+ years (stick to an LTS release) and it requires a very occasional security update (months in-between) but generally it's a 5 minute change to update the version, run the test suite and then push to prod
This website seems simple enough that you could conceivably write the whole thing in plain HTML + vanilla JS, with the quiz data stored as plain JSONs that you either inline or dynamically fetch() as needed. You can do all that with or without a (frontend) web framework, up to you. I don't think you need a relational DB at all, unless there's some hidden feature I didn't see at first glance?

What's the CRUD aspect? If it's just the user login + progress saving, you could probably outsource auth and then store their progress as user-specific metadata, tied to individual question IDs. Doesn't seem like you need much of a backend at all. Maybe a cloud KV store at most (Cloudflare, etc.) or the free plan of some headless CMS.

If you really prefer a relational backend, services like ElephantSQL and Cloudflare D1 and DigitalOcean offer low-costed hosted Postgres that you don't have to maintain yourself (no updates, OS to manage). Instead of a full-blown backend, just write a serverless function that your frontend can talk to which will fetch from the database. But again it's easier (as in lower maintenace) to just use a preexisting solution or headless CMS.

Host your frontend anywhere, like Vercel or Netlify, since it's just static HTML + JS.

TLDR eliminate the backend parts that you don't need, and maintenance becomes a lot simpler. You don't need a backend stack or any other languages except HTML and JS.

Out of curiosity: Which change in Rails broke a part of your system? I am also interested since I use also Rails.
I think you’re describing needs similar to an Enterprise, which primarily use .Net and Java.

I might encourage you to look at ASP.NET if you really want minimal maintenance and a modern-ish experience.