Skip to content
PummelchenPublic

About

Browser-based room planner: centimetre-accurate 2D plans and a WebGPU 3D walkthrough, backed by a Python/SQLite save-and-live-collaboration API. No bundler, no build step.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

RoomCAD

Stars Views (14d) Last Commit Contact

RoomCAD is a kid-friendly room planner that runs entirely in the browser. Draw walls on a centimetre-accurate 2D plan, drop in doors, windows, furniture and ceiling lights, then walk through the result in real-time 3D — with physics and real daylight.

No installation, no build step. It is a quick planning tool — not a structural, architectural or building-code tool.

What it can do

  • Draw walls on a 1 / 2 / 5 cm grid (90° only). Ends lock onto any wall they meet, so rooms close cleanly instead of overshooting or stopping short, walls can only start on the building, and any stretch where two walls double up is marked yellow.
  • Even out rooms you eyeballed — drag a box over a row with the Rooms tool and RoomCAD slides only the walls between them until they match, leaving the outside of the row where it is.
  • Read every size at a glance — walls, doors and windows carry permanent CAD-style dimension lines, every enclosed room shows its m² in the emptiest part of its floor, and there is a measure tool for anything else.
  • Grab the red handles on a selected wall, door, window or public area to drag either end and resize it in place.
  • Place doors and windows in walls and slide them with exact spacing to the wall ends and neighbours. Doors open, close and swing to either side.
  • Label the plan — drop text anywhere; it turns with the plan and stays the right way up.
  • Mark shared (public) floor space, with live side lengths while you drag it out. Areas snap to the grid and sit flush against each other without ever overlapping, while staying separate objects you can select, resize and delete one by one.
  • Furnish with ten pieces — bed, table, chair, wardrobe, desk, sofa, bookshelf, nightstand, dresser, armchair — plus two ceiling lights (60 W bulb, 200 W office panel). Drag a piece anywhere, including through a wall; it turns red where it does not fit and clears itself once it does. Place as many lights as you like: the 3D view lights the ones nearest you (16 at a time, because each casts a real shadow) and says so when a room goes over.
  • Auto-lay-out a floor: choose how many rooms and the target m² each, and RoomCAD searches hundreds of arrangements for the one that lands closest, carving the corridors the rooms need to be reachable. Floor the rooms don't need becomes walk path rather than oversized rooms. Redesign picks a different near-optimal plan; floor you marked public is never built over.
  • Walk the room in 3D — real physics (jump onto furniture, double-jump, crouch), soft shadows, and a day/night sky you set with a 24 h time-of-day control driven by a real Singapore sun position, under a drifting cloud deck.
  • See it in a city — the room stands in a stylised neighbourhood of streets, blocks, traffic and trees, so you can judge the space against something real. Windows and street lamps come on after dark.
  • Build solid rooms — walls render as sealed solids that bite into the floor, the ceiling and each other. Only doors and windows let light through.
  • Export as a RoomCAD .rcad file, or as an SVG measured drawing at a real architectural scale for printing or another program.
  • Save rooms to the server (SQLite, versioned). The Room Name is the file name: saving under a new name starts a new design at v0 and leaves the old one untouched, saving under the same name adds a version. My Rooms lists the most recently saved first. New sessions open the latest saved design; returning browsers resume their exact last version.
  • Edit together live — when another member is present, Join Live pulses green; Live Active syncs edits both ways, and Leave Live Mode saves once for everyone before detaching.
  • One shared password, checked server-side.

Quick start

Use it here: https://roomcad.91.99.176.243.nip.io/ — enter the shared password and you are in. Nothing to install, nothing to build.

To run it locally instead, start the backend, then the static server:

ROOMCAD_DB_PATH=/tmp/roomcad.db ROOMCAD_PASSWORD=ternak \
  python3 roomcad/server/server.py &   # API on 127.0.0.1:8078
cd roomcad/web && ./serve.sh           # app on http://localhost:8080

Essential controls

Action Key
Select / Wall / Door / Window V / W / D / G
Erase / Measure / Furniture E / M / F
Label / Rooms T / Y
Turn furniture or label / delete R / ⌫
Rotate a piece you are still carrying B or R
Nudge selection arrow keys
2D plan / 3D walk ⌘1 / ⌘2
Turn the plan ⌘[ / ⌘]
Undo / Redo ⌘Z / ⇧⌘Z, or ⌘Y
Save / Open ⌘S / ⌘O
Show–hide the left / right panel ⌘\ / ⇧⌘\
Walk / look WASD / mouse
Jump (×2) / crouch Space / C
Lights on–off (3D) L
Swing a door the other way (3D) right-click it
Paintball (3D) P

Drag either divider beside the plan to resize the tool panel or the inspector; RoomCAD remembers the widths for your next visit. The shared password identifies a RoomCAD project — a first-time browser opens its latest saved version, and after that its own saved or opened design is remembered server-side. Unsaved edits still need Save.

Development

The 3D view uses Three.js WebGPU (REVISION = "186dev") and Rapier (WASM), both vendored under roomcad/web/lib/. There is no build step — the app is plain ES modules loaded through an import map.

./tests/run.sh          # the whole suite — geometry, layout, UI and API contracts
./tests/run.sh --fast   # skip the four long fuzz files while iterating

The same suite runs in CI on every push and pull request. The visible release is defined once in roomcad/web/version.js — increment it for every deployed user-facing fix. Deploy with roomcad/server/deploy.sh; it never rewrites the contents of the live database or the password file.

Documentation

Guides live in the wiki: Getting Started · 2D Editor · 3D Walkthrough · Live Collaboration · Server API and Storage · File Format · Hosting and Deployment · Architecture · Troubleshooting · Project Tracker

License

MIT — see LICENSE.

Contact

Questions, bug reports and suggestions are always welcome. You can contact André Borchert by email at [email protected].

About

Browser-based room planner: centimetre-accurate 2D plans and a WebGPU 3D walkthrough, backed by a Python/SQLite save-and-live-collaboration API. No bundler, no build step.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages