brainsteam.co.uk/brainsteam/content/posts/2023/11/13/Gastronaut - Fediverse Reci...

122 lines
8.2 KiB
Markdown
Raw Normal View History

2024-09-08 15:00:57 +01:00
---
categories:
- Software Development
date: '2023-11-13 20:56:06'
draft: false
2024-10-28 20:59:46 +00:00
preview: /social/aca44f77e7aa46d631bdcff6bd35b869400c6943af01b23e06b5dbfb5c3b50be.png
2024-09-08 15:00:57 +01:00
tags:
- gastronaut
title: Gastronaut - Fediverse Recipe App
type: posts
2024-09-08 17:23:07 +01:00
url: /2023/11/13/gastronaut-fediverse-recipe-app/
2024-09-08 15:00:57 +01:00
---
<!-- wp:paragraph -->
<p>Over the last few days I've been starting to build out a webapp. I was inspired by a personal "itch" I want to "scratch". Although I'm a long way from ready to share my app, I thought I'd take the time to write up some of my initial ideas and choices. I'm a big fan of building with the garage door up and as Pieter Levels says - it's better to share ideas early and get out of your own head.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">My Inspiration? Whisk.com</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>I was, until recently, a big fan of <a href="https://whisk.com">whisk.com</a>, a proprietary recipe app that allowed you to create and share recipes, create a food plan for the week and then use that food plan to put together a shopping list. I love the fact that it normalises units across recipes and estimates conversions between volumes and weights for common foodstuffs (e.g. it will guess at how many grams of sugar you need in total if one recipe calls for 200g and another calls for 2 tablespoons). I also love the recipe importer tool that allows you to paste in URLs to your favourite recipes around the web and automatically pull in the ingredients and quantities for your grocery list.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Whisk was recently acquired by Samsung and is now Samsung Food. Most of the functionality is still there but there are some obnoxious signs of early enshittification, a big "Get App" button if you're using the web form. It got me thinking.... what would happen to all my recipes and food plans if this app went away?</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Name Ideas</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>I spent a little time coming up with some name ideas. Initially I went with nurishify but I decided it was too many syllables. The next one, which I was very pleased with was GastroPub which is a portmanteu of Gastronomy and ActivityPub but also a play on the british Gastro Pub - a fancy pub/bar that also serves nice food. I decided that GastroPub might be too British and also might confuse people who are genuinely looking for GastroPub recommendations. The name I've settled on for now is Gastronaut - a portmanteau of Gastronomy and Astronaut. I like the idea that it's like food space exploration and I imagine I could have a cute little logo with an Astronaut holding a knife and fork or something.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Intended Functionality</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>The idea is to offer many of <a href="https://whisk.com">Whisk.com</a>'s features but in an open, interoperable way. For example:</p>
<!-- /wp:paragraph -->
<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Import recipes from websites or books</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Share recipes with friends (and plug into ActivityPub so that they can be tooted/reposted etc)</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Manage your food plan and grocery list</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>In the short term, my intention would be to make a neat import/export tool that uses common formats like CSV and Markdown so that someone could download all their data and keep it safe if their instance started to creak but perhaps longer term there could be some kind of profile migration tool like Mastodon offers.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>I am a machine learning and natural language processing specialist so I have some ideas about how the system could auto-import recipes from websites but maybe also from photos that have been OCRed. LLMs are probably a bit overkill for this kind of use case, I suspect open source NLP pipelines like <a href="https://spacy.io/">SpaCy</a> would do pretty well at some of these tasks.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Tech Stack</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Rather than using this as an excuse to learn some new trendy language or tool, I want to get something up and running quickly. Therefore, I'm going to rely on well established, and probably 'boring' tools and frameworks to get the job done. The core web app is <a href="https://www.djangoproject.com/">Python Django</a>. I want to keep the frontend simple and minimalist and avoid javascript hell so I'm using the <a href="https://milligram.io/">Milligram</a> lightweight CSS framework along side jQuery and <a href="https://htmx.org/">HTMX</a> for doing some lightweight UX stuff. I'm going to use Python+<a href="https://docs.celeryq.dev/en/stable/getting-started/introduction.html">Celery</a>+<a href="https://redis.io/">Redis</a> for the worker queue system (for doing things like importing recipes).</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Funding and Sustainability</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>It may be a bit cheeky but<a href="https://ko-fi.com/jamesravey#"> I already have a Ko-fi page</a>. If this thing takes off I'd be interested in turning it into a side-gig. I would also ask people using the flagship instance of this software to make a regular donation if they can. I may also provide some "plus" features such as OCRing recipes from phone camera pics and charge a small fee for convenience. People would be welcome to self-host stuff and set up and pay for all the infrastructure for the premium features but likewise, they would probably find it cheaper and easier to use the central instance. </p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Early Screenshots/Mockups</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>I've already started building out the app. Below are some photos of the current state of the system with the old Nurishify name/brand that I came up with.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>I started with a simple landing page explaining what the app does and encouraging the user to sign up</p>
<!-- /wp:paragraph -->
<!-- wp:image {"id":382,"sizeSlug":"large","linkDestination":"none"} -->
2024-09-08 17:23:07 +01:00
<figure class="wp-block-image size-large"><img src="/media/image-7-1024x1021_82c5e7dc.png" alt="A landing page. There is a photo of some food on a chopping board and a summary of the app and what it does. There is a button inviting users to sign up to use the app." class="wp-image-382"/></figure>
2024-09-08 15:00:57 +01:00
<!-- /wp:image -->
<!-- wp:paragraph -->
<p>I made a mock up of the home screen where you'd be able to see your friends and what they'd posted about and manage your own recipes</p>
<!-- /wp:paragraph -->
<!-- wp:image {"id":381,"sizeSlug":"full","linkDestination":"none"} -->
2024-09-08 17:23:07 +01:00
<figure class="wp-block-image size-full"><img src="/media/image-6_21421888.png" alt="A mockup of the app. On the left there is a full size picture of the user's avatar and underneath it summaries and links to the user's recipes, food plans and shopping list. On the right, a news feed showing people liking the user's recipe and adding their own." class="wp-image-381"/><figcaption class="wp-element-caption">A screenshot of the home screen with the old Nurishify name</figcaption></figure>
2024-09-08 15:00:57 +01:00
<!-- /wp:image -->
<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">What's Next?</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>I'm quite excited about building this thing out but I'd love to get your feedback! Any killer feature ideas? Any thoughts about how things should work? Any names that are better than Gastronaut?</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>In the next few days I will probably share a Github repo for my project but for now please follow me on my blog or on fosstodon for updates if you're interested!</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Thanks for listening to my ted talk!</p>
<!-- /wp:paragraph -->