<?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: Yagnik Satani</title>
    <description>The latest articles on DEV Community by Yagnik Satani (@yagnik_satani_01cca6905ed).</description>
    <link>https://dev.to/yagnik_satani_01cca6905ed</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%2F4171379%2F389dc5ca-2ce0-4c28-967a-cbff0c93def5.png</url>
      <title>DEV Community: Yagnik Satani</title>
      <link>https://dev.to/yagnik_satani_01cca6905ed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yagnik_satani_01cca6905ed"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Yagnik Satani</dc:creator>
      <pubDate>Tue, 13 Oct 2026 07:19:12 +0000</pubDate>
      <link>https://dev.to/yagnik_satani_01cca6905ed/-3l10</link>
      <guid>https://dev.to/yagnik_satani_01cca6905ed/-3l10</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22" class="crayons-story__hidden-navigation-link"&gt;NailFlow AI: A Local-First Studio Assistant for Nail Artists&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yagnik_satani_01cca6905ed" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F4171379%2F389dc5ca-2ce0-4c28-967a-cbff0c93def5.png" alt="yagnik_satani_01cca6905ed profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yagnik_satani_01cca6905ed" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Yagnik Satani
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Yagnik Satani
                
                
              
              &lt;div id="story-author-preview-content-4842497" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yagnik_satani_01cca6905ed" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F4171379%2F389dc5ca-2ce0-4c28-967a-cbff0c93def5.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Yagnik Satani&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22" id="article-link-4842497"&gt;
          NailFlow AI: A Local-First Studio Assistant for Nail Artists
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>NailFlow AI: A Local-First Studio Assistant for Nail Artists</title>
      <dc:creator>Yagnik Satani</dc:creator>
      <pubDate>Tue, 13 Oct 2026 07:17:03 +0000</pubDate>
      <link>https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22</link>
      <guid>https://dev.to/yagnik_satani_01cca6905ed/nailflow-ai-a-local-first-studio-assistant-for-nail-artists-l22</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;p&gt;Running a small nail studio means doing two jobs: the creative work clients come for, and the admin that happens between appointments. NailFlow AI is a small assistant I built for independent nail artists and beauty studios to make that second job easier.&lt;/p&gt;

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

&lt;p&gt;NailFlow turns a service inquiry into a transparent price estimate and editable client-ready copy. It can prepare a WhatsApp reply, general aftercare notes, a follow-up message, and social content such as captions, stories, hashtags, and calls to action. A local client pipeline lets the artist save a quote and track it as Draft, Follow-up, or Done. The service menu can be edited to reflect the studio's own prices and session durations.&lt;/p&gt;

&lt;p&gt;The idea is deliberately focused: independent artists shouldn't have to rewrite the same kinds of messages all day or guess at a price on every inquiry. NailFlow gives them a draft they can review and adapt, not an automation that speaks to a client without permission.&lt;/p&gt;

&lt;p&gt;The quote itself is calculated in code from the artist's editable menu, design complexity, and selected add-ons. AI helps with wording; it does not decide the final price. Server-side guardrails normalize detected currency amounts to the computed estimate and neutralize some common false booking-confirmation claims. These safeguards reduce risk but are not perfect, so every message should still be reviewed before sending. NailFlow does not send messages or book appointments automatically.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live web demo:&lt;/strong&gt; &lt;a href="https://nail-flow-ai-lemon.vercel.app/" rel="noopener noreferrer"&gt;https://nail-flow-ai-lemon.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The deployed Vercel version demonstrates the web interface and its template fallback. It is &lt;strong&gt;not connected to Ollama running on my computer&lt;/strong&gt;, so the hosted demo should not be treated as proof of live Gemma inference.&lt;/p&gt;

&lt;p&gt;I verified the local AI path on Windows with Ollama 0.35.0 and Gemma 3 1B: the model passed a direct prompt test, and NailFlow then generated a client pack marked &lt;strong&gt;LOCAL AI · Generated with local Ollama inference&lt;/strong&gt;. The hosted Vercel demo remains separate and uses its template fallback; it does not connect to the Ollama service on my PC.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Public repository:&lt;/strong&gt; &lt;a href="https://github.com/yagnik-satani-otelier/NailFlow-AI" rel="noopener noreferrer"&gt;https://github.com/yagnik-satani-otelier/NailFlow-AI&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;NailFlow uses a dependency-free Node.js HTTP server, vanilla JavaScript, CSS, and browser localStorage. The local-AI path is designed to use &lt;strong&gt;Gemma 3 1B through Ollama&lt;/strong&gt;. The browser calls the local Node server, which forwards a structured prompt to the Ollama API on the same machine. The model can be changed with the &lt;code&gt;OLLAMA_MODEL&lt;/code&gt; environment variable.&lt;/p&gt;

