Inspiration
You ever been to a park board meeting? Yeah me neither.
This let's green space planners get precise feedback and metrics to figure out what residents want instead of whoever shows up at 3pm on a Tuesday.
Don't want to make a design? that's fair, cast vote for your favourite design that other passionate people have created.
What it does
- Design a real park in 3D. The demo is Jonathan Rogers Park in Mount Pleasant, built from real 1 m lidar elevation, the city's tree inventory, the community garden, and the streets, sidewalks and bus stops around it.
- Place stuff: benches, native trees (bigleaf maple, Garry oak, western red cedar), playgrounds, ponds, paths and gardens. You can also terraform the ground.
- Need help? Just describe it. Type "shady play area, loop path, dog run" and Gemini turns it into a layout.
- Live budget and rules. Cost, tree canopy, hard surface, earthworks and path slopes (for accessibility) update as you build.
- Vote and review. Upvote or downvote designs with reasons, leave comments on a single bench ("move this"), or walk through the park at eye height.
- Planners get the good stuff: heatmaps of where people put things, vote reasons, an AI summary of the main themes, and exports to CSV, GeoJSON and DXF.
How we built it
How we built it
- React and three.js (React Three Fiber) for the 3D editor, with the BC Design System for the UI.
- A TypeScript API on Hono, with Postgres through Drizzle. Locally that's pglite.
- Terrain from NRCan HRDEM. We search their catalogue and read only the bytes we need fromGeoTIFFs, then project everything into a local metre grid.
- Site data from Vancouver Open Data, bus stops from TransLink GTFS, and some outlines from OpenStreetMap.
- Gemini for "Describe it" and the planner summary.
- A layout solver that picks spots for each item based on how steep the ground is, routes paths with A*, and scatters trees.
- 3D models are CC0 from Kenney and Quaternius
Challenges we ran into
- UI/UX pain
- Map projections. Lining up lidar, city data and OSM in one coordinate system took way longer than it should have.
- Getting Gemini's structured JSON output to cooperate, and handling rate limits.
- 3D performance on phones.
- 3D jank in general.
Accomplishments that we're proud of
- It runs on real terrain and real city data
- It can works completely offline, AI included, thanks to a fairly simple fallback
- 3D stuff is cool
What we learned
- Dealing with lidar/satellite/map data
- 3D Jank
- How much of a city's data is open if you go looking for it
- AI is way more useful when it fills in a structured form than when you let it freestyle
What's next for Project Thing
- Buildings
- Tree/building data outside of Vancouver
- Less 3D jank
Log in or sign up for Devpost to join the conversation.