<?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: Kumar Saurav</title>
    <description>The latest articles on DEV Community by Kumar Saurav (@saurav10codes).</description>
    <link>https://dev.to/saurav10codes</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%2F4161717%2F98d57df1-9e2a-42a3-8c71-aeb04165e20b.jpg</url>
      <title>DEV Community: Kumar Saurav</title>
      <link>https://dev.to/saurav10codes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saurav10codes"/>
    <language>en</language>
    <item>
      <title>I built a platform for my grandma (and others) so that they can upload their voice notes for a recipe and get a structured recipe</title>
      <dc:creator>Kumar Saurav</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:33:57 +0000</pubDate>
      <link>https://dev.to/saurav10codes/i-built-a-platform-for-my-grandma-and-others-so-that-they-can-upload-their-voice-notes-for-a-545</link>
      <guid>https://dev.to/saurav10codes/i-built-a-platform-for-my-grandma-and-others-so-that-they-can-upload-their-voice-notes-for-a-545</guid>
      <description>&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%2Fuoctc7kwc79s9ferxsiu.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%2Fuoctc7kwc79s9ferxsiu.png" alt="Screenshot" width="800" height="401"&gt;&lt;/a&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 Grandma Recipes web application to organize my family history. This software converts spoken voice recordings into structured Markdown documents. I designed this project specifically for my mother. She wants to record and preserve her old family recipes. She speaks the instructions directly into her phone. The application processes the audio and creates a clean text file. My mother no longer loses her scattered audio notes.&lt;/p&gt;

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

&lt;p&gt;You can view the live application through the provided link. The visual interface uses a neo-brutalism design style. It features bold borders and bright yellow accents.&lt;br&gt;
&lt;a href="https://grandma-recipes-psi.vercel.app/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&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/Saurav10codes" rel="noopener noreferrer"&gt;
        Saurav10codes
      &lt;/a&gt; / &lt;a href="https://github.com/Saurav10codes/grandma-recipes" rel="noopener noreferrer"&gt;
        grandma-recipes
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Made for HacktoberFest Challenge 1
    &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;Grandma Recipes 🍲&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Speak a recipe → get it transcribed and formatted as Markdown. Runs &lt;strong&gt;100% locally&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Whisper tiny&lt;/strong&gt; (faster-whisper, CPU int8) — auto-downloads on first run (~75 MB)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ollama locally&lt;/strong&gt; for full offline mode&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FastAPI&lt;/strong&gt; backend&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;React + Vite&lt;/strong&gt; frontend (neo-brutalism UI)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prerequisites&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Python 3.9+&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node.js 18+&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FFmpeg: &lt;code&gt;sudo apt install ffmpeg&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;For local mode (no API calls):&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; installed and running (&lt;code&gt;ollama serve&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run Locally&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Backend&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Make sure Ollama is running: ollama serve&lt;/span&gt;

&lt;span class="pl-c1"&gt;cd&lt;/span&gt;  backend

pip  install  -r  requirements.txt

uvicorn  main:app  --reload
&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Frontend&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt;  frontend

npm  install

npm  run  dev
&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:5173" rel="nofollow noopener noreferrer"&gt;http://localhost:5173&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;p&gt;🎙 &lt;strong&gt;Live recording&lt;/strong&gt; — click Record, speak, click Stop&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📁 &lt;strong&gt;File upload&lt;/strong&gt; — drag &amp;amp; drop or select audio files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📝 &lt;strong&gt;Auto-formatting&lt;/strong&gt; — converts speech to structured Markdown recipes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎨 &lt;strong&gt;Neo-brutalism UI&lt;/strong&gt; — bold, minimalist design&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🚀 &lt;strong&gt;100% local&lt;/strong&gt; (optional) — no data leaves your machine&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Record…&lt;/p&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/Saurav10codes/grandma-recipes" 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;p&gt;The frontend architecture uses React and Vite. The backend relies on FastAPI written in Python. I chose the Whisper tiny model for audio transcription. This specific model runs locally on the server CPU. The application converts the browser audio files using ffmpeg. A large language model formats the resulting text into a recipe. I created two different modes for the backend system. One mode connects to the Groq API on a free tier. The alternative mode runs the Ollama software locally. This local mode powers the qwen2.5:1.5b open-weight model.&lt;/p&gt;

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

&lt;p&gt;Open innovation directly protects user privacy. Voice recordings represent deeply personal family data. A closed API sends this sensitive information to unknown corporate servers. My application transcribes the audio locally using open-weight models. Users keep total control of their private family memories. Open models perform exceptionally well on cheap hardware. The Whisper tiny model requires very little system memory. This tiny footprint makes the tool entirely free to host.&lt;/p&gt;

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

&lt;p&gt;I am entering the Best Use of Render prize category. I deployed the entire application using Render free tiers. The React frontend runs smoothly on a static site. The FastAPI backend operates inside a Docker web service.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
