The design format
A DomeSketch design is one small JSON object — every input the studio needs to rebuild the dome. It travels as a .domesketch.json file or as a URL, and anyone can read it without DomeSketch code. Version 1. Unknown keys are ignored; out-of-range values are adjusted and reported, so a hand-edited or older file still opens.
Example
{
"format": "domesketch",
"version": 1,
"kind": "geodesic",
"style": "glamping",
"frequency": 3,
"fraction": 0.625,
"diameterFt": 20,
"strut": "emt-1",
"cover": "canvas",
"hub": "star-plate",
"shell": {
"profile": "catenary",
"diameterFt": 20,
"heightFt": 14
}
}
The same design as a link: https://domesketch.ai/?v=3&p=0.625&d=20&s=emt-1&c=canvas&h=star-plate&st=glamping&sp=catenary&sd=20&sh=14
Fields
| Field | URL key | Meaning |
|---|---|---|
format | — | Always "domesketch". |
version | — | Integer; this is version 1. |
kind | — | "geodesic". Other kinds are reserved. |
style | st | Optional preset the design started from (informational). |
frequency | v | Class I icosahedral subdivision frequency, 1–6. |
fraction | p | Portion of the sphere kept, by height: 0.5, 0.625 or 0.375. Snapped to what the frequency supports. |
diameterFt | d | Sphere diameter in feet, 6–60. |
strut | s | One of 2x42x6emt-3/4emt-1pvc-1alu-1.5 |
hub | h | One of wood-flatpipe-flattenstar-plateball-hub |
cover | c | One of nonepoly-filmpolycarbonatecanvasplywood-shinglewood-sidingglass |
shell | sp, sd, sh | Optional monolithic shell for cement-print and AirCrete planning: profile (hemisphere, catenary, pointed), diameterFt, heightFt. |
pad | pa, pt, pe, pw, pd, pr | Optional concrete pad: apronFt, thicknessIn, edge (thickened edge, URL 0|1), edgeWidthIn, edgeDepthIn, reinforcement (mesh|rebar, URL m|r), plus rebarSpacingIn and boltIn in JSON. Absent = none. |
rainwater | rr, rs, rg, ro | Optional rainwater capture: annualRainIn, designStormIn, drumGal, dripRingOffsetFt in the URL; JSON also carries firstFlushGal, drum dimensions, emitter spacing/rate and hours per day. Absent = none. |
riser | rw | Optional riser (stem) wall under the base ring: heightFt (0–8; 0 = none), plus studSpacingIn in JSON. The door is measured from the ground, so a riser taller than the door needs no dormer. |
windows | w | Optional list (up to 6) of vertical boxed windows: azimuthDeg, widthFt (1–8), heightFt (1–8), sillFt (0.5–12, from the ground). URL: w=az:width:height:sill,…. |
cladding | z | Optional cladding zones (up to 6), applied in order over cover: each has a cover, optional rows (panel rows from the base ring, 0 = base; omitted = all) and an optional arc azimuthDeg + spanDeg (10–360). URL: z=cover:rows:az:span,… with rows as 0.1, blanks for "all". |
vestibule | ta, tl, tw, tf, th, td, te | Optional hexagonal-section entry tunnel from the base row with the door in its end wall: azimuthDeg (direction it runs out), lengthFt past the base ring (3–20), widthFt at mid-height (4–14), floorFt (the flat bottom and the ridge, ≤ width), heightFt floor to ridge (6–11), doorWidthFt, doorHeightFt. Absent = none. |
deck | ka, kh, ks, kz | Optional timber deck the dome stands on (instead of a pad): apronFt (1–14), heightFt above grade (0.5–8), shape (square|round, URL s|r), stairAzimuthDeg; JSON also carries boardWidthIn and joistSpacingIn. Absent = none. |
hive | hp hd hs ht hw hk hr hg hpath hc pal | Optional Hive Domes settlement: people, days, stay, toilet, water, kitchen, site (radius, separation, paths, common domes) and a palette of plain designs for the kitchen, sanitation and common domes (URL: pal=v:p:d:s:c:h,…). This design is the sleeping dome. Rate overrides ride in JSON only. |
door | da, dw, dh | Optional dormer doorway: azimuthDeg (direction it faces, 0 = +x, counter-clockwise from above), widthFt (2–8), heightFt (5–10). Absent = no door. |
Units and geometry
Feet throughout. The geometry is a Class I (alternate) icosahedral breakdown with a vertex at the pole; the cut snaps to the nearest vertex ring, so the achieved fraction can differ slightly from the requested one on odd frequencies. Strut counts and chord factors reproduce the published 2V/3V/4V tables.
The reference implementation is utils/dome/design.ts in the DomeSketch source. The format is free to implement.