<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TechGirl007</title>
    <description>The latest articles on DEV Community by TechGirl007 (@techgirl007).</description>
    <link>https://dev.to/techgirl007</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F240720%2Fc6e6048c-d24a-4195-bfa7-937288c7ee09.jpeg</url>
      <title>DEV Community: TechGirl007</title>
      <link>https://dev.to/techgirl007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techgirl007"/>
    <language>en</language>
    <item>
      <title>Fridge2Fork ~ Before it Goes in the Bin</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Sun, 18 Oct 2026 04:47:45 +0000</pubDate>
      <link>https://dev.to/techgirl007/fridge2fork-before-it-goes-in-the-bin-381f</link>
      <guid>https://dev.to/techgirl007/fridge2fork-before-it-goes-in-the-bin-381f</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;You open the fridge. Three eggs, half a bag of spinach that's starting to wilt, some feta, a heel of stale bread. You stand there with the door open, have no idea what to make, and order takeaway. The spinach goes in the bin on Thursday.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why it matters
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Every day, the world throws away more than a billion meals, while 783 million people go hungry.&lt;/strong&gt; Most of that waste does not happen in farms or supermarkets, but at home.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That small amount in the fridge adds up. According to the UN Environment Programme's &lt;a href="https://news.un.org/en/node/1148036" rel="noopener noreferrer"&gt;Food Waste Index Report 2024&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.05 billion tonnes&lt;/strong&gt; of food were wasted in 2022, about &lt;strong&gt;one fifth&lt;/strong&gt; of all food available to consumers, on top of the 13% lost between harvest and the shops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Households wasted 631 million tonnes, about 60%&lt;/strong&gt; of it. That's &lt;strong&gt;79 kg per person per year&lt;/strong&gt;, more than restaurants (28%) and shops (12%) put together.&lt;/li&gt;
&lt;li&gt;Food that's grown but never eaten is linked to &lt;strong&gt;8–10% of global greenhouse gas emissions&lt;/strong&gt;, about five times the emissions of the aviation sector. Food rotting in landfill releases methane, which traps far more heat than CO₂ in the short term.&lt;/li&gt;
&lt;li&gt;It costs the world economy an estimated &lt;strong&gt;US$1 trillion a year&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It costs families too: around &lt;strong&gt;AU$2,500 a year for an Australian household&lt;/strong&gt; (about $48 a week) and roughly &lt;strong&gt;£780 a year for a UK family&lt;/strong&gt; (&lt;a href="https://www.wrap.ngo/resources/report/wrap-food-loss-waste-research-summary-report" rel="noopener noreferrer"&gt;WRAP&lt;/a&gt;). With food prices and interest rates rising, $48 can make a big difference.&lt;/p&gt;

&lt;p&gt;The UN's &lt;strong&gt;Sustainable Development Goal 12.3&lt;/strong&gt; aims to &lt;strong&gt;halve per-person food waste in shops and homes by 2030&lt;/strong&gt;. Governments and supermarkets can't do that on their own. It comes down to millions of small decisions in millions of kitchens. &lt;strong&gt;Fridge2Fork helps with that decision: what to cook with what you already have.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fridge2Fork&lt;/strong&gt; fixes that moment. You type in what's in the fridge, tick what's in your spice rack and cupboard, and a local AI suggests a recipe that uses up as much of it as possible (tap 🔄 for another). Each one shows how long it takes, which of your ingredients it uses up, anything else you'd need to buy, and step-by-step instructions.&lt;/p&gt;

