explaingit

robin7331/zen-robot-garden

14TypeScriptAudience · developerComplexity · 3/5ActiveSetup · easy

TLDR

A browser-based 3D scene built with three.js where a lawn-mowing robot drives around a small garden forever, with physics, growing grass, and no scoring.

Mindmap

mindmap
  root((zen-robot-garden))
    Inputs
      Mouse and touch
      Tap to drop twigs
      Drag robot
    Outputs
      3D garden scene
      Cut grass tracks
      Robot path
    Use Cases
      Watch an ambient mowing scene
      Learn three.js with physics
      Demo Rapier collisions
    Tech Stack
      three.js
      Rapier
      Vite
      TypeScript

Things people build with this

USE CASE 1

Watch an ambient 3D mowing scene in the browser

USE CASE 2

Study a small three.js plus Rapier physics integration

USE CASE 3

Use as a template for a calm idle web toy

Tech stack

three.jsRapierViteTypeScript

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

Zen Robot Garden is a small 3D scene that runs in the browser, written in German on its README and playable directly from the project's GitHub Pages link. The page shows a tiny garden, like a diorama, with a lawn mowing robot that drives around on its own forever. There are no points and no way to win or lose. You just watch it. The author calls it calm and zen. What you see in the scene is a mower that moves on real wheel physics, bounces off the boundary wire and any obstacles in its path, and follows a guide wire back to its charging station when the battery runs low. The ground is a wavy 3D terrain with hills and dips. The grass is rendered in 3D and the mower actually cuts it, pressing it flat as it passes, and the cut track stays visible while the grass slowly grows back. A few daisies also grow and bloom in the garden. You can interact with the scene in a few small ways. The camera rotates and zooms with the mouse or touch. Clicking or tapping the robot lets you pick it up and drag it somewhere else, which is also how you rescue it if it stops outside the boundary wire. A short tap on the lawn drops a small twig, and the robot will steer around it. On the technical side, the project uses three.js for the 3D scene, the Rapier physics engine for driving, collisions, and gravity, Vite as the build tool, and TypeScript as the language. The README points to a CLAUDE.md file for the project description and a DESIGN.md file for design tokens. To run it locally you clone the repo and use npm install, then npm run dev for a live reloading development server, npm run build for a production build, and npm run preview to view the built output. Publishing goes through GitHub Pages: the build writes into the docs folder, which is committed to the repo, and Pages serves that folder directly from the main branch.

Copy-paste prompts

Prompt 1
Clone the repo, run npm install and npm run dev, then open the local URL to see the robot mowing
Prompt 2
Edit the boundary wire so the garden becomes a long rectangle instead of the default shape
Prompt 3
Change the daisy growth rate so flowers bloom faster after the mower passes
Prompt 4
Add a second robot that follows its own guide wire and avoids the first one
Prompt 5
Build to the docs folder and confirm GitHub Pages serves the production version from the main branch
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.