<?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: Yogesh Kumar</title>
    <description>The latest articles on DEV Community by Yogesh Kumar (@yogesh968).</description>
    <link>https://dev.to/yogesh968</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%2F4172469%2F14ef7d5c-d2ff-41d9-ab55-2399e80fd045.jpg</url>
      <title>DEV Community: Yogesh Kumar</title>
      <link>https://dev.to/yogesh968</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yogesh968"/>
    <language>en</language>
    <item>
      <title>I Built G-Buudddyy : Bringing AI-Powered Experiences Beyond the Screen</title>
      <dc:creator>Yogesh Kumar</dc:creator>
      <pubDate>Fri, 16 Oct 2026 04:59:17 +0000</pubDate>
      <link>https://dev.to/yogesh968/i-built-g-buudddyy-bringing-ai-powered-experiences-beyond-the-screen-12e2</link>
      <guid>https://dev.to/yogesh968/i-built-g-buudddyy-bringing-ai-powered-experiences-beyond-the-screen-12e2</guid>
      <description>&lt;h1&gt;
  
  
  AI Garden Buddy
&lt;/h1&gt;

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

&lt;p&gt;AI Garden Buddy is a local-first gardening assistant that uses AI to help people start gardening. It recommends suitable plants, generates a personalized seven-day gardening plan, and suggests one small outdoor task to complete each day.&lt;/p&gt;

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Application:&lt;/strong&gt; &lt;a href="https://hacktoberfest-tawny.vercel.app/" rel="noopener noreferrer"&gt;https://hacktoberfest-tawny.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/yogesh968/hacktoberfest" rel="noopener noreferrer"&gt;https://github.com/yogesh968/hacktoberfest&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: AI plan generation requires the FastAPI backend and Ollama. The deployed frontend needs a reachable backend to generate plans for online users.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personalized Plant Recommendations:&lt;/strong&gt; Suggests plants based on city, garden type, sunlight, and gardening experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seven-Day Gardening Plan:&lt;/strong&gt; Generates a practical daily schedule based on available time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily Outdoor Tasks:&lt;/strong&gt; Provides actionable gardening activities with instructions and estimated completion times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Tracking:&lt;/strong&gt; Allows users to mark tasks as complete and record reflections in their browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety Notes:&lt;/strong&gt; Highlights considerations such as plant toxicity, heat exposure, heavy pots, and tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uncertainty Notes:&lt;/strong&gt; Explains limitations, including the lack of live weather and frost-date information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI Inference:&lt;/strong&gt; Runs a Gemma model locally through Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Output Validation:&lt;/strong&gt; Uses JSON Schema and Pydantic to validate AI-generated plans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliable Error Handling:&lt;/strong&gt; Reports model failures instead of presenting fabricated AI-generated plans.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React 18&lt;/li&gt;
&lt;li&gt;Vite 6&lt;/li&gt;
&lt;li&gt;Tailwind CSS v4&lt;/li&gt;
&lt;li&gt;lucide-react&lt;/li&gt;
&lt;li&gt;Fontsource&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Pydantic v2&lt;/li&gt;
&lt;li&gt;Uvicorn&lt;/li&gt;
&lt;li&gt;httpx&lt;/li&gt;
&lt;li&gt;pydantic-settings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI and Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Google Gemma&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;JSON Schema&lt;/li&gt;
&lt;li&gt;pytest&lt;/li&gt;
&lt;li&gt;ESLint&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The user enters their city, garden type, sunlight conditions, experience level, and available daily time.&lt;/li&gt;
&lt;li&gt;The React frontend sends the information to the FastAPI backend.&lt;/li&gt;
&lt;li&gt;The backend sends a prompt and JSON Schema to a Gemma model through Ollama.&lt;/li&gt;
&lt;li&gt;Pydantic validates the generated response.&lt;/li&gt;
&lt;li&gt;The frontend displays the gardening plan, plant recommendations, safety notes, and daily task.&lt;/li&gt;
&lt;li&gt;The user completes the outdoor task, marks it as done, and records a reflection.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React + Vite Frontend
        |
        v
FastAPI Backend
        |
        v
Ollama Inference Runtime
        |
        v
Gemma AI Model
        |
        v
Validated Gardening Plan
        |
        v
Outdoor Task and Progress Tracking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10 or later&lt;/li&gt;
&lt;li&gt;Node.js and npm&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ollama.com/download" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sufficient memory and disk space for your selected AI model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Clone the Repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/yogesh968/hacktoberfest.git
&lt;span class="nb"&gt;cd &lt;/span&gt;hacktoberfest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Download the AI Model
&lt;/h3&gt;

&lt;p&gt;Install Ollama and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3:4b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, use the smaller model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3:1b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Set Up the Backend
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;backend
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Activate the environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows PowerShell:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;venv&lt;/span&gt;&lt;span class="n"&gt;\Scripts\Activate.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;macOS/Linux:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the example environment file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows&lt;/span&gt;
copy .env.example .env

&lt;span class="c"&gt;# macOS/Linux&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Set Up the Frontend
&lt;/h3&gt;

&lt;p&gt;Open another terminal from the repository root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the frontend environment file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows&lt;/span&gt;
copy .env.example .env

