An article from Ars Technica in December 2024 discussed a pattern the author was using for making small, personal apps that were effectively front-ends for a Google Sheet. One of the two apps discussed was a recipe app that would help with meal planning and shopping.
I went a good deal further with my "DIYRoot" app. After using a couple meal delivery services, I sussed out the kinds of recipe formulas they were mixing up each week, plus the items or equivalents I had found at nearby stores. Knowing that I could figure out the basic cooking, I made an app that listed as many recipes as I could find, broke them into components, let me add them to an erasable menu plan and shopping list, and even had some pictures.
I didn't quite master this app (the shopping list is plagued by blank items/rows), and it's now technically an outdated "Classic" Glide app; maybe I'll give it another shot. More successful is my most recent effort, "Pantry Items," which is just a searchable list of spices and sauces, a note about how much I have left of each, and, through a webhook, add anything I see missing to a shopping list on Bring.
The no-code framework used by the author was Glide. I investigated the tool but recently it had made building apps based on Google Sheets a paid feature.
I considered using Simon Willison's Python framework Datasette, which is geared towards the type of complex searching I wanted to do, but would require a small amount of hosting costs as it is a server-side application. It has a robust plugin ecosystem, largely built by Willison himself, and had plugins to allow for data to be added. What ultimately lead me to abandon that (at least for now) is the relatively small user community on the Datasette Discord and a relatively inactive discussion pace.
I rediscovered TiddlyWiki during my search, which I had explored close to when it was first developed around 20 years ago. Around the same time, the "Staff Pick" comment on the Ars Technica article mentioned above said that they use TiddlyWiki as well!
My go-to tool for projects like this has become TiddlyWiki, which, on its surface, is a quirky little wiki with a fun party trick where the code and data of the wiki can be entirely self-contained in a single HTML file. Browser extensions can allow the page to write changes back to the file locally, or you can make edits in-browser and save a new file, or, easiest of all if you know what all the words mean, you can run a very lightweight Node server that saves changes server-side and requires no extensions at all. (It's the only Node package I've ever seen with zero dependencies.) If you bundle it up into a single file, that's the entire, fully-functional wiki, so even if you're editing with the server, you can send the HTML file to someone else and all the same viewing and editing tools are there, even offline. Images can even be included (they get base64 encoded and put in the file). Neat.
But! This is just the surface level. The thing is, TiddlyWiki is almost entirely written in TiddlyWiki. There's a very small core of JavaScript to bootstrap the thing, but after that, basically everything is implemented in wiki objects called "tiddlers" (they apparently didn't feel that any other word fully conveyed what these things are, haha. But they're basically objects of key-value pairs). There's a whole little universe of tools built with them in there: widgets are custom HTML-like tags that take input and produce output, there's a query language called "filters" that's simple on the surface but has SQL-like abilities if you get fancy, and "transclusion" where a tiddler is piped through another tiddler which allows templating. Everything on the page of a TiddlyWiki is a tiddler if you go digging. The "articles" themselves, buttons, checkboxes, radio buttons, drop-down menus, the search box, the wiki editing tools, all of it. And any tiddler can be edited or replaced.
Are you getting it? They haven't built a quirky little wiki. They've built a lightweight and user-friendly web development framework with front end tools, an object database, and a query language for interacting with it, and they used it to make a quirky little wiki.
This was the final push I needed to start my experiments in TiddlyWiki.