<?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: Adeepa Nisal</title>
    <description>The latest articles on DEV Community by Adeepa Nisal (@adeesl).</description>
    <link>https://dev.to/adeesl</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%2F527978%2F6271e911-c0e5-41f5-b40a-34aab1ce5a4c.png</url>
      <title>DEV Community: Adeepa Nisal</title>
      <link>https://dev.to/adeesl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adeesl"/>
    <language>en</language>
    <item>
      <title>🌿 WildLens-AI — Take AI Outside</title>
      <dc:creator>Adeepa Nisal</dc:creator>
      <pubDate>Thu, 08 Oct 2026 05:21:14 +0000</pubDate>
      <link>https://dev.to/adeesl/wildlens-ai-take-ai-outside-18le</link>
      <guid>https://dev.to/adeesl/wildlens-ai-take-ai-outside-18le</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TrailMate AI&lt;/strong&gt; is an open-source, offline-first outdoor companion designed to help people spend less time looking at a screen and more time exploring the real world.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Take TrailMate with you, go outside, and let local AI help you understand what you discover.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;TrailMate currently provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📷 &lt;strong&gt;Nature identification&lt;/strong&gt; using an open-weight vision model&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Local AI analysis&lt;/strong&gt; through Ollama&lt;/li&gt;
&lt;li&gt;📍 &lt;strong&gt;GPS trail tracking&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📏 &lt;strong&gt;Distance tracking&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📔 &lt;strong&gt;Nature Journal&lt;/strong&gt; for saving discoveries&lt;/li&gt;
&lt;li&gt;📴 &lt;strong&gt;Offline-first trail and journal functionality&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;Local browser storage&lt;/strong&gt; for observations and trail data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is designed for hikers, nature explorers, students, photographers, and anyone who wants to learn more about the environment around them.&lt;/p&gt;

&lt;p&gt;For example, while hiking, I can take a photo of a plant or other outdoor subject and ask TrailMate to analyze it. I can then save the observation together with its location and continue my hike.&lt;/p&gt;

&lt;p&gt;The goal is for the &lt;strong&gt;screen to be the shortest part of the experience&lt;/strong&gt;.&lt;/p&gt;




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

&lt;p&gt;🚧 &lt;strong&gt;Live demo coming soon.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project can currently be run locally with:&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;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;and the local AI backend with:&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;backend
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt; &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The AI runs through a local Ollama installation.&lt;/p&gt;

&lt;p&gt;I am also working toward an outdoor demonstration where TrailMate is taken on an actual trail and used to record observations and track the walk.&lt;/p&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;
&lt;h3&gt;
  
  
  GitHub
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;TrailMate AI&lt;/strong&gt;&lt;/p&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/AdeeSL" rel="noopener noreferrer"&gt;
        AdeeSL
      &lt;/a&gt; / &lt;a href="https://github.com/AdeeSL/WildLens-AI" rel="noopener noreferrer"&gt;
        WildLens-AI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      TrailMate AI is an open-source, offline-first outdoor companion designed to help people spend less time looking at a screen and more time exploring the real world.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;The repository contains the complete source code, including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trailmate-ai/
│
├── frontend/          # React + Vite PWA
├── backend/           # FastAPI API
├── .github/
│   └── workflows/     # GitHub Pages deployment
├── docker-compose.yml
├── LICENSE
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project is released under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;




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

&lt;p&gt;TrailMate is built around the idea that AI does not always need to live in the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Open-weight AI
&lt;/h3&gt;

&lt;p&gt;The AI layer uses &lt;strong&gt;Ollama&lt;/strong&gt; to run a local vision-capable open-weight model.&lt;/p&gt;

&lt;p&gt;For the initial MVP, the default model configuration is:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The model can be changed without redesigning the application.&lt;/p&gt;

&lt;p&gt;The flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📷 Photo
   ↓
React PWA
   ↓
FastAPI
   ↓
Ollama
   ↓
Open-weight Vision Model
   ↓
Structured Nature Information
   ↓
📱 TrailMate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model returns information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Possible identification&lt;/li&gt;
&lt;li&gt;Scientific name&lt;/li&gt;
&lt;li&gt;Confidence&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Visual field marks&lt;/li&gt;
&lt;li&gt;Safety information&lt;/li&gt;
&lt;li&gt;Suggested next observation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖥️ Frontend
&lt;/h3&gt;

&lt;p&gt;The frontend is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Progressive Web App architecture&lt;/li&gt;
&lt;li&gt;Browser Geolocation API&lt;/li&gt;
&lt;li&gt;LocalStorage&lt;/li&gt;
&lt;li&gt;Responsive/mobile-first UI&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚙️ Backend
&lt;/h3&gt;

&lt;p&gt;The backend uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;HTTPX&lt;/li&gt;
&lt;li&gt;Ollama API&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📍 Outdoor features
&lt;/h3&gt;

