This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
What I Built
Sometimes the hardest part of going outside is deciding what to do once you get there.
I built Earthly, an outdoor adventure app that turns a little spare time into a personalized nature quest. It’s for anyone who wants a break from their screen without needing to organize a big trip: developers between tasks, students after studying, or someone looking for a different way to explore their neighborhood.
Choose your available time, mood, location, company, and mobility preferences. Earthly asks Gemma to create a short plan with activities that fit those choices.
The experience is designed around getting you moving:
- No login required: start planning as a guest.
- Personalized quests: choose a peaceful pause, curious exploration, or an energized walk.
- One instruction at a time: field mode keeps the next activity easy to read.
- Phone-away reminders: prompts encourage you to put the device away between moments.
- Nature bingo: notice small details such as clouds, leaves, textures, and sounds.
- Text and photo observations: save something interesting and ask Gemma for cautious context.
- Optional voice instructions: hear your next step through ElevenLabs.
- Adventure journal: revisit your quests and observations afterward.
The completion recap estimates time spent away from the app by subtracting visible app time from elapsed quest time. It’s an estimate, not GPS verification or a measurement of total device screen time.
My goal is simple: make the screen the shortest part of the adventure.
Demo
Live app: https://earthly-roan.vercel.app
A walkthrough follows this journey:
- Open Earthly and start without logging in.
- Choose a 30-minute adventure and a mood.
- Enter a familiar public area or discover nearby places.
- Generate a quest and review its steps.
- Enter field mode, follow the activities, and mark nature bingo items.
- Save an observation and finish with a recap.
Previously saved quest instructions remain available offline. Generating new plans and requesting AI analysis require a connection.
Code
GitHub repository: https://github.com/charan2r/earthly.git
Earthly has a Next.js frontend and a NestJS backend, with MongoDB Atlas storing device profiles, quests, progress, and observations.
How I Built It
Earthly’s core planner is Gemma 4, Google’s open-weight model. The current integration uses gemma-4-26b-a4b-it through the Gemini API.
Gemma generates structured JSON containing a quest title, description, timed steps, and nine nature bingo items. The backend validates that response with Zod, checks that the step durations match the requested time, and applies a conservative filter for risky activity suggestions. Invalid output receives one validation retry.
Gemma also powers text and photo observations. Its instructions emphasize uncertainty, observation from a distance, and avoiding claims about edibility or safe handling.
The supporting stack includes:
- Next.js, React, TypeScript, and Tailwind CSS for the interface.
- NestJS for request validation, session ownership, and provider integrations.
- MongoDB Atlas and Mongoose for persistence.
- SerpApi for nearby public-place discovery.
- ElevenLabs for optional spoken instructions.
- Browser storage and a service worker for saved progress and offline access to the app shell.
Place suggestions are starting points, not verified routes. Users still need to check local access, daylight, weather, and their surroundings.
Why Does Open Innovation Matter?
For Earthly, open innovation means having a path to control how the planner runs and evolves.
Gemma’s available weights make self-hosting, experimentation, and future fine-tuning possible. I can explore adapting the model to produce shorter instructions, more consistent plans, or experiences suited to particular communities.
The backend also separates the planning interface from the provider implementation. It supports Google-hosted inference and an OpenAI-compatible endpoint, giving the project room to experiment with other hosting environments.
A closed API could generate similar plans, but it would not give me access to its underlying model weights for those experiments.
My Agent Session
I used Codex as a development partner to examine the codebase, simplify guest access, and update the app’s branding to Earthly.
Prize Categories
- Best Use of Gemma: personalized quest generation and nature-observation insights.
- Best Use of MongoDB Atlas: persistent storage for quests, progress, device profiles, and observations.
- Best Use of ElevenLabs: optional spoken instructions during an adventure.
- Best Use of SerpApi: nearby public-place discovery to help users choose a starting point.
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.