This is finalist, the final list app you'll hopefully ever need (get it)
For additional context, see this blog post
I initially wrote this in Common Lisp in 2021 using clog in Common Lisp, but ended up rewriting it from scratch. Initially I wrote this for two reasons: First, because I wanted a way to sync grocery lists between my phone and my wife's phone, and all the major alternatives at the time really sucked or were paid, or were paid and also really sucked. Second, because Clog is cool but I wanted to learn how to do frontend work in a modern SPA style, using client-side routing and decoupling the front- and back-ends, etc., so I rewrote the frontend into vanilla JS and the backend into golang.
I purposely eschewed using any front-end frameworks like React because this is first and foremost a learning endeavor that I tinker with in my spare time. Unfortunately that means it's not very cleanly written (mostly on the frontend). The Javascript is one giant 900-line file. It's hideous. You'd hate it.
I'm currently porting the backend to Ruby on Rails