&lt;p&gt;You can steer it:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Choices&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧂 Spices&lt;/td&gt;
&lt;td&gt;18 common spices (salt, cumin, curry powder, Italian herbs…) plus add your own. Recipes &lt;strong&gt;only&lt;/strong&gt; use what's ticked.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🥫 Cupboard&lt;/td&gt;
&lt;td&gt;stock cubes, tinned tomatoes, pasta, rice, coconut milk, soy sauce… plus add your own&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meal&lt;/td&gt;
&lt;td&gt;breakfast, lunch, dinner or snack (it guesses from the time of day)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kind of dish&lt;/td&gt;
&lt;td&gt;🎲 Surprise me, or ask for a soup, curry, stir-fry, salad, fritters, pie…&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cuisine&lt;/td&gt;
&lt;td&gt;Mexican, Japanese, Spanish, Dutch, Italian, Indian, Thai, Korean and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diet / time / servings&lt;/td&gt;
&lt;td&gt;vegetarian, vegan, gluten-free, dairy-free · 15 to 90 minutes · 1 to 50 people&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who's cooking&lt;/td&gt;
&lt;td&gt;🏠 Home cook, ☕ Cafe special, or 🛒 On a budget (reduced specials, with prices and a budget)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;❄️ Extra to freeze&lt;/td&gt;
&lt;td&gt;cook 2, 4 or 6 extra portions for lunches or another dinner; every recipe says whether it freezes and how&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📖 My recipes&lt;/td&gt;
&lt;td&gt;save the ones you love, or add family favourites, and it adapts them to what you have&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🥗 Side dish&lt;/td&gt;
&lt;td&gt;Auto: when your own recipe leaves food over, it becomes a side (soup &lt;strong&gt;and&lt;/strong&gt; roasted veg chips)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 Another idea&lt;/td&gt;
&lt;td&gt;one more dish, added under the others, never repeating one you've seen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Your spice rack and cupboard are remembered, so you only set them up once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your favourites, minus what's missing.&lt;/strong&gt; Save a recipe you love (or type in your mum's lasagne), and Fridge2Fork will adapt it to what's actually in the fridge. As you type your ingredients, it shows which saved recipes fit (&lt;em&gt;"Easy roast potatoes · you have 4 of 7"&lt;/em&gt;), so you can pick one yourself. Each card then says &lt;em&gt;"♥ Based on your Spaghetti Carbonara"&lt;/em&gt; and lists what changed, e.g. &lt;em&gt;"pancetta and parmesan swapped for bacon and cheddar"&lt;/em&gt;. And every recipe has a &lt;strong&gt;📄 Save as PDF&lt;/strong&gt; button, so you can send it to whoever's cooking tonight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stretch tonight into tomorrow.&lt;/strong&gt; Every recipe now says ❄️ &lt;em&gt;"Freezes well: cool, portion into tubs, up to 3 months"&lt;/em&gt; or 🍽️ &lt;em&gt;"Best eaten fresh"&lt;/em&gt;. Choose &lt;strong&gt;❄️ Extra to freeze&lt;/strong&gt; and it cooks extra portions, picking only dishes that freeze (the app checks, and asks again if not). Tell it what a meal usually costs you, and it shows what that's worth: &lt;em&gt;"That's 2 meals you won't have to buy, about $16."&lt;/em&gt; One fridge-clear-out becomes tonight's dinner &lt;strong&gt;and&lt;/strong&gt; Wednesday's lunch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who would pay for it?
&lt;/h3&gt;

&lt;p&gt;Food is wasted in three places, and Fridge2Fork has a mode for each:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where food is wasted (UNEP 2024)&lt;/th&gt;
&lt;th&gt;Fridge2Fork mode&lt;/th&gt;
&lt;th&gt;Who it helps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Households, ~60%&lt;/td&gt;
&lt;td&gt;🏠 Home cook + ❄️ freezer portions&lt;/td&gt;
&lt;td&gt;families, students, anyone on a tight budget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Food service, ~28%&lt;/td&gt;
&lt;td&gt;☕ Cafe special&lt;/td&gt;
&lt;td&gt;small cafés and restaurants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retail, ~12%&lt;/td&gt;
&lt;td&gt;🛒 On a budget&lt;/td&gt;
&lt;td&gt;shoppers buying reduced "eat today" specials, and the shops trying to sell them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Before the shops (13% lost after harvest)&lt;/td&gt;
&lt;td&gt;🛒 + a printed recipe card&lt;/td&gt;
&lt;td&gt;market sellers with produce that's too "ugly" to sell at full price&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;🛒 On a budget&lt;/strong&gt; came from my first users (more below). Supermarkets mark food down when it must be eaten today. Type in the specials with their prices, set a budget, and each recipe shows what to buy and what it costs: &lt;em&gt;"🛒 Buy: chicken thighs $3.50, spinach $1.20 · ≈ $4.70 ($1.18 a portion) · fits your $8 budget."&lt;/em&gt; The &lt;strong&gt;code&lt;/strong&gt; does the adding up, not the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A greengrocer's "rescue box".&lt;/strong&gt; At my local market, a fresh produce seller told me how much of his stock gets thrown away because it doesn't meet "quality" standards: a bent carrot, a marked zucchini, nothing wrong with it to eat. He said an app like this would be great to see. That's a business: a box of imperfect veg at a discount, sold &lt;strong&gt;with a Fridge2Fork recipe card&lt;/strong&gt; printed for exactly what's in it. The seller gets money for stock he'd otherwise bin, and the shopper gets dinner sorted.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Cafe special&lt;/strong&gt; switch is the clearest side hustle. Small cafés and restaurants throw away a lot of food, and that waste is money. A café owner can type in "2 kg spinach, half a wheel of feta, yesterday's sourdough" in the morning and get a sellable &lt;em&gt;today's special&lt;/em&gt; that turns stock that's about to go off into revenue.&lt;/p&gt;

&lt;p&gt;Because the model runs on the café's own computer, there's no monthly API bill and no per-request cost, so it's cheap enough to offer as a one-off purchase or a small subscription. And for home cooks, it just answers the question I ask myself every single evening.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if a million people used it?
&lt;/h3&gt;

&lt;p&gt;Here's the maths, with cautious numbers so you can check it. Say one use rescues the food for &lt;strong&gt;one meal: about $10 and half a kilo&lt;/strong&gt; that would otherwise be thrown out. (The average person wastes 79 kg of food a year at home, about 1.5 kg a week, so half a kilo is modest.)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If 1 million people…&lt;/th&gt;
&lt;th&gt;Money saved&lt;/th&gt;
&lt;th&gt;Food kept out of the bin&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;use it &lt;strong&gt;once&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$10 million&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~500 tonnes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;use it &lt;strong&gt;once a week for a year&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$520 million&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~26,000 tonnes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And with ❄️ freezer portions, one cook also covers two more meals you don't have to buy, so a single use can be worth closer to &lt;strong&gt;$25–30&lt;/strong&gt; for a family.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Fridge2Fork runs entirely on my own laptop, so there's no hosted link to click. Instead, here's the app, and the dinner it planned:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftt275tiu8f04qnxharnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftt275tiu8f04qnxharnb.png" alt="Fridge2Fork: tick your spices, and get a recipe that uses up your fridge" width="799" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Getting it running yourself takes about two minutes (see &lt;strong&gt;Code&lt;/strong&gt; below).&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/TechGirl007" rel="noopener noreferrer"&gt;
        TechGirl007
      &lt;/a&gt; / &lt;a href="https://github.com/TechGirl007/fridge2fork" rel="noopener noreferrer"&gt;
        fridge2fork
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Turn what's left in your fridge into family meals before it goes in the bin. A local open-source AI (Gemma via Ollama) suggests creative recipes from your fridge, cupboard and saved favourites: soup and leftover chips, veggie cottage pie and more. Free, private and offline. Supporting UN SDG 12.3: halve food waste by 2030.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/TechGirl007/fridge2fork/cover/cover.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2Ffridge2fork%2FHEAD%2Fcover%2Fcover.png" alt="Fridge2Fork: from fridge to fork, before it goes in the bin"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🥕 Fridge2Fork&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;From fridge to fork, before it goes in the bin.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Type in what's in your fridge, tick what's in your spice rack and cupboard, and a &lt;strong&gt;local open-weight AI&lt;/strong&gt; suggests recipes that use it up. Nothing leaves your computer.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12" rel="nofollow"&gt;DEV Hacktoberfest 2026 Open-Source AI Challenge, Week 2: "Side Hustle"&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fridge → recipes:&lt;/strong&gt; one idea at a time (🔄 for another), each with time, ingredients it uses up, anything extra you'd need, and steps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own recipes first:&lt;/strong&gt; if you can nearly make a saved recipe ("you have 6 of 7"), that's the first idea, adapted to what's missing. It knows a shallot will do for an onion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🥗 A side from the leftovers:&lt;/strong&gt; whatever your main doesn't use becomes a side, like soup &lt;strong&gt;and&lt;/strong&gt; roasted veg chips&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rescue dishes&lt;/strong&gt; for soft or ageing veg: cottage pie with a mash topping from almost any…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/TechGirl007/fridge2fork" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3
python3 app.py
&lt;span class="c"&gt;# open http://localhost:8000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No &lt;code&gt;pip install&lt;/code&gt;, no API keys, no accounts. Just Python's standard library and Ollama.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  My process: from a text box to a meal planner
&lt;/h3&gt;

&lt;p&gt;The idea came from my own fridge. My goal for this week was simply to learn and to submit, so I picked something small that I'd actually use. I built it with &lt;strong&gt;Claude as a coding partner&lt;/strong&gt;, and the journey went like this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Start simple.&lt;/strong&gt; Version 1 was a text box and a button: ingredients in, recipes out. It worked, and it was boring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Add layers, one real annoyance at a time.&lt;/strong&gt; Every layer came from using it myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🧂 Spices&lt;/strong&gt;, because the model cheerfully called for saffron I don't own&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🥫 Cupboard&lt;/strong&gt;, so it knows I have stock cubes and rice without asking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meal, cuisine and kind of dish&lt;/strong&gt;, so I can ask for a &lt;em&gt;Mexican breakfast&lt;/em&gt; or &lt;em&gt;a soup tonight&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📖 My recipes&lt;/strong&gt;: save favourites, or &lt;strong&gt;import from the web&lt;/strong&gt; (it reads the recipe card hidden in most recipe sites, and gemma3 cleans up pasted pages, skipping the life story and the adverts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;❄️ Freezer portions&lt;/strong&gt;: tonight's dinner becomes Wednesday's lunch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛒 On a budget&lt;/strong&gt;, the idea from my first users: reduced "eat today" specials, with prices, within a budget&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Make it think like a cook.&lt;/strong&gt; The model would never say &lt;em&gt;"you can nearly make your own asparagus soup"&lt;/em&gt;. So the code matches the fridge against my saved recipes, and knows that a shallot will do for an onion and that stock in the cupboard counts. When I have 6 of 7 ingredients, my own recipe comes first. Then it looks at what the soup &lt;strong&gt;doesn't&lt;/strong&gt; use (carrots, celery, half a lemon) and turns that into a side: &lt;strong&gt;soup and roasted veg chips&lt;/strong&gt;, a winner for families, and more of the fridge used up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Hit the wall: my laptop.&lt;/strong&gt; Every layer made the prompt longer and the answer longer. I'm running a 4B model on a laptop with &lt;strong&gt;7 GB of RAM and no GPU&lt;/strong&gt;. I measured it: gemma3 reads about 25 tokens (word pieces) a second here, and writes about 10. By the time it was writing two recipes, each with a side, &lt;strong&gt;one answer took three minutes&lt;/strong&gt;, longer when it had to ask again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Design around the device.&lt;/strong&gt; Instead of giving up features, I cut what each answer costs: a shorter prompt (the model only needs a saved recipe's ingredients, not its whole method), shorter steps, fewer retries, and &lt;strong&gt;one idea at a time&lt;/strong&gt; with a 🔄 &lt;em&gt;Another idea&lt;/em&gt; button. The first idea, my own soup with chips on the side, now arrives in &lt;strong&gt;about a minute&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Where it's going.&lt;/strong&gt; I picture Fridge2Fork as a &lt;strong&gt;phone app&lt;/strong&gt; you use in the supermarket aisle: you see the reduced specials, add them, see what you can make, and cook it at home that night. Small Gemma models already run on phones, so it could stay offline, private and free.&lt;/p&gt;

&lt;p&gt;The closed tool helped me build it, and the open model &lt;em&gt;is&lt;/em&gt; it.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;browser form ─► app.py ─► gemma3 (4B) via Ollama ─► JSON ─► recipe cards
 fridge, spices,  builds the   runs on my laptop's CPU    validated,
 cupboard, meal,  prompt                                  cleaned up
 cuisine, diet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;app.py&lt;/code&gt;&lt;/strong&gt; is a small Python server using only the standard library. It serves the page and has one endpoint, &lt;code&gt;/api/recipes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It builds a prompt from everything you chose and sends it to &lt;strong&gt;gemma3 (4B)&lt;/strong&gt; running locally in &lt;strong&gt;Ollama&lt;/strong&gt;, with &lt;code&gt;format: "json"&lt;/code&gt; so the reply comes back as structured data: name, pitch, minutes, uses, also_need, steps.&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;validates&lt;/strong&gt; the reply and retries if the model returns broken or incomplete JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/strong&gt; is a single page with no frameworks and no build step. It renders the recipe cards and remembers your cupboard in the browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On my laptop (7 GB of RAM, no GPU), the first idea takes &lt;strong&gt;about a minute&lt;/strong&gt; (40 seconds without a side). The page shows a little bobbing 🍲 and a timer so you know it's working.&lt;/p&gt;

&lt;h3&gt;
  
  
  Things that went wrong (and what I learned)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"NetworkError when attempting to fetch resource."&lt;/strong&gt; The first time I tried it, I double-clicked &lt;code&gt;index.html&lt;/code&gt; instead of going to &lt;code&gt;localhost:8000&lt;/code&gt;. A page opened from a file has no server behind it, so the request went nowhere. Now the page detects that and talks to the local server directly, and if the server isn't running, it tells you so in plain English.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model listed things I already had.&lt;/strong&gt; Early on, "You'd also need" kept saying &lt;em&gt;olive oil&lt;/em&gt; and &lt;em&gt;butter&lt;/em&gt;. Telling it plainly that oil, butter, flour, sugar and water are always available fixed most of that. But even with the cupboard list, it once told me I'd need &lt;strong&gt;rice&lt;/strong&gt; when rice was ticked. Rather than keep arguing with the prompt, I filter those out in code. Lesson: &lt;strong&gt;a small model follows instructions &lt;em&gt;mostly&lt;/em&gt;, so check the important rules in code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I almost had the model ask questions.&lt;/strong&gt; I wanted it to ask "do you have stock cubes?" before suggesting recipes. But on a CPU, every round trip costs about 40 seconds, so a back-and-forth would have been painful. A cupboard checklist gives the model the same information instantly. Lesson: &lt;strong&gt;with a local model, design around latency.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Restricting spices made the recipes better.&lt;/strong&gt; Once the model could only use the spices I'd ticked, the recipes went from "nice idea, but I don't have saffron" to things I could actually cook tonight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every recipe was a hash, a stew, a bake or a scramble.&lt;/strong&gt; Give a small model four vegetables and it plays it safe, every time. People would get bored by day three. So now &lt;strong&gt;the code picks the style, not the model&lt;/strong&gt;: each request draws two different styles (stir-fry, curry, fritters, dumplings…) and gemma fills them in. If you ask for a soup, the app checks that both answers really are soups, and asks again if not. Lesson: &lt;strong&gt;a small model is a good writer but a poor decider, so make the decisions in code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A risotto with no rice.&lt;/strong&gt; The random styles once gave me a "cauliflower risotto" when I had no rice. A risotto without rice isn't a risotto. Now a style that's built on a base (rice, pasta, tortillas, bread, pastry, eggs) is only picked when that base is in your fridge or cupboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Taco spice" meant tacos.&lt;/strong&gt; I had taco spice ticked, and gemma kept slipping tortillas into everything, even a soup. Telling it "a spice is only seasoning" helped, but the real fix was code again: if a recipe leans on a base you don't have, the app asks once more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old recipes sneaking in.&lt;/strong&gt; With just three ingredients, I'd get dishes using things I'd never typed. The app wasn't remembering past requests: my &lt;em&gt;saved&lt;/em&gt; recipes were. Any saved recipe sharing a single word with my fridge ("chicken") went into the prompt with its whole ingredient list, and gemma used the lot. Now a saved recipe is only used automatically when you have at least 40% of it, and the others are shown as buttons so &lt;strong&gt;you&lt;/strong&gt; choose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every feature made it slower.&lt;/strong&gt; This was the biggest obstacle of the week. Each layer added words to the prompt and to the answer, and on a CPU every word costs time: from about 40 seconds to three minutes. Measuring it (about 25 tokens a second in, 10 out) showed exactly where the time went, and asking for one idea at a time got the first answer back to about a minute. Lesson: &lt;strong&gt;on a small device, the length of every prompt and reply is part of the design.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shallot isn't an onion (to a computer).&lt;/strong&gt; The app said I had only 1 of the 9 ingredients for my own asparagus soup. It didn't know shallots and onions are interchangeable, it counted butter and oil as missing, it ignored the stock in my cupboard, and it counted "bread to serve (optional)" against me. With simple swap rules, it now says 6 of 7.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'd add next
&lt;/h3&gt;

&lt;p&gt;Fridge2Fork is a proof of concept: it shows that a 4B model on a 7 GB laptop can already plan dinner. From here, it can grow in two directions without giving up being open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version 1.5&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🍳 My kitchen:&lt;/strong&gt; tick what you own (soup maker, blender, Thermomix, air fryer, slow cooker) and recipes are written for it: &lt;em&gt;"add everything to the soup maker, smooth setting"&lt;/em&gt;. And nobody gets told to blend who doesn't own a blender.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚖️ Quantities:&lt;/strong&gt; amounts for each ingredient, scaled to servings and freezer portions &lt;strong&gt;in code&lt;/strong&gt;, because scaling is maths, and maths is what small models get wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Beyond that&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bigger open models.&lt;/strong&gt; A 4B model has a small imagination. With leftover veg and a cauliflower, it never suggested the obvious &lt;strong&gt;veggie cottage pie&lt;/strong&gt; (sauté the veg, mash the cauliflower for the topping), a dish I'd happily cook. I've since taught the code to pick "rescue" dishes like cottage pie (almost any root veg or cauliflower makes the topping), but a bigger model would know far more dishes like it on its own. The model is one setting, so the same app can run larger open-weight models such as &lt;strong&gt;gpt-oss-20b&lt;/strong&gt; (OpenAI's open-weight model), &lt;strong&gt;Gemma 3 27B&lt;/strong&gt; or &lt;strong&gt;Qwen 3&lt;/strong&gt;. They write better recipes and follow the rules more reliably, and need less checking in code. On a machine with 16 GB+ of RAM that's just &lt;code&gt;MODEL=gpt-oss:20b python3 app.py&lt;/code&gt;. For a paid version, the same open models could run on a hosted server, while keeping the free, private local mode as the default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A phone app.&lt;/strong&gt; Shoppers need it in the shop, not at their laptop. Small Gemma models already run on phones, so an on-device version would work offline in the supermarket aisle, with nobody's shopping data leaving the phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snap the fridge.&lt;/strong&gt; gemma3 can read images, so the next step is uploading a photo of the fridge and letting it list the ingredients for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A shopping list&lt;/strong&gt; built from "You'd also need" across the week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Café mode extras:&lt;/strong&gt; pricing suggestions, allergen labels, and a printable specials board.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tuning on a café's own menu&lt;/strong&gt;, so the specials match its style.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For this project, open made it practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; Every request runs on my laptop. A café could generate specials all day and never see a bill. With a paid API, cost per request would decide whether this works as a business at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The savings stay with the people who need them.&lt;/strong&gt; An app that helps a tight budget shouldn't come with a subscription. Running an open model locally means every dollar saved on food stays saved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's private.&lt;/strong&gt; What's in your fridge, what you eat and your diet never leave your computer. For a café, its stock levels and supplier details stay in-house.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works offline.&lt;/strong&gt; No internet, no problem. It also keeps working if a provider changes its prices or shuts down a model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's swappable.&lt;/strong&gt; One environment variable (&lt;code&gt;MODEL=llama3.2 python3 app.py&lt;/code&gt;) switches to a different open model. Nobody can lock me in.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My sister and a friend.&lt;/strong&gt; My sister sent me what was in her fridge, and a friend sent me a photo of hers. I typed both into Fridge2Fork and sent back the recipes. Their suggestion back was the best feedback I got all week: &lt;em&gt;"Wouldn't this be great at the grocery store?"&lt;/em&gt; Supermarkets mark food down when it has to be eaten that day. Someone on a tight budget could type in the specials, see what they could make, and decide what to buy. That became &lt;strong&gt;🛒 On a budget&lt;/strong&gt; mode.&lt;/p&gt;

&lt;p&gt;And honestly, &lt;strong&gt;me&lt;/strong&gt;. This answered my own "what should we have for dinner?" problem, which is exactly why I built it. It suggested an &lt;strong&gt;asparagus and sweet potato soup&lt;/strong&gt;. I cooked it in my soup maker, turned the leftover carrots and half a sweet potato into roasted veg chips, and toasted two slices of bread from the freezer for dipping. Nothing in that dinner was bought for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa817u4xxjeppfddwhqp3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa817u4xxjeppfddwhqp3.jpg" alt=" " width="800" height="771"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A market seller.&lt;/strong&gt; I told a fresh produce seller at my local market about the app. He said it would be great to see, because so much of his produce doesn't meet "quality" standards and has to be thrown away. That's where the "rescue box + recipe card" idea came from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did anyone pay?&lt;/strong&gt; Not yet: it's a week old and runs on my laptop. But the market seller is the clearest lead. His imperfect produce is money he currently throws away, and a recipe card that helps it sell is something a small business could pay for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma.&lt;/strong&gt; gemma3 (4B) is the whole engine of Fridge2Fork. It runs &lt;strong&gt;locally on a laptop CPU&lt;/strong&gt; through Ollama (7 GB RAM, no GPU) and writes every recipe from what's actually in your fridge, spice rack and cupboard.&lt;/p&gt;

&lt;p&gt;What I learned about using it well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strict JSON output&lt;/strong&gt; (&lt;code&gt;format: "json"&lt;/code&gt;) with a fixed set of fields lets recipes drop straight into the page, with validation and retries for the odd broken reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tight constraints help a small model.&lt;/strong&gt; "Season only with the spices listed" turned generic recipes into ones I could actually cook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the important rules in code.&lt;/strong&gt; The model mostly follows instructions, so a small server-side filter removes anything from "also need" that the user already has.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small context&lt;/strong&gt; (2,560 tokens) keeps it inside a 7 GB laptop's memory, and &lt;strong&gt;short prompts and replies&lt;/strong&gt; keep it fast: one idea at a time, in about a minute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It shows that a 4B open model on an ordinary laptop is good enough to plan dinner, for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Use of ElevenLabs.&lt;/strong&gt; I used ElevenLabs to &lt;strong&gt;generate the narration for my demo&lt;/strong&gt;. Fridge2Fork runs on a laptop with 7 GB of RAM, and when I tried to record myself talking while gemma3 was running, the laptop ran out of memory and crashed. So I recorded the app silently, wrote a script, and had an ElevenLabs voice read it over the top. The opening image of the fridge was made with ElevenLabs Image too.&lt;/p&gt;

&lt;p&gt;That fits the app's idea. The heavy work runs locally, and the voice is added afterwards, so nothing about your fridge leaves the laptop. Next, I'd like Fridge2Fork to &lt;strong&gt;read the steps out loud&lt;/strong&gt; while you cook, so you don't have to touch the screen with floury hands.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Heritage Walk - Perth</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Sat, 10 Oct 2026 06:09:08 +0000</pubDate>
      <link>https://dev.to/techgirl007/heritage-walk-perth-364j</link>
      <guid>https://dev.to/techgirl007/heritage-walk-perth-364j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;Station to Swan *&lt;/em&gt; is a self-guided heritage walk through the old heart of Perth, Western Australia. It goes from Perth Railway Station, down through the arcades and sandstone of St Georges Terrace, to the Swan Bells on the river.&lt;/p&gt;

&lt;p&gt;You open it on your phone and pick where you'd like to start. Then you follow a dotted trail on the map. When you get within 40 metres of a stop, it opens by itself: a photo, a short story told to you &lt;em&gt;as you stand in front of the building&lt;/em&gt;, one thing to look for, and a "did you know?" fact. There's a 🔊 button if you'd rather keep your eyes on the building than the screen.&lt;/p&gt;

&lt;p&gt;It's for anyone with a spare half hour in the city: office workers on a lunch break, visitors, or locals who walk past the Town Hall every day without knowing convicts built it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Start at&lt;/th&gt;
&lt;th&gt;Walk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Perth Railway Station&lt;/td&gt;
&lt;td&gt;12 stops · 1.5 km · ~43 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Palace Hotel&lt;/td&gt;
&lt;td&gt;10 stops · 1.1 km · ~33 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perth Town Hall&lt;/td&gt;
&lt;td&gt;7 stops · 0.7 km · ~22 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;St George's Cathedral&lt;/td&gt;
&lt;td&gt;5 stops · 0.5 km · ~16 min (fits a lunch break)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swan Bells&lt;/td&gt;
&lt;td&gt;the full walk in reverse, from the river back up to the station&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The screen is only there to point you at the real thing. The goal is to get you looking &lt;em&gt;up&lt;/em&gt;, at arched windows and Flemish bond brickwork, instead of down at your phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://techgirl007.github.io/HeritageWalk/" rel="noopener noreferrer"&gt;Try the walk&lt;/a&gt;&lt;/strong&gt;. It works best on a phone. If you're not in Perth, tap the dots to explore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F995mf76xhi2fu73dclyt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F995mf76xhi2fu73dclyt.jpg" alt="Start picker: choose one of five starting points, with the route previewed on the map" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0fviqb31w24k2ubhchl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0fviqb31w24k2ubhchl.jpg" alt="Palace Hotel stop card with photo, guide text, something to look for, and a fun fact" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And on my iPhone:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2Fmain%2Fscreenshots%2Fphone-map.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2Fmain%2Fscreenshots%2Fphone-map.jpg" width="700" alt="The dotted trail and numbered stops on a phone" height="1515"&gt;&lt;/a&gt; &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2Fmain%2Fscreenshots%2Fphone-stop.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2Fmain%2Fscreenshots%2Fphone-stop.jpg" width="700" alt="Treasury Buildings stop card on a phone" height="1515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I completed a test on the phone through the live link on GitHub.  I will complete a full test of the app when I am in the city next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/TechGirl007" rel="noopener noreferrer"&gt;
        TechGirl007
      &lt;/a&gt; / &lt;a href="https://github.com/TechGirl007/HeritageWalk" rel="noopener noreferrer"&gt;
        HeritageWalk
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
       Hacktoberfest 2026 Week 1 Challenge:  Heritage Walk.  PoC using Perth, Western Australia
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Station to Swan: Perth Heritage Walk&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A self-guided heritage walk from Perth Station down to the Swan River, written by an open-weight AI model running on a laptop.&lt;/p&gt;
&lt;p&gt;Open the page on your phone, follow the dotted trail, and each stop's story opens when you get within 40 m.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;DEV Hacktoberfest 2026 Open-Source AI Challenge, Week 1: "Touch Grass"&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👉 &lt;a href="https://techgirl007.github.io/HeritageWalk/" rel="nofollow noopener noreferrer"&gt;Try the walk&lt;/a&gt;&lt;/strong&gt; (best on a phone)&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/TechGirl007/HeritageWalk/screenshots/landing-page.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2FHEAD%2Fscreenshots%2Flanding-page.jpg" alt="Start picker: choose one of five starting points along the trail, with the chosen route previewed on the map"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/TechGirl007/HeritageWalk/screenshots/palace-hotel.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTechGirl007%2FHeritageWalk%2FHEAD%2Fscreenshots%2Fpalace-hotel.jpg" alt="Palace Hotel stop: photo, year built, gemma3's guide text, something to look for, and a fun fact"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;Wikipedia ─► fetch_wiki.py ─► gemma3 via Ollama ─► stops.json ─► build_page.py ─► index.html
  facts                        writes the guide      + overrides.json            map, dots, trail
                               (runs locally)         (human fact-check)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;fetch_wiki.py&lt;/code&gt; pulls each stop's article, coordinates and photo from Wikipedia into &lt;code&gt;data/wiki.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate_guide.py&lt;/code&gt; asks &lt;strong&gt;gemma3&lt;/strong&gt; (running locally with &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;) to turn each article into a short "you're standing in front of it" guide: story, what to look for, and a fun fact. Results are cached per stop.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;overrides.json&lt;/code&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/TechGirl007/HeritageWalk" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  My process
&lt;/h3&gt;

&lt;p&gt;I used three AI tools along the way, but only one of them is &lt;em&gt;in&lt;/em&gt; the product:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Brainstorming with Copilot.&lt;/strong&gt; My first idea was a bird identifier: take a photo, match it to a bird. That turned out to be much harder than I expected, so I went back to the drawing board. A heritage walk kept the "get outside and notice things" spirit, but swapped "is the AI right about this bird?" for "help me see the building in front of me."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installing Ollama and gemma3.&lt;/strong&gt; I wanted the AI at the heart of the walk to be open and running on my own machine, so I installed &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; and pulled Google's open-weight &lt;strong&gt;gemma3 (4B)&lt;/strong&gt;. &lt;strong&gt;gemma3 wrote every word of the tour.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building it with Claude.&lt;/strong&gt; I used Claude as a coding partner to script the pipeline and architect the user experience: the map, the trail, the start picker, and how it behaves on a phone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the closed tools helped me &lt;em&gt;build&lt;/em&gt; it, and the open model &lt;em&gt;is&lt;/em&gt; it. Someone forking this repo only needs Python, Ollama and an internet connection for Wikipedia. No API keys, no accounts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The pipeline
&lt;/h3&gt;

&lt;p&gt;The whole thing is a small pipeline with an open-weight model in the middle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Wikipedia ─► fetch_wiki.py ─► gemma3 via Ollama ─► stops.json ─► build_page.py ─► index.html
  facts                        writes the tour       + overrides.json             map, dots, trail
                               (on my laptop)         (my fact-checks)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The facts come from Wikipedia.&lt;/strong&gt; A Python script pulls each building's article, coordinates and photo using the Wikipedia API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;gemma3 writes the tour.&lt;/strong&gt; Each article goes to &lt;strong&gt;gemma3 (4B)&lt;/strong&gt; running locally in &lt;strong&gt;Ollama&lt;/strong&gt;. Its brief is to be a friendly tour guide, write 50–70 words to someone standing outside the building, use &lt;em&gt;only&lt;/em&gt; facts from the article, and reply in strict JSON (name, year built, tagline, story, something to look for, fun fact). On my laptop's CPU, each stop takes about 40 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I fact-check gemma.&lt;/strong&gt; This turned out to be the most interesting part (more below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The page is one HTML file.&lt;/strong&gt; The stop text is baked into a single &lt;code&gt;index.html&lt;/code&gt; with a &lt;strong&gt;Leaflet&lt;/strong&gt; map and &lt;strong&gt;OpenStreetMap&lt;/strong&gt; tiles. There's no backend and no account, and location never leaves your phone.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Things that went wrong (and what I learned)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;My laptop ran out of memory.&lt;/strong&gt; I have 7 GB of RAM and no GPU. gemma3 with a 4,096-token context peaked at 4.2 GB, and Linux's out-of-memory killer shut Ollama down partway through the run. Before it crashed outright, it was returning half-finished JSON, which looked like the model's fault but wasn't. Sending shorter article excerpts and a 2,560-token context fixed it, and every stop also got faster. I also added a cache, so a crash only costs one stop instead of the whole run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The small model made a few things up, but only a few.&lt;/strong&gt; I checked every stop against its Wikipedia article. Most were accurate, including some heavy history I didn't expect it to handle well (The Deanery stands where the Noongar elder Midgegooroo was executed in 1833). It got 4 stops wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It said London Court's clocks cost A$12 million. That was actually the arcade's &lt;em&gt;sale price&lt;/em&gt; in 1950. The clocks cost £5,000.&lt;/li&gt;
&lt;li&gt;It said the Swan Bells were built in 1988. That's when the bells were &lt;em&gt;donated&lt;/em&gt;. The tower opened for the millennium.&lt;/li&gt;
&lt;li&gt;Twice, its "look for" pointed at something &lt;em&gt;inside&lt;/em&gt; a building (a 1965 cinema screen, interior brickwork), which you can't see from the footpath.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the AI writes the drafts and a human edits them. My corrections live in &lt;code&gt;overrides.json&lt;/code&gt;, separate from gemma's output, so you can see exactly what I changed and the model's work stays honest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The map broke when opened as a file.&lt;/strong&gt; OpenStreetMap's main tile server returns 403 to pages opened straight from a file, so my "download it to your phone" plan showed a map that said &lt;em&gt;Access blocked&lt;/em&gt;. Switching to OpenStreetMap's community tile servers, with an automatic fallback, fixed it. Proper hosting on GitHub Pages gives you GPS too, because phones only allow location on &lt;code&gt;https://&lt;/code&gt; pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'd add next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A walk for any town.&lt;/strong&gt; Change the list of stops, rerun the script, and you have a new walk. The idea is "Perth today, your town tomorrow."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-phone AI&lt;/strong&gt; with an in-browser model, so you could ask the guide questions mid-walk, offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different guide voices&lt;/strong&gt;, like "for kids," "architecture nerd," or "ghost stories," all from the same facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A better voice for 🔊 Listen.&lt;/strong&gt; Right now it uses the phone's built-in text-to-speech, and honestly it sounds pretty robotic. Pre-recording each stop with an open text-to-speech model like Piper or Kokoro would sound much more natural, and it would keep the whole thing open.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It cost $0.&lt;/strong&gt; Writing the tour for 12 stops, rerunning it while I tuned the prompt, and running it again after crashes cost nothing, because the model runs on my own laptop. I never had to watch a token meter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's private.&lt;/strong&gt; Your location stays on your phone. There's no account and no server; the page doesn't even have a backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone can make one.&lt;/strong&gt; Open model, open map data (OpenStreetMap), open knowledge (Wikipedia), and open code. Someone in Fremantle, Hobart or Hamburg can fork the repo and make a walk for their own streets with no API keys and no bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's honest.&lt;/strong&gt; Because I run the model myself, I can see its exact output, keep my corrections separate, and show you both. The tour isn't a black box.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma.&lt;/strong&gt; gemma3 is the heart of this project, not a side feature. It ran &lt;strong&gt;locally on my laptop's CPU&lt;/strong&gt; through Ollama (no GPU, 7 GB of RAM) and wrote every stop on the walk: the story, the tagline, the "look for" detail and the fun fact.&lt;/p&gt;

&lt;p&gt;What I learned about using it well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strict JSON output&lt;/strong&gt; (Ollama's &lt;code&gt;format: "json"&lt;/code&gt;) with a fixed set of fields made gemma's replies drop straight into the app, with validation and automatic retries for the odd broken reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Use ONLY facts from the article below"&lt;/strong&gt; kept it mostly honest. Across 12 stops, I corrected 4: two factual slips and two "look for" details you can't see from the street. The fixes live in a separate, visible &lt;code&gt;overrides.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smaller context, faster and more stable.&lt;/strong&gt; Dropping to a 2,560-token context with article excerpts of 3,500 characters stopped the out-of-memory crashes and brought each stop down to about 40 seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It shows a 4B open model running on an ordinary laptop is good enough to write a real, walkable city tour, for free.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>The Knowledge Grimoire 📖✨</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Fri, 02 Oct 2026 11:06:57 +0000</pubDate>
      <link>https://dev.to/techgirl007/submission-the-knowledge-grimoire-38kc</link>
      <guid>https://dev.to/techgirl007/submission-the-knowledge-grimoire-38kc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built the Knowledge Grimoire, a gamified reading experience designed to turn the act of reading into a legendary quest.&lt;br&gt;
Who it's for: While designed for any reader, I built this specifically with children and students in mind. Many kids find traditional reading logs boring or feel pressured by the "homework" aspect of reading.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7jyrfkkmicu1xo1vjumb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7jyrfkkmicu1xo1vjumb.png" alt="The Header of Knowledge Grimoire" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem it Solves:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Motivation:&lt;/strong&gt; It replaces the "reading list" with a "journey of ascension." By logging books as "Conquests" and earning Archetypes (from Novice to Eternal), it triggers the reward circuitry that makes games addictive, but applies it to literacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy &amp;amp; Safety&lt;/strong&gt;: With strict age rules on social media, kids can't always share their achievements online. The Grimoire solves this by being local-first. It stores all data in the browser's local vault, meaning a school can host this within their own secure ecosystem without any student data ever leaving their environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Critical Thinking&lt;/strong&gt;: Instead of just checking a box, the app requires an "Arcane Insight"—one singular truth the reader took from the book—encouraging active reflection over passive reading.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🚀 Live App: &lt;a href="https://techgirl007.github.io/knowledge-grimoire/" rel="noopener noreferrer"&gt;https://techgirl007.github.io/knowledge-grimoire/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlo329oaay38q45z1dk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlo329oaay38q45z1dk7.png" alt="Before You Read" width="800" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29g98szcpg01kdpe9s6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29g98szcpg01kdpe9s6d.png" alt="After a Book is Read" width="800" height="970"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;📂 GitHub Repository: &lt;a href="https://github.com/TechGirl007/knowledge-grimoire" rel="noopener noreferrer"&gt;https://github.com/TechGirl007/knowledge-grimoire&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I employed a multi-AI workflow to bring the Knowledge Grimoire to life, utilizing different tools for different stages of the development cycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scaffolding (GitHub Copilot): I used Copilot to generate the initial foundational code and basic structure of the application.&lt;/li&gt;
&lt;li&gt;Iterative Design &amp;amp; Architecture (Google Gemma): Once the base was set, I partnered with Gemma as my lead architect to transform a simple utility into a gamified experience. Together, we iterated through three major versions, implementing the "Trophy Card" system and the "Archetype" logic.&lt;/li&gt;
&lt;li&gt;Advanced Feature Implementation: I worked with Gemma to solve the challenge of data persistence, implementing the Blob and FileReader APIs to create the "Soulstone" save-file system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The project is built using Vanilla HTML5, CSS3 (custom properties and glassmorphism), and JavaScript (ES6+).&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation is critical for educational tools. Closed-source platforms often lock student data behind subscriptions or track user behavior for profit.&lt;/p&gt;

&lt;p&gt;By building the Knowledge Grimoire as an open-source project, any teacher or school administrator can fork this code, customize the ranks to fit their curriculum, and host it on their own private servers. Open innovation makes it possible to provide a "high-tech" feel without sacrificing the absolute privacy and safety required in a school environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;Some snapshots of AI interaction&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru3ygu621g5otyrcp5ri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fru3ygu621g5otyrcp5ri.png" alt="Uploading txt file from Github" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F322jjxtbb0hd6ffpv8fd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F322jjxtbb0hd6ffpv8fd.png" alt="Gemma refining the code" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Prize Categories&lt;/p&gt;

&lt;p&gt;Best Use of Gemma: I utilized Gemma as my lead architect and pair programmer to transform a basic concept into a fully functioning, gamified educational tool.&lt;/p&gt;

&lt;p&gt;Strategic Architectural Choice: I intentionally opted for a Local-First architecture rather than an API integration. By doing so, I eliminated the risk of exposing API keys in a public repository and, more importantly, ensured that no Personally Identifiable Information (PII) ever leaves the user's device.&lt;/p&gt;

&lt;p&gt;This removes the Regulatory Risk (such as COPPA or GDPR compliance) typically associated with educational software for children, making the Knowledge Grimoire a "Zero-Trust" application that is safe for use in any school environment.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Hacktoberfest 2023 : The Good -The Bad -The Ugly</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Mon, 09 Oct 2023 14:01:24 +0000</pubDate>
      <link>https://dev.to/techgirl007/hacktoberfest-2023-the-good-the-bad-the-ugly-5b2p</link>
      <guid>https://dev.to/techgirl007/hacktoberfest-2023-the-good-the-bad-the-ugly-5b2p</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l2-Johse--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr3y5z99am4kdqbvbi9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l2-Johse--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr3y5z99am4kdqbvbi9q.png" alt="Image description" width="620" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest means different things to different people.  The short of it is that Hacktoberfest was created for good intended purposes.  However, like most things, good things can quickly go wrong when exploited.&lt;/p&gt;

&lt;p&gt;I enjoy coding but I don't get to code that often.  Hacktoberfest gives me that opportunity to keep my skills relevant.  As the old cliche goes:  Don't use it, you loose it.&lt;/p&gt;

&lt;p&gt;Sadly, however, I attempted Hacktoberfest last year, and found that that every project I contributed to, was excluded.  I was fairly annoyed because I had spent some time writing code with a focus on a fun outcome. I ended up just giving up.  It is really frustrating to put some time in and then find your time was worth nothing.  Surely the Hacktoberfest team created a page with 'excluded projects' on it??&lt;/p&gt;

&lt;p&gt;This year, I decided to give it another go.  Once again, I am faced with 'excluded'.  No once, but several times.  Of course, some of the projects you question. You think to yourself:  "Is this a trap".  After a while you think all of the projects are a trap.  And when I say trap, I mean the projects that ask you to add a photo, add your personal information etc. &lt;/p&gt;

&lt;p&gt;This year, before I committed to any project I completed a quick background check.  Some of them have been on GitHub for some time.  Their profile was very well crafted and it left me thinking: "Surely not".  But sadly it was "Surely: yes".&lt;/p&gt;

&lt;p&gt;I am not sure about you, but it is frustrating.  If you found a project which fits all the Hacktoberfest guidelines and PR requests are acceptable which ultimately makes the 'waiting list', could you share in the commentary below. &lt;/p&gt;

&lt;h1&gt;
  
  
  thanks
&lt;/h1&gt;

</description>
      <category>hacktoberfest</category>
      <category>coding</category>
    </item>
    <item>
      <title>Hacktoberfest 2023</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Sat, 12 Aug 2023 07:31:45 +0000</pubDate>
      <link>https://dev.to/techgirl007/hacktoberfest-2023-1879</link>
      <guid>https://dev.to/techgirl007/hacktoberfest-2023-1879</guid>
      <description>&lt;p&gt;This is just a friendly reminder to circle Hacktoberfest 2023 in your diary.  For more information visit &lt;a href="https://hacktoberfest.com/"&gt;Hacktoberfest.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Hacktoberfest 2021</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Sat, 02 Oct 2021 04:11:25 +0000</pubDate>
      <link>https://dev.to/techgirl007/hacktoberfest-2021-4i71</link>
      <guid>https://dev.to/techgirl007/hacktoberfest-2021-4i71</guid>
      <description>&lt;p&gt;THE GOOD, THE BAD and THE UGLY&lt;/p&gt;

&lt;p&gt;I am going to be honest, I have been focusing on completing my law degree.  The last 2 years of this degree has been 'brutal'. As such, I have not had the time to focus on the fun stuff like coding.  So, Hacktoberfest is a big deal for me.  It not only gives the opportunity to 'stay in the game of coding' but it also gives me that little breather from studies.&lt;/p&gt;

&lt;p&gt;I have participated in 2 Hacktoberfest.  Last year, I ran an event to inspire other people to get involved with Hacktoberfest.  Over 250 people showed up for an online tutorial. *SHOCK &lt;/p&gt;

&lt;p&gt;Notably, this year has had its challenges.  I know I am not the only one.  The hard times teaches us compassion and empathy. So, for me, Hacktoberfest is about joining a fun community, celebrating a month of code, inspiring others on the amazing things you can do in the developers world, and forget about any challenges you may have had this year.  &lt;/p&gt;

&lt;p&gt;Over the past 2 days I have given Hacktoberfest a real go.  I decided I wanted to do a little more this year, so I decided to do some fun stuff with code.  I have to admit, I am not an expert coder.  I would definitely class my self as a beginner compared to the rest of the amazing developers. &lt;/p&gt;

&lt;p&gt;At first, I did a github search for #hacktoberfest2021.  After I completed a few PRs, I found the projects weren't not participating in this event.  Oddly, they have 2021 in their project.  I went back to the Hacktoberfest QA folder and read the instructions again.  I noticed that I needed to add commentary.  So, I looked for some others, added comments but again..rejection.  I went back to the Hacktofest page and decided to choose beginner.  Clearly I have not learnt anything so I should start from scratch.  No luck.  Then, I thought, let me try DEV.  I found a post which lead me to a page which set out instruction.  Ironically, I went to the page that said "Participating in Hacktoberfest" and choose one.  But, the same thing happened. &lt;/p&gt;

&lt;p&gt;So, all in all, I have completed 11 PR.  One is still to be accepted.  One project is excluded and the rest is 'project not participating'.&lt;/p&gt;

&lt;p&gt;There were some rules that said that maintenance can say 'SPAM', which is a concern because it is never my intent to ever do that.  So, if anyone has any ideas, or can #help with a few projects that I can partake it, I would be grateful.  Otherwise, I may just need to take a back seat and let this year's Hacktoberfest pass by. :(&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Hacktoberfest 2020 DONE</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Wed, 02 Dec 2020 09:26:42 +0000</pubDate>
      <link>https://dev.to/techgirl007/hacktoberfest-2020-done-15g3</link>
      <guid>https://dev.to/techgirl007/hacktoberfest-2020-done-15g3</guid>
      <description>&lt;p&gt;My loot arrived for #hacktoberfest2020  Big shout out to everyone that made this event possible.  I enjoyed it.  Hopefully I will be able to put a cool project together for next year.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MM-q7GYP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jidvfodubj9astmxztqv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MM-q7GYP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jidvfodubj9astmxztqv.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>tshirt</category>
      <category>thankyou</category>
    </item>
    <item>
      <title>Hacktoberfest 2020 - Completed</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Tue, 20 Oct 2020 02:31:31 +0000</pubDate>
      <link>https://dev.to/techgirl007/hacktoberfest-2020-completed-24ek</link>
      <guid>https://dev.to/techgirl007/hacktoberfest-2020-completed-24ek</guid>
      <description>&lt;p&gt;I also held an online event helping a bunch of newbies with their first Hacktoberfest. Who knows, maybe one will be an 'rock star' in devops!&lt;/p&gt;

&lt;h1&gt;
  
  
  hacktoberfest #completed #grateful
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>ONE YEAR</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Sat, 03 Oct 2020 06:28:09 +0000</pubDate>
      <link>https://dev.to/techgirl007/one-year-5d41</link>
      <guid>https://dev.to/techgirl007/one-year-5d41</guid>
      <description>&lt;p&gt;WOW, I can't believe that one year has passed. Thanks to everyone here for helping with so many questions last year.  &lt;/p&gt;

&lt;p&gt;Good news!  I have paid it forward and helping over 100 people tonight with the same questions I had last year.  #gofigure&lt;br&gt;
It's an online event for Hacktoberfest 2020.  Started out with just a simple idea of helping a few people.  It sort of went a little wild with registration.&lt;/p&gt;

&lt;p&gt;Thanks again.  Here's too a super #hacktoberfest2020&lt;/p&gt;

</description>
      <category>oneyear</category>
      <category>dev</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>FIRST HACKTOBERFEST #PROUD</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Thu, 24 Oct 2019 00:56:47 +0000</pubDate>
      <link>https://dev.to/techgirl007/first-hacktoberfest-proud-4956</link>
      <guid>https://dev.to/techgirl007/first-hacktoberfest-proud-4956</guid>
      <description>&lt;p&gt;Done It!  Completed my First Hacktoberfest! It was fun BUT I would not have been able to compete if this event if it never existed.  So this is a SHOUT OUT to:&lt;/p&gt;

&lt;p&gt;Digital Ocean for making it possible&lt;br&gt;
GitHub for being open source&lt;br&gt;
Everyone that created a project to make it happen.&lt;br&gt;
Dev and everyone on it - for answering my newbie questions and offering this forum.&lt;br&gt;
Everyone else that has joined this journey&lt;/p&gt;

&lt;p&gt;It may be just one T-Shirt but it represents a lot of work and significant amount of community support.  &lt;/p&gt;

&lt;p&gt;I look forward to next year's one and spending the next year learning how to create a project for others to participate in. &lt;/p&gt;

&lt;p&gt;Thank You.&lt;/p&gt;

&lt;p&gt;PS:  Photo by Digital Ocean.  &lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>thanks</category>
    </item>
    <item>
      <title>What is a Review Period? #hacktoberfest</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Tue, 08 Oct 2019 00:09:51 +0000</pubDate>
      <link>https://dev.to/techgirl007/what-is-a-review-period-hacktoberfest-4dl2</link>
      <guid>https://dev.to/techgirl007/what-is-a-review-period-hacktoberfest-4dl2</guid>
      <description>&lt;p&gt;Hello Everyone.  I went over to my profile and noticed a few new things. Part of the learning curb.&lt;br&gt;&lt;br&gt;
Firstly, 4 of the 7 PR requests have a timer which says 'review period'.  What does this mean?&lt;br&gt;
Notably, the other PR's don't qualify for this hacktoberfest because they don't align with the values.  I am unsure what this means other than there are certain rules and regulations set prior to the event which these projects did not 'live up to'.&lt;/p&gt;

&lt;p&gt;Look forward to any feedback on my original questions.  #thanks&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>help</category>
    </item>
    <item>
      <title>#hacktoberfest Conquering your First Hactoberfest!</title>
      <dc:creator>TechGirl007</dc:creator>
      <pubDate>Mon, 07 Oct 2019 23:46:07 +0000</pubDate>
      <link>https://dev.to/techgirl007/first-hactoberfest-3cno</link>
      <guid>https://dev.to/techgirl007/first-hactoberfest-3cno</guid>
      <description>&lt;p&gt;Last year, I heard about hacktoberfest but was left with a number of challenges I had to work out. The first was a PR or Pull Request.  What the bleep bleep is that, how do you do this, and how do you know if you have done it correctly?  The next was a fork?  Wait - is that something you eat with?  Unfortunately, there was no one to ask directly, so I decided to focus on my studies.&lt;/p&gt;

&lt;p&gt;This year - however it was game on.  As soon as the email came through I made it a mission to figure out how this whole thing worked.  As Julius Caeser said:  "I came, I saw, I conquered?"  And you know what - it was so much easier than I imagine!  &lt;/p&gt;

&lt;p&gt;Advice to newbies like me...read the instructions...ask for help - don't be like me and hover in a dark corner afraid to ask for anything...and give it a shot. As for all the other amazing people putting challenges together so newbies like me can give it a shot - a BIG THANK YOU!&lt;/p&gt;

&lt;p&gt;Next year's goal - to create something for other budding hacktoberfest participants.&lt;/p&gt;

&lt;p&gt;Goodluck&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>first</category>
    </item>
  </channel>
</rss>
