Plan a room on your Windows PC before you move a single piece of real furniture. Draw the room to its true size, mark the doors, windows, sockets and pipes, drag furniture around in 2D, check it in 3D, then print the plan and the item list. Fully offline. No prices, anywhere — by design.
Think of RoomForge as graph paper that knows how big your sofa is. You tell it how big your room is, draw in the bits that can't move — doors, windows, radiators, plug sockets — then drag pictures of furniture around until everything fits nicely. You can peek at the room in 3D, like looking into a doll's house, and print the finished plan to take shopping or hand to a helper. It never needs the internet, and it never shows prices, because it's for planning where things go, not for buying them.
- Key features
- Screenshots
- System requirements
- Installation
- How to use RoomForge
- Settings, shortcuts and file formats
- Building from source
- Project structure
- Tests
- Troubleshooting
- Privacy and your data
- Limitations and known issues
- Roadmap
- Contributing
- License and credits
- Set the room's real width, depth and ceiling height, plus its wall thickness (drawn to scale on the plan; room sizes stay clear internal dimensions).
- Not just rectangles: cut a notch out of any corner to make an L-shaped room (or a U/C shape with more notches) — floor area, materials, furniture placement and the walls in 2D, 3D and exports all follow the real outline. Restore the plain rectangle whenever you like.
- Dimension lines with real measurements sit on the plan while you work.
- Type sizes in metric or imperial —
5 m,500 cm,2500 mm,10' 6",126"all work — and flip the whole app between the two with the Units toggle.
- Doors (with swing direction) and windows (with sill height), placed on any wall.
- Seven kinds of wall service points, each with its own plan symbol: electrical socket, pipe/water, radiator, light switch, TV point, network point, thermostat.
- Warnings that catch real mistakes: furniture overlapping other furniture, furniture covering a radiator or pipe, and furniture standing in a door's swing path.
- A built-in catalog of 49 generic pieces in 8 groups (Seating, Tables, Beds, Storage, Kitchen, Bathroom, Lighting & decor, Other), each with real-world dimensions. The catalog shows each piece as a little top-down drawing of itself. Search it, then click a piece and click in the room to place it — or drag the piece straight in. Hold Shift to place several.
- Build your own pieces: the catalog panel's "Your items" section lets you define furniture with your own name and exact size — an aquarium stand, a dog crate, that odd-shaped desk — and place it like any catalog piece. Your definitions are saved inside the plan file.
- Templates: the New menu offers furnished Living room, Bedroom and Home office starting points, plus an empty room.
- Drag to move, rotate in 15° steps (R) or 90° steps (Shift+R), resize, recolour, duplicate and delete. Optional 5 cm snapping while dragging — plus magnetic alignment: pieces snap to each other's edges and centres and to the room's centre lines, with red guide lines and a live readout of the gap to each wall while you drag.
- Undo and redo (100 steps) for everything, and an autosave every few seconds — if the program closes unexpectedly, your last session is recovered on the next start.
- Load a scanned or photographed floor plan (PNG, JPEG or BMP, up to 12 MB) and it appears under your drawing, fitted to the room.
- Calibrate it to true scale: click two points whose real distance you know (a doorway works well), type the distance, and the image rescales to match. Adjust its opacity while you trace.
- The image is stored inside the plan file, so a plan you share keeps its underlay.
- Import your own 3D models: bring a
.glbor.objfile of a real piece of furniture and place it like any catalog item — it renders with its real shape in the 3D view, the walkthrough and snapshots (the 2D plan shows its footprint). Models travel inside the plan file. - Doors and drawers that open: wardrobes, cabinets, chests, the oven and more have real front panels — an “Open doors & drawers” toggle in the 3D views swings and slides them open. Beside it, an Exploded view slider pulls the furniture apart from the room's centre, and the Style row gains an Outline look (pale paper, dark edges) beside Coloured and Clay.
- Saved views and presentation styles: store a whole 3D setup — camera, lighting, a coloured-or-clay render style and a Full/Half/Low wall cut — under a name in the plan, and jump back to it in one click. Clay flattens everything to warm grey for judging shapes; a low wall cut gives the dollhouse view of a layout.
- Design your own furniture: the 🪑 Designer builds a closet, double closet, chest of drawers, side table or bookcase from real panels — set the overall size, drawers, shelves and finish, and watch the parts update live: doors swing, drawers slide, the piece explodes into its panels. Add it to a room and it renders as its parts in every view; its cut list (panel sizes and quantities — never prices) is in the Designer, as a CSV export, and on the print sheet.
- Multi-room plans: a plan can hold a whole home. The Rooms strip switches between rooms; each keeps its own size, flooring, walls and furniture, doors can be labelled with the room they lead to, and the item list and print sheet cover every room with whole-home totals.
- One click switches to a 3D doll's-house view of the same room: drag to orbit, with sliders for turn and tilt. Skirting boards and soft shadows under the furniture make it read as a real room, and New → Template gallery offers the starter rooms as picture cards.
- The Item list view shows everything placed, grouped and counted, with sizes — and the doors/windows/services schedule and any warnings.
- A materials list with quantities only: floor and ceiling area, wall area before and after subtracting doors and windows, skirting length and perimeter — enough to buy paint and flooring by. (Quantities, never costs: see the no-prices rule below.)
- Pin text notes to the plan (numbered markers); they appear in the list view and in exports.
- Exports: a to-scale plan (SVG), true-scale print plans at 1:50 and 1:100 (print at 100% and they measure exactly), the item list (CSV), and a printable plan + list sheet (HTML — open in a browser, print or save as PDF).
All screenshots are real runs of RoomForge v0.6.0 on Windows — never placeholders or stock images. The capture list is in docs/screenshots/CAPTURE.md.
The 2D plan — walnut plank flooring, furniture placed, the room panel showing shape, flooring and paint controls:
The 3D view of the same room:
The item list — everything placed, the doors/windows/services schedule, and the quantities-only materials list:
A PNG snapshot — this picture was rendered by RoomForge itself (3D view → "Save PNG snapshot"), not captured from the screen:
| Operating system | Windows 10 or Windows 11 (64-bit) — the program is designed and CI-tested for Windows; it also compiles on Linux for development |
| Display | 1280 × 820 window by default (minimum 900 × 600); the 3D view uses OpenGL through your normal graphics driver |
| Disk | A few MB for the program; plan files are small (larger if you embed a tracing image) |
| Internet | Not required — not for installing from source, designing, saving, rendering or reopening projects |
| To build | Rust 1.80 or newer (see Building from source) |
Anything more specific (minimum RAM, GPU models) is to be confirmed — it hasn't been benchmarked yet, and the app is deliberately lightweight.
Easiest — download the release. On the Releases page, download RoomForge-v1.5.0-windows-x64.zip (or the standalone roomforge.exe), unzip it anywhere, and run roomforge.exe. No administrator rights, no installer. The executable is not code-signed yet, so Windows SmartScreen may warn on first run — choose More info → Run anyway. SHA256SUMS.txt on the release page lets you verify the download.
Or build from source (a couple of minutes):
- Install Rust from rustup.rs if you don't have it.
- Download or clone this repository.
- In the repository folder, run:
cargo run --releaseThe built program is at target\release\roomforge.exe. Either way, you can open a plan directly:
roomforge path\to\my-room.roomforge- Start. RoomForge opens with a starter living room so you can experiment, or click New for an empty room. If a previous session ended unexpectedly, the autosave is recovered automatically and the status bar tells you.
- Size the room. In the right-hand Room panel, type the real width, depth, ceiling height and wall thickness (either unit system), and pick wall/floor colours. Choose a flooring material — oak or walnut planks, tiles, carpet, polished concrete — and its pattern appears in every view and export. Paint swatches give one-click wall colours.
- Add doors, windows and services. Still in the right panel: choose a wall, then add doors and windows; use the + buttons for sockets, pipes, radiators, switches, TV/network points and thermostats. Click any of them on the plan to adjust its position and size, or delete it.
- (Optional) Trace a plan. Room panel → Load plan image…, then Calibrate scale and click two points a known distance apart. Trace walls by sizing the room and placing fittings over the image.
- Furnish. In the left catalog, search or browse, click a piece then click in the room to drop it — or drag pieces straight in from the list. Drag placed pieces to move them (they align magnetically, with guide lines and live wall gaps); use the right panel to fine-tune size, position, rotation and colour. Watch the bottom bar — it calls out overlaps and blocked doors as you work.
- Annotate. 📝 Add note, click in the room, and type. Click a note's marker to edit or delete it.
- Check it in 3D. Press 2 (or click 3D view), drag to orbit. Try the Lighting buttons — Day, Evening and Night change the mood of the room (and of snapshots). Then Walk through the room steps inside it: W A S D (or the arrow keys) move you, Q/E or dragging turns your head, Shift hurries, Esc steps back out — with proper collisions, so you get a real feel for the space between the furniture. Save PNG snapshot renders the 3D view to a picture file you can send to anyone — no screenshot needed, and the walk has its own Save PNG of this view for a picture from where you're standing. Press 3 for the item list.
- Save and share. Ctrl+S saves a
.roomforgefile — send that file to anyone; it opens in their copy, tracing image included. - Print and export. Use the Export row: Plan (SVG) for a to-scale drawing, Plan 1:50 / 1:100 for exact-scale printing, Item list (CSV) for a spreadsheet, Print sheet (HTML) for a tidy printable page.
In-app settings (top bar and Room panel): Units (Metric/Imperial), Snap 5 cm on/off, tracing-image opacity, wall/floor colours, and text size (A− / A+ at the right of the Export row — everything in the window scales, for tired eyes or small screens). RoomForge has no settings file and no accounts — everything else lives inside each plan file.
Help, built in. Press F1 or click Help (right of the Export row) for a plain-language guide: the four steps to your first room, what the jargon words mean, every shortcut, and the things worth knowing (offline, autosave, no prices by design). Selecting a piece of furniture also shows the space around it — the gap to each wall — in the right-hand panel.
Keyboard shortcuts
| Keys | Action |
|---|---|
F1 |
Open the built-in Help guide |
1 / 2 / 3 |
2D plan / 3D view / Item list |
| Arrow keys | Nudge the selected item (5 cm; Shift = 25 cm) |
R / Shift+R |
Rotate the selected item by 15° / 90° |
Delete / Backspace |
Delete the selected item or note |
Escape |
Cancel placing / calibration, clear selection |
Ctrl+Z / Ctrl+Y |
Undo / Redo |
Ctrl+S |
Save |
Shift while placing |
Keep placing more of the same piece or note |
File formats
| Format | What it is |
|---|---|
.roomforge |
A plan file: versioned, human-readable JSON (format version 2; version 1 files still open). Written safely — a temporary file is swapped into place, so an interrupted save shouldn't corrupt an existing plan. Files from a newer RoomForge version are refused with a clear message rather than misread. |
.svg (export) |
To-scale plan drawing; the 1:50 and 1:100 variants carry physical sizes for exact printing. |
.csv (export) |
The grouped item list: item, category, size, quantity. |
.html (export) |
Self-contained printable sheet: plan, item list, fittings schedule and notes. |
| PNG / JPEG / BMP (import) | Tracing underlay images, embedded into the plan file (base64). |
Prerequisites: a stable Rust toolchain, version 1.80 or newer (the project's rust-version), and — on Windows — the usual MSVC build tools that rustup offers to install.
cargo build --release # build → target\release\roomforge.exe
cargo run --release # build and run
cargo test --locked # run the test suite
cargo clippy --all-targets --locked -- -D warnings # lint gate (must be clean)
cargo fmt --all --check # formatting gateContinuous integration (GitHub Actions, Windows runner) runs the format check, clippy, the full test suite and a release build on every push.
| Path | What lives there |
|---|---|
src/main.rs |
Program entry point: window setup, renderer choice, crash logging, opening a plan passed on the command line |
src/app.rs |
The desktop GUI (2D plan, 3D view, item list, panels) — renders state and collects input only |
src/model.rs |
The plan data model: room, openings, services, furniture, notes, tracing underlay, warnings |
src/catalog.rs |
The built-in furniture catalog (original, generic items) |
src/geometry.rs |
2D geometry: overlap tests (including door-swing areas), snapping |
src/view3d.rs |
The 3D projection maths behind the 3D view |
src/render.rs |
The offline software renderer behind PNG snapshots of the 3D view |
src/export.rs |
SVG plan (incl. true-scale variants), CSV list, printable HTML |
src/units.rs |
Metric/imperial formatting and parsing of typed lengths |
src/io.rs |
Saving/loading plans, atomic writes, the autosave location |
docs/PRODUCT_AND_ENGINEERING_PLAN.md |
The full product and engineering plan, with the resource research behind it |
docs/FEATURE_ADOPTION.md |
Which features from existing tools were adopted, scheduled, or deliberately not adopted — and why |
docs/screenshots/CAPTURE.md |
The screenshot capture list |
DECISIONS.md |
Recorded design/scope decisions and their reasoning |
CHANGELOG.md |
What changed in each version |
71 automated tests cover the library: the data model and file-format round-trips (including files saved by older versions), geometry and door-swing warnings, room outlines and notch cutting, the catalog, unit parsing/formatting, exports, underlay calibration maths, custom-item definitions, the materials quantities, flooring patterns, and the PNG snapshot renderer. Run them with:
cargo test --lockedThe GUI itself is verified by running it — see the screenshot list for the on-machine checks that accompany a release.
| Problem | What to do |
|---|---|
| The program closed and I hadn't saved | Reopen RoomForge — it autosaves every few seconds while you work and recovers the last session automatically (the status bar says so when it does). The autosave lives at %LOCALAPPDATA%\RoomForge\autosave.roomforge. |
| "This plan was saved by a newer version of RoomForge" | The file's format is newer than your copy understands. Update RoomForge; the file itself is untouched. |
| My tracing image won't load | It must be PNG, JPEG or BMP, and 12 MB or smaller. The status bar explains which limit was hit. |
| The tracing image is the wrong size | Use Calibrate scale in the Room panel: click two points a known distance apart (a doorway is ideal) and type the real distance. |
| The plan prints at the wrong size | Use the Plan 1:50 or Plan 1:100 export and print at exactly 100% (no "fit to page"). |
| Something crashed | Check %LOCALAPPDATA%\RoomForge\roomforge.log — errors are recorded there, and including it in a bug report helps a lot. |
RoomForge works fully offline: no accounts, no sign-in, no telemetry, no analytics, and no network calls in the core program — designing, saving, rendering and reopening projects never need the internet. Your plans are files on your own computer, stored where you save them. The only things RoomForge writes on its own are in %LOCALAPPDATA%\RoomForge\: the autosave (autosave.roomforge) and the error log (roomforge.log).
There are no prices anywhere in RoomForge — no item prices, no totals, and none in exports. That's a deliberate design decision: RoomForge plans layouts; it isn't a shop.
- One room per plan, rectilinear shapes only. Corner notches give L/U/C shapes, but angled walls, free-form wall drawing, openings on notch edges, and multi-room/multi-floor plans are not built yet (multi-room is designed in the plan document).
- Exports are metric, even when the app is displaying imperial (the app itself is fully dual-unit).
- No multi-page print tiling yet — a big room at 1:50 may need a large sheet or a print shop; 1:100 fits most rooms on A4/Letter.
- No installer wizard and no code signing yet — the release is a portable zip/exe, and SmartScreen will warn on first run until signing is arranged.
- The tracing underlay is aligned, not rotated: it assumes your scan/photo is roughly square to the room; calibration fixes scale, not skew.
- Furniture is drawn as simple coloured shapes/boxes — this is a planning tool, not a photorealistic renderer (offline rendered views are on the roadmap).
- Lighting scenes are moods, not real lighting: Day/Evening/Night change the whole scene's brightness, tint and window colour at once; there are no individual lamps, shadows or light switches yet.
Documented in docs/FEATURE_ADOPTION.md and docs/PRODUCT_AND_ENGINEERING_PLAN.md. Already delivered from that list: L-shaped rooms (corner notches, format v2), the custom-object builder, the quantities-only materials list, procedural flooring materials, and offline PNG snapshots of the 3D view. Already delivered from that list also includes lighting scenes (Day / Evening / Night) for the 3D view and snapshots, and a first-person walkthrough. Already delivered also includes multi-room plans (a plan can hold a whole home, with per-room design and whole-home lists). Already delivered also includes GLB/OBJ model import. Next up: user image textures, then tiled print pages. Printed page tiling is scheduled with the print work. Features deliberately not planned: prices or cost estimators, product configurators, photo/LiDAR room scanning, and anything that needs an account or the cloud.
Bug reports and suggestions are welcome as GitHub issues — the error log at %LOCALAPPDATA%\RoomForge\roomforge.log is gold for bug reports. Pull requests are welcome too; please run the format check, clippy and the test suite (commands above) before submitting, and keep the house rules in AGENTS.md — in particular: no prices, ever, and screenshots only from real runs.
RoomForge is open source under the MIT License — see LICENSE. Created by Sean Shaffer. Built with Rust and the egui immediate-mode GUI library (MIT/Apache-2.0); the furniture catalog is original and generic — no manufacturer's products, names or models are included.