&lt;span class="c"&gt;# macOS/Linux&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For local development, configure the backend URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VITE_API_BASE_URL=http://localhost:8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Run the Application
&lt;/h3&gt;

&lt;p&gt;Start Ollama if it is not already running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the backend from the &lt;code&gt;backend&lt;/code&gt; directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt; &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the frontend from the &lt;code&gt;frontend&lt;/code&gt; directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; &lt;a href="http://localhost:5173" rel="noopener noreferrer"&gt;http://localhost:5173&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend API Documentation:&lt;/strong&gt; &lt;a href="http://localhost:8000/docs" rel="noopener noreferrer"&gt;http://localhost:8000/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure the model configured in the backend has been downloaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Overview
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;GET /api/health&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Checks backend health and model connectivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;POST /api/garden-plan&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Generates a personalized gardening plan.&lt;/p&gt;

&lt;p&gt;Example request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:8000/api/garden-plan &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"city":"Pune","garden_type":"balcony","sunlight":"partial_sun","experience":"beginner","minutes_per_day":15}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the exact request fields and accepted values defined by the backend's Pydantic model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reliability and Error Handling
&lt;/h2&gt;

&lt;p&gt;The backend uses multiple validation layers to improve reliability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ollama structured outputs constrain the response using JSON Schema.&lt;/li&gt;
&lt;li&gt;Pydantic validates the generated response.&lt;/li&gt;
&lt;li&gt;Additional checks enforce application-specific requirements, including seven days and between two and six plant recommendations.&lt;/li&gt;
&lt;li&gt;Invalid output triggers one retry.&lt;/li&gt;
&lt;li&gt;If validation still fails, the backend returns a clear error.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When AI generation is unavailable, the application can display general gardening advice labelled &lt;strong&gt;"Not AI-generated"&lt;/strong&gt; instead of pretending it came from the model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;p&gt;The backend includes &lt;strong&gt;13 automated API tests using pytest&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The tests use a fake HTTP transport instead of Ollama, allowing API behavior and failure scenarios to be tested without running an actual model.&lt;/p&gt;

&lt;p&gt;Coverage includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Valid plans&lt;/li&gt;
&lt;li&gt;Malformed model output and retry behavior&lt;/li&gt;
&lt;li&gt;Ollama being unavailable&lt;/li&gt;
&lt;li&gt;Missing models&lt;/li&gt;
&lt;li&gt;Request timeouts&lt;/li&gt;
&lt;li&gt;Invalid form input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the backend tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; pytest &lt;span class="nt"&gt;-q&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run frontend checks from the frontend directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run lint
npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Privacy
&lt;/h2&gt;

&lt;p&gt;With the default local configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User inputs are sent to the local FastAPI backend and Ollama service.&lt;/li&gt;
&lt;li&gt;The backend does not log the city or other form inputs.&lt;/li&gt;
&lt;li&gt;Task completion and reflections are stored in the browser.&lt;/li&gt;
&lt;li&gt;Local AI inference does not require a hosted AI API key.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These privacy statements apply to the local configuration. A remote backend or cloud model may process data outside the user's computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The application does not automatically retrieve live weather or frost-date information.&lt;/li&gt;
&lt;li&gt;Plant recommendations may not account for every local growing condition.&lt;/li&gt;
&lt;li&gt;Smaller AI models may occasionally generate invalid or imperfect responses.&lt;/li&gt;
&lt;li&gt;Generation speed depends on the user's hardware.&lt;/li&gt;
&lt;li&gt;Users should verify plant toxicity and local growing advice, especially around children and pets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Model Licensing
&lt;/h2&gt;

&lt;p&gt;Gemma models have their own licensing terms. Gemma 3 is distributed under Google's Gemma Terms of Use, which differ from an OSI-approved open-source license.&lt;/p&gt;

&lt;p&gt;Check the applicable terms for the specific model version you use. The application's code license and the AI model's license are separate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Contributions and suggestions are welcome.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the repository.&lt;/li&gt;
&lt;li&gt;Create a branch for your changes.&lt;/li&gt;
&lt;li&gt;Implement your changes and add tests where appropriate.&lt;/li&gt;
&lt;li&gt;Run the relevant tests and code-quality checks.&lt;/li&gt;
&lt;li&gt;Submit a pull request describing your changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Please do not commit secrets, environment files, or other sensitive information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integration with verified weather and climate information&lt;/li&gt;
&lt;li&gt;Multilingual gardening assistance&lt;/li&gt;
&lt;li&gt;Plant images with appropriate attribution&lt;/li&gt;
&lt;li&gt;Saved gardening plans and streaks&lt;/li&gt;
&lt;li&gt;Improved regional plant recommendations&lt;/li&gt;
&lt;li&gt;Simplified local setup using Docker Compose&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgements
&lt;/h2&gt;

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI Garden Buddy explores how locally run AI can help people move from browsing and learning to taking meaningful action in the real world.&lt;/p&gt;

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

</description>
      <category>mlhacks</category>
      <category>devchallenge</category>
      <category>hackathon</category>
      <category>devcyclechallenge</category>
    </item>
  </channel>
</rss>
