This is a log of stuff I did w/ one of my random pet projects, it’s not terribly interesting and is mostly just so I can get into the habit of writing more. You have been warned.
I wrote up the roadmap I have in mind for mealplanner. Or I guess thought up. Whichever.
It’s basically just the list of all the random things I want to do with the app, grouped by priority.
The roadmap is divided into milestones based on what I ultimately want to do with the app: use it myself and release it for others (as GPL licensed free software).
So there are two milestones: that which makes the app usable for me, and that which makes the app releasable. Everything else gets dumped into a “someday” category.
Milestone: Usable for me
Infinite scrolling for the recipe search
Right now there’s not even pagination. Obviously being able to go through the entire search result set is kind of necessary.
Building a meal plan by selecting recipes
The main functionality of the app. So also kind of necessary. The main challenge with this one’s gonna be the UX of allocating recipes to days. It needs to be quick and simple while using minimal screen real estate, but there are a lot of ways users might need to customize what days get what recipes.
Nutritional analysis of a meal plan
I want to be able to see the amount of calories a meal plan consists of, but I would also like to see the breakdown of micronutrients. A per-recipe view, a single day view and an average per-day view of a whole mealplan would be ideal.
Shareable list of groceries built from a meal plan
Once I build a meal plan, I want it to be as easy as possible to get the ingredients and actually do some cooking. The app should be able to create a grocery list from a meal plan. It should be possible to share the list (ie, email or something else).
Sending grocery list to a grocery delivery service
Not being able to drive, I personally will need something like this (or lose a day each week to shopping). Given that individual ingredients may not be easily matched to a product in a store, this could get complicated.
Recipe substitutions in a constructed meal plan
Plated recipes get kind of… fancy? … with, shall we say, uncommon ingredients. When they’re the ones collecting and shipping them it’s not really an issue, but, personally, I’m not gonna be looking for duck meat or any of the other interesting ingredients they used. And also, as an aspiring vegan, I’d prefer not to shop for meat, which a large number of recipes use.
So it’s definitely a requirement for me to be able to substitute recipe ingredients on demand.
Keeping track of most used substitutions
It would be very useful if the app remembered what ingredients/products were used as replacements.
Milestone: Releasable
A nice theme
I realize the bar is set pretty low for most open source software, but I would like the app to be pleasant to look at.
Distribution channels for every platform Tauri supports
If I’m going to release the app I need to know how exactly that is done on each platform and have procedures in place to do it with as little trouble as possible. And if possible, I’d love to avoid platforms and marketplaces owned by morally suspect big tech companies.
Supporting grocery pick up
I personally need grocery delivery, but I’m sure a lot of people would prefer picking them up. So it would be good if I could support the ability to place this kind of order with both a grocery delivery service, and directly to supermarkets that support it (thus bypassing more morally suspect tech companies).
Importing predefined recipe databases
When I’m using the app before it’s released, I’ll just be hooking up the plated database manually (so-to-speak). But there needs to be a whole workflow implemented in the released app for importing recipe databases. This means having the recipe database hosted somewhere, being able to pick it out in the UI, and downloading/installing it.
The app will also have to support updates to databases. Which becomes rather complicated given the app is not a centralized service.
Importing recipes from websites
Plated recipes are great, but there are a lot of great recipes just out on random peoples’ blogs. Being able to import those recipes is definitely a required feature for release. Something I definitely want for myself as well, mostly to have recipes for vegan substitutions of ingredients (of which a surprising number are in existence).
Manually adding recipes
Obviously people are going to want to add their own recipes. There will need to be a workflow for doing that.
Full end-to-end test suite
This isn’t really a feature, but as a single developer I will absolutely need as full a testing suite as possible. For me this will include unit tests, integration tests and visual regression tests. I’m not sure if I’ll use hosted continuous integration since I want to limit the amount of centralized services used in development as well as in the app, but the tests will definitely be there, and will get plenty of use.
Move PDF handling code to rust
Another technical item, but required for release. Right now the PDF handling code is in JavaScript, which means it blocks the main thread, freezing the UI for some time. This isn’t an issue for me using the app since I can ignore it (and also won’t be using the import feature). But it’s not something I want other users to deal with.
Other cool shit
OCR in the Plated recipe import
There are plenty of Plated recipes that couldn’t be imported, because in the database I have (from a reddit post), they’re just images of the original recipes. PDFs have text I can read and import, images on the other hand are just pixels. But it would be great if they could be imported.
To do that I’ll have to interface with some OCR solution (Optical Character Recognition). Which should be pretty interesting as it’s not something I’ve done before.
Recipe builder with flavor pairing database
From what I understand of cooking most recipes are built upon existing recipes or meal types, so-to-speak. For example, you start with a meal type, like a risotto, then pick ingredients to make it a full recipe.
I think it’d be pretty interesting to have a kind of tool for doing this in the app. Something that lets you pick the type of recipe it’ll be, then helps you pick ingredients using a flavor pairing database.
A cooking timer
I often find it hard when cooking, to keep track of all the different things going on and how long they should be going on for. I usually deal with it by doing less stuff concurrently, but that just makes the whole process take longer. It would be nice to have a cooking timer that made it easy for me to be able to do more while cooking.
Something that lets me quickly set a timer, associate it w/ an icon/color for the type of food, then keep going without having to constantly look at a clock/stopwatch.
“Veganize it” feature
Good vegan recipes can be hard to find in comparison w/ non-vegan recipes. It would be really useful (and an interesting way to make it easier to be vegan) if the app could automatically “veganize” a recipe. Like, automatically substitute non-vegan ingredients w/ vegan alternatives.
Not sure if it would work for everyone, since it would probably mean more work in the kitchen (for example, no one sells vegan chicken breast replacements, you have to make them yourself), but it would be pretty interesting.
Friends and recipe sharing
It’d be pretty interesting if you were able to friend other users and see/import their recipes (I think at least). It would also be a VERY interesting technical challenge.
Again, since this isn’t hosted software on centralized servers, networking with other users would be completely different from, really, every other distributed app out there. So the solution would have to be novel, and given the low risk of networking in this app (ie, someone gets access to your recipes as opposed to someone gets access to your bank account), this feels like a perfect place to explore this.
It would be absolutely, fucking amazing to me if I could get a sense of how to create a distributed API, like normal HTTP/REST/etc. APIs, without ever having to use a centralized server. And if it could be generalized into something simple for others to implement, well… that could be big.
Recipe ratings and favorites
Pretty self-explanatory, but being able to favorite and assign ratings to recipes that you may have imported from another user, would be a useful addition to the app.
Advanced filter for searching
As a follow-up to the last item, being able to search through favorites or by rating or by source (ie, from the web, from a specific blog, from a specific user, from a specific recipe database, etc.). This would certainly be useful to some users. ``