<?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: Anush Ragav V S</title>
    <description>The latest articles on DEV Community by Anush Ragav V S (@anushragavdev).</description>
    <link>https://dev.to/anushragavdev</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%2F4158787%2F1f28379e-30cf-4cb5-8715-1cef2064caad.png</url>
      <title>DEV Community: Anush Ragav V S</title>
      <link>https://dev.to/anushragavdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anushragavdev"/>
    <language>en</language>
    <item>
      <title>TouchGrass</title>
      <dc:creator>Anush Ragav V S</dc:creator>
      <pubDate>Tue, 06 Oct 2026 14:25:10 +0000</pubDate>
      <link>https://dev.to/anushragavdev/touchgrass-27io</link>
      <guid>https://dev.to/anushragavdev/touchgrass-27io</guid>
      <description>&lt;h1&gt;
  
  
  TouchGrass 🌱
&lt;/h1&gt;

&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;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«AI that helps you put your phone down and go outside.»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Most modern AI apps are conversational chatbots designed to maximize screen time, capture attention, and keep users typing into text boxes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TouchGrass 🌱 is the opposite: an application engineered to make the screen the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TouchGrass is an open-source, local-first Progressive Web App (PWA) powered by open-weight AI that generates personalized real-world outdoor micro-challenges. It encourages users to physically put their phones into their pockets, step into nature, and engage their five physical senses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Anti-Screen Philosophy
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«The best session is one where the user spends less time using the app.»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Who It Is For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote &amp;amp; Desk Workers:&lt;/strong&gt; People suffering from screen fatigue and sedentary Zoom-call days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Students &amp;amp; Developers:&lt;/strong&gt; Programmers who need somatic breaks away from IDEs and terminals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mindfulness Seekers:&lt;/strong&gt; Anyone wanting guided, sensory-rich walks without mindless scrolling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example Challenges
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5-Minute Mission:&lt;/strong&gt; &lt;em&gt;“Find a tree you pass every day but never noticed. Examine its bark patterns for 30 seconds. Feel the texture of a fallen leaf. Put your phone away.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15-Minute Mission:&lt;/strong&gt; &lt;em&gt;“Find a quiet outdoor spot. Identify 3 distinct natural sounds, 3 contrasting colors, and 1 sign of seasonal change. Take three diaphragmatic breaths before walking back.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30-Minute Mission:&lt;/strong&gt; &lt;em&gt;“Take an unhurried neighborhood walk. Locate something living, something moving, and something that changed since yesterday. Return only when complete.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/anushragav-vs/TouchGrass" rel="noopener noreferrer"&gt;https://github.com/anushragav-vs/TouchGrass&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Dev URL:&lt;/strong&gt; &lt;code&gt;http://localhost:5173&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA Ready:&lt;/strong&gt; Installable directly to mobile home screens and desktops with full offline caching.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Feature Walkthrough
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;First-Run Onboarding:&lt;/strong&gt; Short, 3-step personal preference setup without account creation or sign-in walls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calming Home Dashboard:&lt;/strong&gt; Time-of-day greeting (&lt;em&gt;“Good evening 🌱”&lt;/em&gt;), quick duration pills (&lt;code&gt;[ 5 MIN ]&lt;/code&gt;, &lt;code&gt;[ 15 MIN ]&lt;/code&gt;, &lt;code&gt;[ 30 MIN ]&lt;/code&gt;), streak counter, outdoor time, and the &lt;strong&gt;Touch Grass Score&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Challenge Generator:&lt;/strong&gt; Personalizes missions by duration (5, 15, 30, 60m), mood (Relax, Explore, Move, Observe, Challenge), difficulty, and surroundings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical Safety Validator:&lt;/strong&gt; Pre-checks all generated steps to forbid dangerous climbing, trespassing, wild animal contact, or traffic hazards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Free Mode with Pocket Dim:&lt;/strong&gt; Minimalist UI with a natural breathing leaf, live timer, acoustic Zen chime, and an OLED true-black battery saver screen that prevents pocket touches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Return Experience:&lt;/strong&gt; Quick completion status (&lt;code&gt;[ YES ✓ ]&lt;/code&gt;, &lt;code&gt;[ PARTIALLY ◐ ]&lt;/code&gt;, &lt;code&gt;[ NOT YET ✗ ]&lt;/code&gt;), mood emoji rating, a single short reflection question, and optional local photo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal Journal &amp;amp; History:&lt;/strong&gt; Filterable by category and status, searchable, with 1-click JSON Export &amp;amp; Import for 100% data sovereignty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-World Achievements:&lt;/strong&gt; 8 habit milestones (&lt;em&gt;First Step&lt;/em&gt;, &lt;em&gt;Tree Hugger&lt;/em&gt;, &lt;em&gt;Observer&lt;/em&gt;, &lt;em&gt;Explorer&lt;/em&gt;, &lt;em&gt;Deep Unplug&lt;/em&gt;, &lt;em&gt;Touch Grass Veteran&lt;/em&gt;, &lt;em&gt;Zen Wanderer&lt;/em&gt;, &lt;em&gt;Outdoor Habit&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine Settings:&lt;/strong&gt; Live model detection, latency tester, and model switching between Local Ollama, Demo Simulation, and Offline Library.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The complete source code is available on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/anushragav-vs/TouchGrass" rel="noopener noreferrer"&gt;github.com/anushragav-vs/TouchGrass&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




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

&lt;h3&gt;
  
  
  1. Open-Weight AI Layer &amp;amp; Local Inference
&lt;/h3&gt;

&lt;p&gt;TouchGrass is built around a decoupled &lt;strong&gt;AI Provider Abstraction&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama Integration:&lt;/strong&gt; Connects directly to local Ollama endpoints (e.g., &lt;code&gt;http://localhost:11434&lt;/code&gt; or the built-in Vite reverse proxy &lt;code&gt;/ollama-proxy&lt;/code&gt;). It auto-detects installed models via &lt;code&gt;GET /api/tags&lt;/code&gt; and calls &lt;code&gt;/api/generate&lt;/code&gt; with strict JSON mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommended Open Models:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;qwen2.5:0.5b&lt;/code&gt; (Ultra-fast, low resource consumption ~400MB)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;llama3.2:1b&lt;/code&gt; (High creative output ~1.3GB)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gemma2:2b&lt;/code&gt; (Google open-weight model ~1.6GB)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON Repair &amp;amp; Zod Schema:&lt;/strong&gt; Models occasionally emit trailing commas or code fences. Our custom &lt;code&gt;jsonRepair.ts&lt;/code&gt; balances clipped brackets, strips fences, and validates against &lt;code&gt;RawChallengeSchema&lt;/code&gt; with Zod.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guaranteed Fallback Guarantee:&lt;/strong&gt; If Ollama is offline or experiences a timeout, TouchGrass &lt;strong&gt;never crashes&lt;/strong&gt;. It automatically selects a matched challenge from &lt;code&gt;fallbackChallenges.json&lt;/code&gt; (36+ challenges across 7 categories) and alerts the user with zero interruption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Physical Safety Engine
&lt;/h3&gt;

&lt;p&gt;User safety takes precedence over AI creativity. &lt;code&gt;safety.ts&lt;/code&gt; scans every generated challenge with hazard heuristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flags dangerous climbing (cliffs, roofs, high trees, crags)&lt;/li&gt;
&lt;li&gt;Flags private property or trespassing&lt;/li&gt;
&lt;li&gt;Flags toxic flora (poison ivy, eating wild mushrooms) or wild fauna (snakes, stinging insects)&lt;/li&gt;
&lt;li&gt;Flags hazardous road crossings and solo deep-water swimming&lt;/li&gt;
&lt;li&gt;Enforces a mandatory safety disclaimer: &lt;em&gt;“Stay aware of your surroundings and follow local rules. Never put yourself at risk to complete a challenge.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Local-First Storage (Dexie.js / IndexedDB)
&lt;/h3&gt;

&lt;p&gt;All user data—journal logs, photos, reflections, streak records, and achievements—is stored in the browser's IndexedDB. Zero user data is uploaded to any cloud server.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Acoustic Zen Sound Synthesizer
&lt;/h3&gt;

&lt;p&gt;Rather than bundling bulky MP3 audio files that fail offline, TouchGrass uses the browser's &lt;strong&gt;Web Audio API&lt;/strong&gt; to synthesize peaceful sine and triangle wave acoustics (349Hz F4 and 523Hz C5) when stepping outside and completing a challenge.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Technology Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 19, TypeScript, Vite 8, Rolldown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4, Nature Palette, Custom Pocket Dim AMOLED Styles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Vitest (25 unit &amp;amp; integration tests passing)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icons:&lt;/strong&gt; Lucide React&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weather:&lt;/strong&gt; Open-Meteo (Open-source, free, 0 API keys required)&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;In building TouchGrass, open innovation was not just a design choice—&lt;strong&gt;it was the only way this project could exist as envisioned&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy for Somatic Reflection
&lt;/h3&gt;

&lt;p&gt;Outdoor reflection is deeply personal. When a user logs how they felt under an old oak tree or reflects on tension leaving their shoulders, that thought should not be processed by closed third-party servers to train advertising models. Open weights make true privacy a mathematical reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Disconnecting Requires Offline Independence
&lt;/h3&gt;

&lt;p&gt;Nature exists away from Wi-Fi and 5G cell towers. If an application requires a live connection to a closed API server in Northern Virginia, it cannot help you on a mountain trail, a wooded park, or a remote coastline. Open models running locally or through offline libraries ensure that the tool works anywhere on Earth.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Freedom from Rent-Seeking &amp;amp; API Paywalls
&lt;/h3&gt;

&lt;p&gt;Closed AI APIs charge recurring token fees that force developers into subscription paywalls or ad-driven monetization. With open-weight models like Qwen and Llama, users and open-source contributors run inference for free on their existing hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Community Auditing &amp;amp; Safety
&lt;/h3&gt;

&lt;p&gt;Physical safety requires total transparency into prompt instructions, schemas, and model outputs. With open innovation, anyone can inspect how challenges are generated, contribute new offline activities, and audit safety filters.&lt;/p&gt;




&lt;p&gt;You can view and test the application right now in your browser using either of the following links:&lt;/p&gt;

&lt;p&gt;🌐 1. On This Computer (Browser)&lt;br&gt;
👉 Open in your browser: &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;&lt;br&gt;
(or &lt;a href="http://127.0.0.1:5173/" rel="noopener noreferrer"&gt;http://127.0.0.1:5173/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The Vite development server is actively running in the background.&lt;/p&gt;

&lt;p&gt;📱 2. On Your Phone / Mobile Device (Same Wi-Fi)&lt;br&gt;
Since TouchGrass is designed as a mobile-first anti-screen PWA, you can open it on your phone:&lt;/p&gt;

&lt;p&gt;👉 Connect your phone to the same Wi-Fi network and open:&lt;br&gt;
&lt;a href="http://192.168.31.10:5173/" rel="noopener noreferrer"&gt;http://192.168.31.10:5173/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 PWA Install Tip: In Chrome or Safari on your phone, tap "Add to Home Screen" to install TouchGrass as a full standalone app with offline caching and full screen-free mode!&lt;/p&gt;

&lt;p&gt;📂 3. On GitHub&lt;br&gt;
The complete repository, code, and Hacktoberfest challenge submission documentation are live at:&lt;br&gt;
👉 &lt;a href="https://github.com/anushragav-vs/TouchGrass" rel="noopener noreferrer"&gt;https://github.com/anushragav-vs/TouchGrass&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>LingoBuddy</title>
      <dc:creator>Anush Ragav V S</dc:creator>
      <pubDate>Sun, 04 Oct 2026 12:17:28 +0000</pubDate>
      <link>https://dev.to/anushragavdev/lingobuddy-3nm0</link>
      <guid>https://dev.to/anushragavdev/lingobuddy-3nm0</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;h1&gt;
  
  
  🗣️ LingoBuddy — Anxiety-Free Language Conversation Partner
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A personalized, zero-judgment foreign language conversation simulator powered by local open-weight AI and the Web Speech API.&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;h3&gt;
  
  
  Who I Built It For
&lt;/h3&gt;

&lt;p&gt;I built &lt;strong&gt;LingoBuddy&lt;/strong&gt; for my close friend who has been eagerly preparing to travel and relocate abroad, but struggles with intense &lt;strong&gt;foreign language conversation anxiety&lt;/strong&gt;. Whenever they try to practice with native speakers or conventional language apps, they freeze up. Fear of making grammatical blunders, the pressure of rapid-fire replies, and the awkwardness of asking someone to repeat themselves over and over turn what should be an exciting journey into an intimidating hurdle.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;Traditional language learning platforms rely heavily on gamified countdown timers, flashcards, or punitive scoring systems that actually amplify anxiety. Furthermore, conversational chatbots often generate walls of unbroken text that overwhelm beginners.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LingoBuddy solves this by creating a 100% judgment-free, private safe haven for vocal immersion:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The "Anxiety Shield" (&lt;code&gt;[?] Hint&lt;/code&gt;)&lt;/strong&gt;: A one-click rescue system embedded into every single AI speech bubble. If my friend gets stuck or nervous, tapping &lt;code&gt;[?]&lt;/code&gt; immediately reveals a gentle inline card with:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plain-English Translation&lt;/strong&gt;: Contextual and literal understanding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grammar Insight&lt;/strong&gt;: Clear, non-academic explanations of verb conjugations, polite forms, and sentence structures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vocabulary Spotlight&lt;/strong&gt;: Monospace chips highlighting key vocabulary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 Suggested Safe Replies&lt;/strong&gt;: Instant rescue responses they can tap to auto-fill the chat input or practice speaking aloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hands-Free Voice Conversation&lt;/strong&gt;: Powered by the native browser Web Speech API (&lt;code&gt;SpeechRecognition&lt;/code&gt; &amp;amp; &lt;code&gt;SpeechSynthesis&lt;/code&gt;), with live audio equalizers and state indicators (&lt;code&gt;LISTENING&lt;/code&gt;, &lt;code&gt;PROCESSING&lt;/code&gt;, &lt;code&gt;SPEAKING&lt;/code&gt;, &lt;code&gt;IDLE&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pacing Control&lt;/strong&gt;: An audio pace toggle allowing relaxed &lt;code&gt;0.75x&lt;/code&gt; 🐢 slow speech or natural &lt;code&gt;1.0x&lt;/code&gt; ⚡ standard pace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentic Scenarios&lt;/strong&gt;: Roleplay environments tailored to everyday real-life challenges:

&lt;ul&gt;
&lt;li&gt;☕ &lt;em&gt;At a Coffee Shop&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🗺️ &lt;em&gt;Asking for Directions&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;✈️ &lt;em&gt;Airport Check-in &amp;amp; Customs&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🏨 &lt;em&gt;Hotel Reception Check-in&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;💬 &lt;em&gt;Friendly Casual Chit-Chat&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Progress Tracking&lt;/strong&gt;: Uses the browser's Web Storage API (&lt;code&gt;localStorage&lt;/code&gt;) to celebrate consistency with daily streaks, total sentences spoken, and a positive fluency confidence meter.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: [&lt;a href="https://anushragav-vs.github.io/LingoBuddy/" rel="noopener noreferrer"&gt;https://anushragav-vs.github.io/LingoBuddy/&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture&lt;/strong&gt;: Zero-build Progressive Web App (PWA). You can run it locally with zero dependencies in seconds:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repository&lt;/span&gt;
git clone https://github.com/anushragav-vs/LingoBuddy.git
&lt;span class="nb"&gt;cd &lt;/span&gt;LingoBuddy

&lt;span class="c"&gt;# Run using any static HTTP server (Python, npx, or Live Server)&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; http.server 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then navigate to &lt;strong&gt;&lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/strong&gt; in Google Chrome or Microsoft Edge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Interface Highlights:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Glassmorphism Dashboard&lt;/strong&gt;: Obsidian dark palette (&lt;code&gt;#07090e&lt;/code&gt;), frosted glass panels (&lt;code&gt;backdrop-filter: blur&lt;/code&gt;), dynamic soundwaves, and language flags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Control Dock&lt;/strong&gt;: Concentric pulsing microphone animation during active speech recognition, real-time transcription preview, and a synthetic voice audio interrupt button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Language Selector&lt;/strong&gt;: Seamlessly switch between Spanish 🇪🇸, French 🇫🇷, German 🇩🇪, Italian 🇮🇹, Japanese 🇯🇵, and Mandarin 🇨🇳 with automatic BCP-47 speech recognition and synthesis reconfiguration.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The complete source code is available on GitHub:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/anushragav-vs/LingoBuddy" rel="noopener noreferrer"&gt;https://github.com/anushragav-vs/LingoBuddy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Clean Modular Structure (Zero Node Modules Bloat):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LingoBuddy/
├── index.html                  # Semantic Glassmorphism single-page UI &amp;amp; PWA shell
├── manifest.json               # Progressive Web App manifest (standalone installable)
├── sw.js                       # Service worker for offline asset caching
├── instructions.md             # Functional requirements &amp;amp; UX specifications
├── rules.md                    # Engineering architecture guidelines
├── .gitignore                  # Git ignore rules
├── README.md                   # Hacktoberfest submission &amp;amp; documentation
└── assets/
    ├── css/
    │   └── styles.css          # Glassmorphism tokens, soundwave bars, glow rings
    └── js/
        ├── app.js              # Master UI controller and state machine
        ├── speech-handler.js   # Web Speech API wrapper (STT &amp;amp; TTS engines)
        ├── ai-handler.js       # Ollama REST connector + autonomous fallback simulator
        ├── storage-handler.js  # LocalStorage CRUD, streaks &amp;amp; fluency metrics
        └── scenarios.js        # Multi-language dialogues &amp;amp; Anxiety Shield metadata
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;h3&gt;
  
  
  1. Open-Source AI &amp;amp; Local Inference Layer
&lt;/h3&gt;

&lt;p&gt;LingoBuddy is architected around &lt;strong&gt;open-weight foundation models&lt;/strong&gt; via &lt;strong&gt;Ollama&lt;/strong&gt; (&lt;code&gt;http://localhost:11434/v1/chat/completions&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Models&lt;/strong&gt;: Optimized for &lt;strong&gt;Qwen 2.5&lt;/strong&gt; (&lt;code&gt;qwen2.5:latest&lt;/code&gt;) and &lt;strong&gt;Llama 3&lt;/strong&gt; (&lt;code&gt;llama3:latest&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engineering&lt;/strong&gt;: Uses structured JSON schema outputs to enforce conversational brevity (1–2 spoken sentences) paired with rich metadata required by the &lt;strong&gt;Anxiety Shield&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"reply"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"¡Hola! Bienvenido a Café Luz. ¿Qué te gustaría tomar hoy?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"translation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello! Welcome to Café Luz. What would you like to have today?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"grammarTip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"'¿Qué te gustaría...?' uses the polite conditional form of 'gustar'."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vocabHighlight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Bienvenido (welcome)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Tomar (to drink)"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"suggestedReplies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Un café con leche de avena, por favor."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"¿Tienen cruasanes o algo para comer?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Solo un espresso doble, gracias."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Local Fallback Engine&lt;/strong&gt;: If Ollama isn't running on the user's machine, the app automatically switches to an embedded contextual dialogue simulator in &lt;a&gt;&lt;code&gt;ai-handler.js&lt;/code&gt;&lt;/a&gt;, ensuring 100% uptime with zero setup friction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Audio &amp;amp; Speech Engineering
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implemented via the native &lt;strong&gt;Web Speech API&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SpeechRecognition&lt;/code&gt; / &lt;code&gt;webkitSpeechRecognition&lt;/code&gt; dynamically adjusts its &lt;code&gt;lang&lt;/code&gt; attribute to the target language (e.g., &lt;code&gt;es-ES&lt;/code&gt;, &lt;code&gt;fr-FR&lt;/code&gt;, &lt;code&gt;ja-JP&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SpeechSynthesis&lt;/code&gt; queries system voice catalogues to select high-fidelity native accents with pitch and rate modulation (0.75x slow mode).&lt;/li&gt;
&lt;li&gt;Built-in audio collision prevention stops speech recognition while the synthetic voice is speaking to prevent self-echo loops.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Frontend Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla ES6+ Modules&lt;/strong&gt;: Built with zero bundlers (no Webpack, Vite, or Babel required).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS via CDN + Custom CSS&lt;/strong&gt;: Ultra-smooth Glassmorphism styling with dark obsidian surfaces, cyan/emerald accents, and animated SVG waveforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA Ready&lt;/strong&gt;: Includes &lt;a&gt;&lt;code&gt;manifest.json&lt;/code&gt;&lt;/a&gt; and &lt;a&gt;&lt;code&gt;sw.js&lt;/code&gt;&lt;/a&gt; for desktop and mobile offline installation.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Open innovation is what made &lt;strong&gt;LingoBuddy&lt;/strong&gt; possible in ways closed APIs never could:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uncompromising Privacy for Vulnerable Learning&lt;/strong&gt;:
Learning a language involves making awkward, embarrassing mistakes. When users practice with closed commercial APIs (OpenAI, Google, Anthropic), their intimate voice recordings and transcripts are transmitted over third-party servers and potentially stored or used for training. By running open-weight models (Qwen-2.5, Llama-3) locally via Ollama, &lt;strong&gt;my friend's voice and thoughts never leave their laptop&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cost &amp;amp; Infinite Practice&lt;/strong&gt;:
Language fluency requires hundreds of hours of trial and error. Closed cloud APIs charge per-token fees that penalize users who need more repetitions. Open-source local inference is &lt;strong&gt;100% free and unlimited&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience &amp;amp; Travel Readiness&lt;/strong&gt;:
Learners frequently travel to places with spotty airport Wi-Fi or expensive roaming data. Because LingoBuddy combines local open-source AI with a PWA service worker and an autonomous offline fallback engine, it remains fully usable on airplanes, trains, or in remote cafes without an internet connection.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This application was engineered collaboratively using &lt;strong&gt;Antigravity AI&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture planning and technical specification generation in &lt;a&gt;&lt;code&gt;instructions.md&lt;/code&gt;&lt;/a&gt; and &lt;a&gt;&lt;code&gt;rules.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;End-to-end development of modular ES6 frontend, Web Speech API integration, and local Ollama REST client.&lt;/li&gt;
&lt;li&gt;Zero-dependency PWA configuration and Git repository deployment.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build for a Friend&lt;/strong&gt; (Primary Challenge Category)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open Innovation / Local AI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal Productivity &amp;amp; Learning&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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