DEV Community

Dinuka Ekanayake
Dinuka Ekanayake

Posted on

I Gave a Local AI One Job: Get Me Off the Screen 🌿

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass.

What I Built

What if the most useful AI app was one that helped you spend less time using apps?

As developers, students, and people who work in front of screens all day, we know the feeling: we need a break, so we reach for our phones. Then a few minutes of scrolling becomes half an hour.

I wanted to try something different.

Meet GrassQuest Local — a local-AI-powered outdoor adventure companion that turns a short break into a small mission worth stepping outside for.

Instead of recommending another feed to scroll through, it gives you something to do in the real world.

Here's how it works:

  1. Choose your break. Pick how much time you have, your outdoor environment, what you want from the break, and whether you're going solo or with someone.
  2. Generate your quest. Gemma 3 4B creates a personalized outdoor mission with five tasks and a 3×3 Outside Bingo board.
  3. Switch to Pocket Mode. Take your mission outside, use the timer, and check off tasks as you complete them.
  4. Finish the adventure. Track your progress without needing a complicated account, social feed, or cloud AI service.

The app also saves your mission and progress in the browser, so refreshing the page doesn't mean losing your adventure. Its offline-friendly design keeps the interface and an already-generated mission useful even when the backend isn't available, provided the app has been cached.

GrassQuest Local is for anyone who spends too much time at a desk and wants a simple, low-friction reason to take a walk, notice their surroundings, or enjoy a short break outdoors.

The idea is simple: AI should help you get into the world, not give you another reason to stare at a screen.

Demo

https://drive.google.com/file/d/14d9VpWXjwM6R6zTMc26aftUtiTiOVq7Q/view

The demo should show the actual workflow:

  • Selecting a duration, environment, and goal
  • Generating a mission with local Gemma
  • Entering Pocket Mode and using the timer
  • Completing tasks and Outside Bingo squares
  • Refreshing the page and restoring saved progress

A short screen recording is enough. The AI runs locally, so a localhost URL alone isn't a publicly accessible demo.

Code

https://github.com/DinukaEk/grassquest-local

GrassQuest Local is built as a local-first application rather than a cloud-AI wrapper.

To run it locally, install the .NET 10 SDK and Ollama, pull the model, and start the application:

ollama pull gemma3:4b
dotnet restore
dotnet run
Enter fullscreen mode Exit fullscreen mode

Then open the local URL printed in the terminal.

The repository should include the source code, project setup instructions, and any configuration needed to run the app.

How I Built It

I built GrassQuest Local with a deliberately lightweight stack:

  • AI model: Gemma 3 4B, an open-weight model served locally through Ollama.
  • Backend: ASP.NET Core on .NET 10, responsible for communicating with the model and generating quests through the /api/quest endpoint.
  • Frontend: HTML, CSS, and vanilla JavaScript.
  • Pocket experience: A responsive interface, mission timer, task tracking, and interactive 3×3 bingo board.
  • Persistence and offline support: Browser storage preserves the active mission and progress; a service worker caches the app interface.

The user provides a few preferences, and the backend asks Gemma to generate a structured mission. The frontend turns that response into a usable outdoor experience rather than exposing a raw chat conversation.

I also included a local-AI status check, so the interface can distinguish a ready model from an unavailable backend.

The most important design decision was to make the AI generate the mission and then let the person get on with it. The model isn't meant to be the activity; it's the starting point for the activity.

Why Does Open Innovation Matter?

For this project, running an open-weight model locally isn't just a technical preference. It changes how the application can be used.

1. AI without a cloud AI dependency

Gemma runs through Ollama on my own computer. Quest generation doesn't require sending prompts to a third-party hosted AI API or obtaining a separate AI API key.

2. More control over the experience

I can inspect and change the prompts, adjust how quests are generated, and experiment with compatible models. I'm not locked into a single hosted AI provider's interface or pricing.

3. A more private, local-first design

The application doesn't need a cloud AI account to generate missions. In this local setup, quest preferences are processed by the backend on the same computer rather than sent to a third-party AI inference service.

4. A practical offline boundary

Once a mission is generated and saved, the cached interface and saved progress can continue to work offline. Generating a new AI mission still requires the backend and Ollama to be running, so I don't claim that model inference works offline on every device.

That distinction matters. Local AI doesn't magically remove every connectivity requirement, but it makes a useful, more self-contained experience possible without depending on a remote AI API.

Open innovation gives me the freedom to experiment with the model and architecture while keeping the project accessible to other developers who want to learn from it or extend it.

Prize Categories

Best Use of Gemma

Gemma 3 4B is the core mission-generation engine in GrassQuest Local. It transforms a user's available time and outdoor preferences into the tasks that drive the experience. The model isn't an optional add-on; without it, the personalized quest-generation feature wouldn't work as designed.


The goal of GrassQuest Local isn't to keep you engaged with another app.

It's to help you make a plan, put your phone away, and notice a little more of the world around you. 🌿

Top comments (0)