Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions docs/social/ride-the-open-source-city-facebook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Facebook post — "Ride an open-source city"

Companion social copy for the blog post `public/blog/ride-the-open-source-city.md`.
Not published by the site (lives outside `public/blog/` so the blog generator never ingests it).
Paste the plain text below into Facebook.

**Which link previews:** Facebook renders the Open Graph (OG) card for the **first** URL in the
post. Keep the blog-post URL first so the "Ride an open-source city" card shows; the Play link is
second as a direct call to action.

---

## Primary post

🚲 You can now ride a bike through Chattanooga — in a browser tab.

I turned the 3D city twin I've been building into something you can actually move through. Roughly 8,000 buildings at real rooftop heights, first person, hop on a bicycle (press B), no install. Fair warning: it's an early beta and genuinely rough — right now you might even spawn under the city and fall through the sky. Catching stuff like that is the whole point, so come break it and tell me the one thing that felt wrong.

The whole thing runs on an open-source Three.js game engine (MIT licensed) — clone it, fork it, keep it. And you don't need money to get involved: playtest it, fork it, file a bug. Learning is free, contribution is the currency, and I build this stuff live on Twitch.

Full story, plus how the free repo ramps up to real help:
https://scripthammer.com/blog/ride-the-open-source-city

Or just ride it now:
https://scripthammer.com/chatt/?diorama&walk

#opensource #threejs #gamedev #Chattanooga #webdev #reactjs

---

## Short variant

🚲 Ride an open-source city. I made the 3D Chattanooga twin walkable — first person, hop on a bike, all in a browser tab. Beta, rough, and looking for players. Free and MIT.

Story: https://scripthammer.com/blog/ride-the-open-source-city
Play: https://scripthammer.com/chatt/?diorama&walk
2 changes: 2 additions & 0 deletions public/blog/playable-city-chattanooga.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ twitterCard: summary_large_image

A while back I built a 3D digital twin of Chattanooga. It's about eight thousand buildings at real rooftop heights, floating over the actual street grid and terrain, running in a browser tab. You can [walk the atlas yourself](https://scripthammer.com/chatt/); it's the honest version of the city, drawn from open data with no server behind it.

> 🚲 **Update (August 2026):** the twin isn't read-only anymore. You can now [walk and ride a bike through it](https://scripthammer.com/blog/ride-the-open-source-city) in first person. This post is the brainstorm that came first; that one is where it actually started moving.

Then I made the mistake of leaving it open on a second monitor for a week. And a question started nagging at me that I can't shake:

**What if the map weren't just something you _look at_, but something you _play_?**
Expand Down
Binary file added public/chatt-diorama-og.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/app/chatt/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const metadata: Metadata = {
description:
'8,000 buildings at real lidar heights over live OpenStreetMap and USGS 3DEP terrain, in your browser. Open source — join in at Chattanooga.Digital.',
path: '/chatt/',
image: '/chatt-atlas-og.jpg',
image: '/chatt-diorama-og.jpg',
}),
// The helper derives BOTH canonical and og:url from `path` (metadata.tsx:40).
// og:url should be what people share (/chatt/), but canonical must stay the
Expand Down
4 changes: 2 additions & 2 deletions src/lib/blog/blog-data.json

Large diffs are not rendered by default.

Loading