Skip to content
TsakmakTsakmak

Project

Cabinets, a local kitchen planner

Plan a whole kitchen in your browser and compare three layouts side by side.

Where it runs: On my own computer

Platforms
Web (local only)

The problem

Planning a kitchen means trying several layouts of the same room before anyone cuts a board. Most web kitchen planners want an account, keep your design on their servers and tie you to one catalogue. Few warn you when a door will hit a wall as it opens, and none of the 18 planners I compared documents layouts side by side. I have built and installed several kitchens myself, and I wanted a planner that works the way that job does.

What it does

Cabinets is a kitchen planner that runs entirely in the browser on my own computer. It is finished and in use, but it is not hosted anywhere, so there is no public link. You draw the room, place and configure cabinets and appliances, and see the result as a 2D plan and in 3D. You keep up to three alternative layouts of the same room and compare them side by side. When a layout is right, it gives you a parts list, a cut list with a sheet estimate, pictures and a PDF plan at exact scale. There is no server, no account and no upload: nothing leaves your computer.

How it works

  1. Draw the room by clicking or by typing wall lengths and angles, or start from a template (rectangle, galley, L-shape), then add doors, windows, passages and obstacles.

  2. Place cabinets and appliances from the catalogue, then set doors, hinge side, drawers and shelves for each one.

  3. Check the plan and the 3D view, open the fronts and read the warnings.

  4. Add a second and a third layout of the same room and compare them.

  5. Set the construction standard (board thicknesses, gaps, sheet size, edge bands) and export the cut list, parts list, pictures and PDF.

Key features

Plan and 3D together

The 2D plan and the 3D view show the same kitchen and can sit side by side. The catalogue has 32 entries: base, wall and tall cabinets, corner units including a carousel, sink bases, appliance housings, fillers, panels and appliances. Items snap to walls and to each other, and every gap can be typed in millimetres. The worktop is built from the base cabinets, with cutouts for the hob and the sink.

Screenshot to follow
One demo kitchen, plan and 3D side by side

Three layouts, side by side

Each project holds up to three layouts of one room. The Compare view shows them in equal columns, in 2D, 3D or both, with the same camera for all. It can highlight what differs and puts the totals in a table: parts, board area, an estimate of sheets and, if you enter your own prices, the cost of each layout.

Screenshot to follow
Three layouts of one room, compared

Fronts that open, and warnings that notice

Doors and drawers are real fronts with gaps, not boxes. You can open one front, a selection, or all of them, in the plan and in 3D. Twenty-four warnings check collisions, clearances, sinks and hobs, hoods, passages and the worktop, including a door that hits a wall or an open front opposite. Warnings advise; they never stop you.

Screenshot to follow
All fronts open, with a clash warning

Rooms drawn to the millimetre

Walls take exact lengths and free angles. Room rules refuse an edit that would break the room, with a message that says why. Automatic dimensions, manual dimensions and a measure tool help you check the plan against the real room.

Screenshot to follow
Draw the room by clicking or by typing lengths

A cut list a workshop can read

From a construction standard you set for the project (carcass, back and front thickness, gap, drawer box system, sheet size, edge bands), Cabinets lists the parts of every cabinet with sizes, material, grain and edge banding, and labels each cabinet. A summary page adds board area, a lower bound and a guide count of sheets, edge band metres and hardware counts. It counts area only: it is not a cutting plan and not an order. For drilling and sheet nesting of a single cabinet I use Marangos.

Screenshot to follow
Cut list and sheet summary from the same plan
  • Offline, even as one file

    Projects save automatically in your browser, with older versions kept, and you can save them as files. The planner also works as a single HTML file that opens from disk with a double click, with no installation and no server.

Security and privacy

This is a hobby tool, but I built it with the same habits I use in security work.

  • No server, no account, no telemetry. Projects are stored in your own browser and files go only where you save them. Exports are made on your computer.
  • A content security policy tells the browser that the planner may not talk to any other address. The single file version may not open any network connection at all.
  • An automated test opens both versions, uses the editor and fails if a single request leaves the page. So "nothing leaves your computer" is checked on every build, not just promised.
  • Every imported file (a project or a price list) is treated as untrusted. It is checked against a strict format, the room and catalogue rules run on it again, and any bad value rejects the whole file with a message that points to it. Nothing is silently corrected, and a failed import never touches the open project.
  • Files have size limits, also while stored data is unpacked.
  • Spreadsheet exports are guarded against formula injection. Dependencies are pinned and audited each sprint, and code from incompatible sources is never copied in.

Under the hood

The core is pure TypeScript logic with no browser code: room geometry, rules, the catalogue, the cut list and the file format. Storage, exports, the 3D view and the interface sit on top, and lint rules keep the layers apart. The 3D view uses Three.js, the plan is SVG, and PDFs are made in the browser with an embedded font that prints Greek text. The interface uses my own design system, the same as this site.

I built it by directing a team of AI coding agents, with the same discipline I expect from a security project. A lead agent acted as architect and product owner. A delivery lead turned each phase brief into small tasks, each with a goal, the files it may touch, acceptance criteria and the tests that prove it. Eight specialists did the work: a researcher, a designer, three developers (core logic, interface, 3D), a tester, a reviewer and a docs writer. The tester never fixes code and the reviewer never edits it, and nothing was merged until both passed it. Every merge ran the same gate: lint, type check, unit tests, end-to-end tests and both builds. The work ran in phases (research, spec and design, architecture with 14 technical spikes, 15 sprints, hardening with a code review, security read and accessibility audit) and each phase waited for my approval. My cabinet making input went in at those gates, for example the default board thicknesses, gaps, sheet size and drawer boxes. 188 decisions are logged with their reasons. At the last gate 11,625 unit tests and 1,281 end-to-end tests passed.

I am a hobbyist, not a professional cabinet maker. I built it for myself, to plan the kitchens I build in my free time. I designed a real kitchen with it, and that kitchen is being built now.

Limits: it runs only on my computer and is not hosted anywhere. It is tested on desktop Chrome and Edge; Firefox and Safari are best effort, and phones and tablets are not supported. The 3D view needs WebGL 2. It has no DXF export, no nesting of parts on sheets (Marangos does this for single cabinets), no custom catalogue entries and no tracing of a room from a photo.

Stack

  • TypeScript
  • Preact
  • Zustand
  • Three.js
  • SVG
  • valibot
  • clipper2
  • jsPDF
  • IndexedDB
  • Vite
  • Vitest
  • Playwright

Get in touch