&lt;p&gt;GPS coordinates are collected through the browser's Geolocation API.&lt;/p&gt;

&lt;p&gt;Trail points are stored locally and used to calculate approximate walking distance.&lt;/p&gt;

&lt;p&gt;Nature observations are also stored locally in the browser.&lt;/p&gt;




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

&lt;p&gt;This is the most important part of TrailMate.&lt;/p&gt;

&lt;p&gt;A typical AI nature application could work like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📷 Photo
   ↓
Internet
   ↓
Cloud AI API
   ↓
External Server
   ↓
Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That works, but it creates several problems for an outdoor application.&lt;/p&gt;

&lt;p&gt;You may not have Internet connectivity.&lt;/p&gt;

&lt;p&gt;You may not want to upload your photographs and location data.&lt;/p&gt;

&lt;p&gt;And repeated AI API calls can introduce ongoing costs.&lt;/p&gt;

&lt;p&gt;TrailMate takes a different approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📷 Photo
   ↓
Your environment
   ↓
Local FastAPI
   ↓
Ollama
   ↓
Open-weight AI
   ↓
Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌐 Connectivity
&lt;/h3&gt;

&lt;p&gt;Hiking trails don't always have reliable mobile coverage.&lt;/p&gt;

&lt;p&gt;TrailMate's trail tracking and journal are designed to continue working when the browser is offline.&lt;/p&gt;

&lt;p&gt;The AI architecture is also local, so the AI service does not inherently require a third-party cloud API.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Privacy
&lt;/h3&gt;

&lt;p&gt;Outdoor observations can contain more information than just a picture.&lt;/p&gt;

&lt;p&gt;They can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Time&lt;/li&gt;
&lt;li&gt;Photos&lt;/li&gt;
&lt;li&gt;Personal notes&lt;/li&gt;
&lt;li&gt;Places someone visits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With local inference, these observations don't have to be sent to a proprietary AI provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔄 Model freedom
&lt;/h3&gt;

&lt;p&gt;The application is not designed around a single closed AI API.&lt;/p&gt;

&lt;p&gt;The AI layer is separated from the application, making it possible to change the underlying model as open models improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 Cost
&lt;/h3&gt;

&lt;p&gt;There is no per-image cloud AI API charge when running the model locally.&lt;/p&gt;

&lt;p&gt;Once the required model is downloaded, the AI can run on your own hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ Community ownership
&lt;/h3&gt;

&lt;p&gt;Because the project is open source, contributors can improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI model adapters&lt;/li&gt;
&lt;li&gt;Nature datasets&lt;/li&gt;
&lt;li&gt;Offline maps&lt;/li&gt;
&lt;li&gt;Trail features&lt;/li&gt;
&lt;li&gt;Accessibility&lt;/li&gt;
&lt;li&gt;UI&lt;/li&gt;
&lt;li&gt;Localization&lt;/li&gt;
&lt;li&gt;Bird identification&lt;/li&gt;
&lt;li&gt;Plant identification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project can evolve with the community rather than being locked to one provider.&lt;/p&gt;




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

&lt;p&gt;The current project is an MVP, but I want to take TrailMate further.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌿 Planned features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📴 Fully device-local AI inference&lt;/li&gt;
&lt;li&gt;🗺️ Offline map tiles&lt;/li&gt;
&lt;li&gt;🐦 Bird-call identification&lt;/li&gt;
&lt;li&gt;🌱 Plant-specific identification&lt;/li&gt;
&lt;li&gt;📍 Nearby nature points&lt;/li&gt;
&lt;li&gt;📈 Trail elevation&lt;/li&gt;
&lt;li&gt;📤 GPX export/import&lt;/li&gt;
&lt;li&gt;📱 Android version&lt;/li&gt;
&lt;li&gt;🔐 Encrypted local journal&lt;/li&gt;
&lt;li&gt;🇱🇰 Sri Lankan biodiversity support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest next step is &lt;strong&gt;fully local device inference&lt;/strong&gt;, so the ultimate experience can become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✈️ Airplane Mode ON
       ↓
🥾 Go Hiking
       ↓
📷 Take Photo
       ↓
🤖 Local AI
       ↓
🌿 Discover Something
       ↓
📔 Save Observation
       ↓
🥾 Keep Walking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cloud AI required.&lt;/p&gt;




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

&lt;p&gt;Not included in this submission.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Open-Source AI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Touch Grass / Outdoor Experience&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local AI / Privacy-focused AI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;AI doesn't always have to keep us in front of a screen.&lt;/p&gt;

&lt;p&gt;I wanted to build something where AI is useful &lt;strong&gt;because it helps you leave the screen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;TrailMate's goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use AI to explore the world, not replace exploring it.&lt;/strong&gt; 🌿🥾&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for checking out TrailMate AI!&lt;/p&gt;

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