Green Ridge

Green Ridge is a camping guide for Green Ridge State Forest in western Maryland. The forest has 100 primitive campsites spread over 47,000 acres, all first come, first served, and most of them out of cell range. The app works offline and it’s free. It runs in any browser, and there’s an iOS build in TestFlight.

Availability · 4 days agolive from the product, as you read this

Open the app ↗ Read how it was built

What it does

You can look at every site on a 3D model of the forest, see a 360 view of a site for the date you’re going, check how much sun and shade it gets and what the road in is like, and keep a shortlist that’s still on your phone after the signal drops. There’s a field guide to what’s around in a given month, the hours of real darkness tonight, and DNR’s current closures, burn bans and hunting seasons, each with the time it was last checked.

Nobody can reserve these sites. The only record of who’s camping where is a paper sign-up sheet at forest headquarters. When a camper photographs that sheet in the app, it reads the sheet and shows everyone else which sites are probably taken, along with how old the photo is.

Most of what the app knows about the campsites isn’t online anywhere else. Which sites are taken this weekend, exactly where each pitch is, what it looks like from the ground: campers supply it, one photo at a time, and every photo makes the record better for the next person.

The app in a browser: the forest in 3D, sites narrowed by what matters, one campsite with the sources behind its facts, and the guide.
Site 10 in autumn, from dawn to night. The app builds this view from terrain and tree data and labels it a reconstruction.
Filtering sites by what you care about and saving a shortlist.
The field guide, showing what’s likely around in October.

How the forest is rendered

The map the app opens on is a 3D model of the forest at true scale, built from the USGS 3DEP elevation model. Roads and water come from OpenStreetMap, tree cover sits on the terrain, and every campsite is placed on the ground it actually occupies. The sun and moon are where they really are for the date and time, and the colours change with the season. The whole forest is one tile about 21 km across that fits in a few megabytes, which is why it loads on a phone and still works offline. A flat map is one tap away.

Putting the sites in the right place took more work than drawing them. At one point nine sites sat about sixteen kilometres from where they really are. Maryland DNR’s GIS data is now the base, and where a published position turns out to be wrong, Chris’s own geotagged photos from the site take priority, then OpenStreetMap, then DNR’s visitor map. Each site records which source its position came from.

Each site page opens on a 360 view computed from the campsite. These come from a separate, photorealistic model of the forest built in the Godot game engine, using the same USGS terrain, 2012 county lidar for tree height, OpenStreetMap roads and water, and the Yale Bright Star Catalogue. Trees are grown procedurally down to individual leaves, with simpler stand-ins in the distance. The oaks were slimmed to match US Forest Service inventory data for Allegany County, and the winter colours were matched to photos Chris took in the forest.

Every view is rendered for five seasons (spring, summer, autumn, bare winter and snow) at about 27 moments through the day. Each moment is six cube faces stitched into one panorama, then cut to 512, 2048 and 4096 pixels for the web, and a visit downloads about 3.8 MB. At night the app draws the stars and moon live over the part of the sky the terrain leaves open. The views are labelled as reconstructions: they show where the sun comes up and where the shade falls, not what the fire ring looks like.

Photographs of the campsites make the renders more accurate over time. Any photo submitted for a site that carries location data, whether Chris took it or a camper did, is checked against the site’s pin, along with the direction it faced when the photo records one. When the photos put the pitch somewhere else, Chris approves the correction, the site goes into a render queue on its own, and it is rendered again in all five seasons. The corrected pin and the new 360 go live together.

The terrain also decides the night sky. The app knows the skyline from each site, so it can say how much sky is open above your pitch, and it works out when it’s actually dark: the sun at least 18 degrees below the horizon and the moon down.

How it’s built

Green Ridge is a React and TypeScript web app that installs from the browser and keeps working offline. If you photograph the sheet with no signal, the upload waits and sends when you’re back in range. The same code is wrapped for iOS and goes out to testers through Xcode Cloud and TestFlight.

A vision model reads the sign-up sheet photos, the server checks what it read, and anything it isn’t sure of goes to a person before it’s published. Facts about the forest only go into the app when a primary source backs them up, usually DNR or the forms at headquarters. The app, the website and the design kit share one set of components.

The full write-up goes through the research, the design decisions and how the sheet reader was tested.

Who runs it

Chris Mullins designed and built Green Ridge, and runs it through his studio, Feedback Loupe LLC. He camps at Green Ridge, and the project started after he drove out and found the site he wanted already taken. More about Chris.

Plenty of public land works the way Green Ridge does, with first-come camping, records on paper and no signal. Chris is talking with people who manage that kind of camping about whether the app could help them too. If that’s your job, he’d like to hear from you.

Green Ridge is independent. It isn’t affiliated with Maryland DNR or any government agency, and you can’t book or pay for anything in it. For rules and closures, check with Maryland DNR.

Get in touch

Questions about the app, something in it that’s wrong, or camping you manage somewhere else. Chris reads every message himself.

For campers, the app is at greenridge.app.