DEV Community

Mayukh Jyoti Sarkar
Mayukh Jyoti Sarkar

Posted on

Raid Outside!

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

Raid Outside turns a short break into a co-op, tabletop-RPG-style outdoor quest. Pick a vibe, set how much time you have, enter a nearby public place, and get a mission with a story hook, clue, objective, ending, and collectible badge.

It’s for people who spend too much of the day at a desk and want a more fun reason to meet friends and go outside than another reminder to take a walk. The app is designed to make the screen a quick briefing before the real adventure.

The prototype has a complete solo flow from creating a raid through completing it. Party codes and joining are currently demo interactions; there isn’t a server syncing players across devices yet.

Demo

No hosted demo yet. You can run the prototype locally using the instructions in the README.

Code

Raid Outside source code

How I Built It

Raid Outside is built with React, TypeScript, Vite, and Tailwind CSS. For mission generation, it connects to a configurable OpenAI-compatible endpoint intended for a locally hosted open-weight model, such as one served by Ollama. The model receives the selected vibe, time, effort, and place context, then returns structured JSON for the mission. The app checks that the required fields are present and falls back to hand-written missions if the model is unavailable or its response is invalid.

The prototype also uses OpenStreetMap’s Nominatim service to look up the place name entered by the player. That lookup can return a broad mapped place classification; it does not verify individual features on site. The app doesn’t request GPS. Settings, completed raids, and badges are stored in browser local storage.

Why Does Open Innovation Matter?

The open-model approach lets the person running the app choose and change the model, adjust the mission prompt, and run inference locally instead of sending mission details to a closed AI provider. That matters for a location-based activity: if the model endpoint is local, the place context used to generate a quest stays on the player’s device.

This isn’t fully offline today: the local model must be installed and running, and place-name lookup uses Nominatim over the internet. If AI generation is unavailable, the app can still create a raid using its hand-written fallback missions.

I haven’t benchmarked it against a closed model. The advantage I’m aiming for is control: being able to swap models and shape the mission behavior without tying the app to one hosted AI provider.

Top comments (0)