&lt;p&gt;The prompts, validation, output parsing, deterministic pricing, and post-generation quote guardrails are visible in &lt;code&gt;lib/core.js&lt;/code&gt; and &lt;code&gt;server.js&lt;/code&gt;. The server sends an explicit output schema to Ollama for each generation mode to improve structured responses from a small model. When Ollama or the model is unavailable, the interface clearly labels generated content as template fallback rather than pretending it came from AI.&lt;/p&gt;

&lt;p&gt;To run the local AI path, install &lt;a href="https://ollama.com/download" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;, then run these commands in the repository folder:&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="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;gemma3:1b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;check&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;a href="http://127.0.0.1:4174" rel="noopener noreferrer"&gt;http://127.0.0.1:4174&lt;/a&gt;. Generate a sample client pack and confirm that the result says &lt;strong&gt;LOCAL AI&lt;/strong&gt;. I verified this path locally; if a future run says &lt;strong&gt;TEMPLATE MODE&lt;/strong&gt;, that request did not use Gemma.&lt;/p&gt;

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

&lt;p&gt;For a solo studio, a per-message AI bill or a dependency on a hosted writing API can make a small admin assistant less practical. Local inference can avoid a NailFlow-hosted inference service or API key, while letting the studio control its own service menu, prompts, and model choice. When run with Ollama on the same machine, enquiry text goes to that local Ollama service rather than to a hosted AI provider.&lt;/p&gt;

&lt;p&gt;There is a trade-off: the user must install and run Ollama and download a model, and a small model can produce wording that needs editing. The hosted web demo is useful for seeing the interface, while local setup is necessary to demonstrate the Gemma path. Gemma is an open-weight model; open weights should not automatically be described as OSI-approved open-source software, and model terms should be reviewed separately.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated suite:&lt;/strong&gt; 20 passing unit and HTTP integration tests covering input bounds, deterministic pricing, prompt constraints, quote guardrails, parsing, template fallback, a mocked Ollama bridge, and HTTP error/security cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser smoke test:&lt;/strong&gt; with mocked generation responses, I checked in-place quote and content editing, saving a quote to the client pipeline, service-duration editing, and a 390px mobile layout without horizontal overflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real local-AI smoke test:&lt;/strong&gt; ran &lt;code&gt;ollama run gemma3:1b&lt;/code&gt; successfully, then generated a NailFlow client pack locally with the visible &lt;strong&gt;LOCAL AI&lt;/strong&gt; label. This confirms the live inference path works on my machine; a single smoke test does not establish that every output is correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Important limitation:&lt;/strong&gt; automated HTTP integration tests use a mock Ollama server, not the actual Gemma weights. They validate the app's bridge and guardrails but do not prove general output quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I haven't run a customer trial yet, so I won't claim that a nail artist has paid for or adopted the tool. A useful next validation is to put it in front of one artist, observe a sample inquiry workflow, and use their feedback to improve it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WildMinute: Open-Weight AI That Gets You Off the Screen</title>
      <dc:creator>Yagnik Satani</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:25:10 +0000</pubDate>
      <link>https://dev.to/yagnik_satani_01cca6905ed/wildminute-open-weight-ai-that-gets-you-off-the-screen-30en</link>
      <guid>https://dev.to/yagnik_satani_01cca6905ed/wildminute-open-weight-ai-that-gets-you-off-the-screen-30en</guid>
      <description>&lt;h1&gt;
  
  
  WildMinute: Open-Weight AI That Gets You Off the Screen 🌿
&lt;/h1&gt;

&lt;p&gt;I built &lt;strong&gt;WildMinute&lt;/strong&gt;, a local-first outdoor adventure planner inspired by a simple idea: technology should sometimes help us plan something meaningful, then get out of the way.&lt;/p&gt;

&lt;p&gt;The app helps turn “I should go outside” into a manageable adventure. Choose the time you have, your mood, activity, setting, and optional area. WildMinute creates a small mission, a flexible route outline, and a list of details to look for outdoors. After the walk, you can record observations, notes, and photos, then turn the experience into an &lt;strong&gt;Adventure Journal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo:&lt;/strong&gt; &lt;a href="https://wild-minute-ai.vercel.app/" rel="noopener noreferrer"&gt;https://wild-minute-ai.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/yagnik-satani-otelier/WildMinuteAI" rel="noopener noreferrer"&gt;https://github.com/yagnik-satani-otelier/WildMinuteAI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Community feedback shaped the project
&lt;/h2&gt;

