We will be undergoing planned maintenance on Oct 7th 6:00AM UTC / Oct 7th 2:00AM ET

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

Built With

Share this project:

Updates

Submission history