In the North Georgia mountains and the Smokies, your phone becomes a brick. You park at the trailhead with full bars, and ten minutes up the trail they're gone. That's exactly when you start wondering: Am I still on the trail? How far back is the car? Is there water nearby?
In September 2019, I hiked Panther Creek Falls alone with my two dogs. I misjudged how far it was to the waterfall and didn't pack enough water for all three of us, and I ran out before we even reached the falls. The trail was treacherous, with tree roots the entire way, over 7 miles out and back, and I don't remember having any cell signal. I was lucky to find a Girl Scout camp near the falls. They gave us fresh filtered water and snacks, and they probably saved my life. I rested there and at the falls for a while. Since the trail was an out-and-back, I knew the way back, but not how far I had left. It started raining on the walk out, and I've never been so thankful to see my car parked on the side of the road. I wish I'd had an app that showed me nearby camps and water. I thank God for those Girl Scouts.
So I built Off-Grid Trails, a phone app that does its job with zero signal.
Download a trail pack before you go. One tap on Wi-Fi saves an area's trails, waterfalls, springs, viewpoints, peaks and shelters to your phone. I started with five spots I love: Vogel State Park & Blood Mountain, Amicalola Falls, Laurel Falls, Clingmans Dome, and Alum Cave & Mount LeConte.
"Nearest trail" and "You're on it ā." GPS works without cell service, because your phone talks to satellites, not towers. The app tells you which trail you're on, or how far away the nearest one is and in which direction.
"I parked here." Drop a pin at the trailhead, and an arrow points you back to your car with the distance.
Breadcrumbs. An orange line records the path you actually walked. Retracing it is safer than cutting straight through the woods toward the car.
Ask Gemma, on your phone. A small Gemma model runs entirely on the device. Tap "I think I'm lost" or "Closest water" and you get the facts from your trail pack plus a calm tip from Gemma, or type your own question. No server, no signal, nothing leaves your phone.
Who it's for: anyone who loves trails where the bars disappear, and anyone who's ever wished they'd known exactly how far they had left. I'm excited to go hiking again next year once my ankle heals. I'm looking forward to testing out this app in real time and making necessary tweaks.
A lot of people skip the trails with no service because it feels risky. This app is meant to take a little of that worry away, so you can put the phone in your pocket and actually look around.
The screen is the shortest part of the experience: two minutes on Wi-Fi at home, a tap at the trailhead, and then the phone stays in your pocket unless you need it.
The app is a companion, not a replacement for a paper map, water, and telling someone your plan. It says so right in the app.
Heads-up: it's on Render's free plan, so the first load after it's been idle can take up to a minute. After that, it's saved to your phone.
Taking it outside
I'm recovering from ankle surgery, so a real hike will have to wait until next year. Instead, I tested everything from home in Airplane Mode: I downloaded packs for Vogel, Laurel Falls and Clingmans Dome, used Demo walk to "hike" the Appalachian Trail and Sugarland Mountain Trail, dropped car pins, and asked Gemma for help, all with zero signal. I'm looking forward to going on a hike next year with the app as my guide.
An offline trail finder for when there's no cell service. Built for the North Georgia mountains and the Smokies.
Download a trail pack on Wi-Fi before you go. After that, everything works in airplane mode:
Map of nearby trails (OpenStreetMap data, drawn on the phone, no map tiles needed)
Nearest trail with distance and direction
"I parked here" car pin and a live arrow back to it
Breadcrumbs of the path you walked, so you can retrace your steps
Nearby water, waterfalls, viewpoints, peaks, shelters and trailheads
Ask Gemma: a small Gemma model runs on the phone with WebLLM (WebGPU). It only answers from the facts in your pack and your GPS. The question buttons also work without the model.
This app is a companion, not a replacement for a paper map, water and telling someone your plan.
Frontend: Angular 22 with signals, built phone-first. Angular's service worker caches the whole app, so it opens from the Home Screen in Airplane Mode.
Offline storage: trail packs, the car pin and breadcrumbs live in the phone's IndexedDB.
Map: no map tiles. The trails are drawn as SVG lines straight from the pack data, which keeps packs tiny (a whole park is a few hundred KB) and avoids bulk-downloading anyone's tile server.
Trail data: OpenStreetMap, through the Overpass API. My Node/Express server turns raw OSM data into a small "pack." Public Overpass servers often turn away requests from cloud hosts, so I "bake" the preset packs on my laptop and ship them with the app. Render just serves them.
On-device AI: Gemma 3 1B through WebLLM, running on the iPhone's GPU with WebGPU. It's a one-time ~700 MB download on Wi-Fi, and then it's cached on the phone.
Hosting: one Render web service serves the app and the packs.
I built this with Claude as my pair programmer. It helped me scaffold the app, write the server and debug on-device AI. I made the product calls, picked the trails, and tested everything on my own phone in Airplane Mode.
What I learned about running AI on a phone
Getting Gemma onto an iPhone was the hardest part of this project.
The first attempt crashed Safari. "A problem repeatedly occurred." The phone ran out of memory loading the model, then crashed again every time the app reopened and tried to load it. I added a crash guard: if Gemma takes the page down, the app remembers and never auto-loads it again.
Then it wouldn't start at all, because of a settings conflict in how much text the model can hold at once. Shrinking that window to 1,024 tokens fixed the error and cut memory use.
Then it worked, and it looped. My first offline answer was "The closest water source is a stream" about fifteen times. Small models do that. I cut its answers short and filtered out repeats, and the loop was gone.
Then it got the directions wrong. Next I let Gemma reword the app's answers, with a check: if a distance or direction changed, the app showed its own answer instead. The check caught Gemma on almost every answer. A 1B model is great with words and shaky with numbers.
So I split the job. The app owns the facts: names, distances, directions, word for word. Gemma adds one short, calm tip underneath, like "Stay put and keep your eyes open." Any tip that mentions a number or a direction gets thrown out. Gemma can make the moment feel less scary, but it can't send you the wrong way.
That split is the decision I'm proudest of. When you're lost, a confident wrong answer is worse than no answer.
Why Does Open Innovation Matter?
It runs where the signal doesn't. An open model can live on my phone. A closed API needs a connection, which is exactly what you don't have on a mountain.
Private by default. My location and questions never leave the device.
Free to run. No API bill, no subscription. The trail data is open too, thanks to OpenStreetMap contributors.
Mine to shape. I could shrink the model's memory, rewrite its rules, and add a safety check, because I control the whole stack.
Prize Categories
Gemma: Gemma 3 1B runs on-device in the browser with WebLLM, with zero signal. The app keeps every fact exact, and Gemma adds a calm tip that passes a safety filter.
Render: the Node/Express server and the Angular front end run as one Render web service, which also serves the pre-baked trail packs.
Thanks to the DEV and Hacktoberfest teams, and to OpenStreetMap contributors for the trail data (ODbL). Built from my couch while my ankle heals, for the trails I can't wait to get back to. š„¾