&lt;p&gt;The feedback I received suggested taking the experience beyond activity recommendations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask users about their location area and preferences.&lt;/li&gt;
&lt;li&gt;Suggest outdoor activities.&lt;/li&gt;
&lt;li&gt;Generate a walking or hiking route outline.&lt;/li&gt;
&lt;li&gt;Suggest things to look for outside.&lt;/li&gt;
&lt;li&gt;Provide an offline adventure checklist.&lt;/li&gt;
&lt;li&gt;Let users record observations, photos, and notes.&lt;/li&gt;
&lt;li&gt;Generate a small journal after the walk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those suggestions helped define WildMinute's full loop: &lt;strong&gt;plan → explore → record → remember&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why local AI?
&lt;/h2&gt;

&lt;p&gt;WildMinute uses &lt;strong&gt;Gemma 3 1B through Ollama&lt;/strong&gt; for AI-generated missions and journal text. The Node.js server talks to a local Ollama instance; there is no WildMinute-hosted inference endpoint or API key.&lt;/p&gt;

&lt;p&gt;The model prompt and response-parsing logic are part of the repository, so developers can inspect the constraints and adapt them. The app doesn't request GPS permission or require an account. Preferences and fieldbook data are stored in the browser on the current device, and photos are not sent to the model.&lt;/p&gt;

&lt;p&gt;A local model is not the same thing as a blanket claim that every part of the project or its model is OSI-approved open-source software. Check the relevant model and runtime licenses before redistributing weights.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personalised micro-adventures:&lt;/strong&gt; choose a short duration, activity, mood, and optional area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route outline and spotting ideas:&lt;/strong&gt; get a flexible walk structure and prompts for what to notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline checklist:&lt;/strong&gt; keep track of what to bring, even without AI inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fieldbook:&lt;/strong&gt; save observations, notes, and photos locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adventure Journal:&lt;/strong&gt; turn the saved walk record into a short recap using local AI, or use a clearly labelled on-device template.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-oriented defaults:&lt;/strong&gt; no account, no GPS permission, no analytics, and no hosted inference service in this project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Safety and limitations
&lt;/h2&gt;

&lt;p&gt;The route output is a &lt;strong&gt;suggested route shape&lt;/strong&gt;, not turn-by-turn navigation or a verified trail recommendation. WildMinute does not claim to check live maps, weather, trail access, wildlife, or accessibility. An optional external Maps search can help the user find a real route, which should be independently verified before going out.&lt;/p&gt;

&lt;p&gt;AI-generated advice can be wrong. Treat activity suggestions as inspiration, follow local guidance, and prioritise safety and accessibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built with
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js built-in HTTP server&lt;/li&gt;
&lt;li&gt;Vanilla JavaScript and CSS&lt;/li&gt;
&lt;li&gt;IndexedDB for locally stored fieldbook content&lt;/li&gt;
&lt;li&gt;Ollama for local inference&lt;/li&gt;
&lt;li&gt;Gemma 3 1B by default&lt;/li&gt;
&lt;li&gt;Native Node.js test runner&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run it locally
&lt;/h2&gt;

&lt;p&gt;Requirements: Node.js 18.18+ and Ollama for the AI path.&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
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;a href="http://127.0.0.1:4173" rel="noopener noreferrer"&gt;http://127.0.0.1:4173&lt;/a&gt;. To run the built-in fallback without Ollama, start the app and explore the interface; the AI-specific path requires Ollama and the model to be available.&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;The current automated suite passes &lt;strong&gt;5 tests&lt;/strong&gt; covering preference validation, prompt safety constraints, route and spotting response parsing, and journal prompt/output parsing. These tests don't replace end-to-end tests of actual model inference, offline behavior, photo persistence, or an outdoor field test.&lt;/p&gt;

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

&lt;p&gt;The project currently runs locally. I have not added a hosted demo URL because the AI path depends on a local Ollama installation. A short screen recording or genuine screenshots of the running app are the most honest demo until a hosted option is deliberately built and verified.&lt;/p&gt;

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

&lt;p&gt;This project reminded me that adding AI isn't only about generating text. The surrounding experience matters just as much: make the offline behavior clear, distinguish suggestions from verified facts, preserve a person's notes locally, and build a reason to put the phone away again.&lt;/p&gt;

&lt;p&gt;WildMinute is an experiment in making AI a quiet planning tool rather than the destination.&lt;/p&gt;




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