<?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: Harish S T</title>
    <description>The latest articles on DEV Community by Harish S T (@harishhardik).</description>
    <link>https://dev.to/harishhardik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Harish S T</title>
      <link>https://dev.to/harishhardik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harishhardik"/>
    <language>en</language>
    <item>
      <title>🌿 TouchGrass AI: I Built a Local AI That Encourages People to Go Outside</title>
      <dc:creator>Harish S T</dc:creator>
      <pubDate>Sun, 11 Oct 2026 16:33:46 +0000</pubDate>
      <link>https://dev.to/harishhardik/touchgrass-ai-i-built-a-local-ai-that-encourages-people-to-go-outside-3ndc</link>
      <guid>https://dev.to/harishhardik/touchgrass-ai-i-built-a-local-ai-that-encourages-people-to-go-outside-3ndc</guid>
      <description>&lt;p&gt;What if AI could help us spend &lt;em&gt;less&lt;/em&gt; time on our screens instead of giving us another reason to stare at them?&lt;/p&gt;

&lt;p&gt;That question inspired me to build &lt;strong&gt;TouchGrass AI&lt;/strong&gt;, a local-first AI application that turns your interests, available time, and energy level into personalized outdoor missions.&lt;/p&gt;

&lt;p&gt;I built this project for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge — Week 1&lt;/a&gt;, themed &lt;strong&gt;Touch Grass&lt;/strong&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%2Fzxu7mzntxs9d006szknw.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%2Fzxu7mzntxs9d006szknw.png" alt=" " width="799" height="424"&gt;&lt;/a&gt;&lt;br&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%2F88fg74zlwn078z42ujg5.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%2F88fg74zlwn078z42ujg5.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI helps users discover simple outdoor activities instead of spending more time scrolling.&lt;/p&gt;

&lt;p&gt;Users can explore activities such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚶 Walking and exploring nearby places&lt;/li&gt;
&lt;li&gt;🌱 Gardening and connecting with nature&lt;/li&gt;
&lt;li&gt;🐦 Birdwatching and observing wildlife&lt;/li&gt;
&lt;li&gt;📸 Outdoor photography&lt;/li&gt;
&lt;li&gt;🧘 Mindfulness and relaxing outdoors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users choose their preferences, and the app generates a personalized mission with practical steps to follow.&lt;/p&gt;

&lt;p&gt;The goal is straightforward: make getting outside easier, more engaging, and accessible to more people.&lt;/p&gt;

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

&lt;p&gt;Watch the project demonstration on YouTube:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/i8BnZB_kX8o" rel="noopener noreferrer"&gt;▶️ Watch TouchGrass AI Demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the interface, activity selection, personalized mission generation, and local AI functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Source Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/harishhardik/TouchGrassAi" rel="noopener noreferrer"&gt;github.com/harishhardik/TouchGrassAi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source under the MIT License.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, and Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI runtime:&lt;/strong&gt; Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Qwen2.5 1.5B&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web experience:&lt;/strong&gt; Progressive Web App (PWA)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Pytest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose this stack to keep the application lightweight, understandable, and capable of running AI inference locally.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  1. A simple, preference-based experience
&lt;/h3&gt;

&lt;p&gt;The frontend lets users select their interests and available time. These preferences are sent to the FastAPI backend, which prepares the request for the local language model.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Local AI inference
&lt;/h3&gt;

&lt;p&gt;Instead of relying on a hosted AI API for every request, TouchGrass AI uses &lt;strong&gt;Ollama with Qwen2.5 1.5B&lt;/strong&gt; to generate outdoor missions on the user's machine.&lt;/p&gt;

&lt;p&gt;The model receives the user's preferences and generates a relevant activity with actionable instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fallback handling
&lt;/h3&gt;

&lt;p&gt;AI output isn't always predictable. The backend validates the generated response and falls back to predefined missions if the model returns invalid output or the request fails.&lt;/p&gt;

&lt;p&gt;This helps prevent a model error from breaking the entire experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Testing and offline verification
&lt;/h3&gt;

&lt;p&gt;I added automated backend tests covering health checks, request validation, successful local AI responses, invalid model output, and connection failures.&lt;/p&gt;

&lt;p&gt;The backend test suite passed all six tests, and the frontend production build completed successfully.&lt;/p&gt;

&lt;p&gt;I also verified local mission generation with the internet disconnected after downloading the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important distinction:&lt;/strong&gt; the AI model must be downloaded first, and the web app must be loaded or installed beforehand. The local inference workflow can then operate without an internet connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 Why Open Innovation Matters
&lt;/h2&gt;

&lt;p&gt;For this project, open innovation isn't just about using an open model. It's about having greater control over how the application works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; With local inference, mission-generation requests can stay on the user's machine rather than needing to be sent to a hosted AI inference provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility:&lt;/strong&gt; Once the model and app are available locally, users can generate missions without requiring a continuous internet connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transparency:&lt;/strong&gt; Developers can inspect the backend, modify prompts, improve fallback behavior, and experiment with different models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; The project can evolve as new models and local inference tools become available.&lt;/p&gt;

&lt;p&gt;These benefits come with trade-offs. Local models require disk space and computing resources, and their speed and output quality depend on the device.&lt;/p&gt;

&lt;p&gt;For this project, I wanted to explore how local AI could support a useful everyday experience without making a remote AI service a runtime dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔬 What I Learned
&lt;/h2&gt;

&lt;p&gt;Building TouchGrass AI helped me explore more than connecting a frontend to a language model.&lt;/p&gt;

&lt;p&gt;I worked on integrating local inference with a web application, handling unpredictable model output, testing failure scenarios, and checking how the experience behaves offline.&lt;/p&gt;

&lt;p&gt;It also reinforced an idea I want to explore further: AI doesn't always need to keep users engaged with technology. Sometimes, it can help them step away from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔮 What's Next?
&lt;/h2&gt;

&lt;p&gt;Some improvements I'd like to explore include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More personalized missions based on weather and location&lt;/li&gt;
&lt;li&gt;Mission history and progress tracking&lt;/li&gt;
&lt;li&gt;Additional local models and configurable inference settings&lt;/li&gt;
&lt;li&gt;Better offline support and accessibility&lt;/li&gt;
&lt;li&gt;Feedback that helps improve the quality of generated missions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🤝 Try It and Contribute
&lt;/h2&gt;

&lt;p&gt;Check out the repository, explore the implementation, and share suggestions or improvements.&lt;/p&gt;

&lt;p&gt;🌱 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/harishhardik/TouchGrassAi" rel="noopener noreferrer"&gt;https://github.com/harishhardik/TouchGrassAi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎥 &lt;strong&gt;Demo:&lt;/strong&gt; &lt;a href="https://youtu.be/i8BnZB_kX8o" rel="noopener noreferrer"&gt;https://youtu.be/i8BnZB_kX8o&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, TouchGrass AI is an experiment in using open-source AI to encourage a healthier relationship with technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less scrolling. More growing. More time outside.&lt;/strong&gt; 🌿&lt;/p&gt;

&lt;h2&gt;
  
  
  🏆 Challenge Details
&lt;/h2&gt;

&lt;p&gt;Built 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;/p&gt;

&lt;p&gt;&lt;strong&gt;Prize categories:&lt;/strong&gt; No partner-specific category is claimed in this submission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent session:&lt;/strong&gt; No DevRelay session link included.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #hacktoberfest #opensource #localai #ollama #react #python
&lt;/h1&gt;

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