About this app— Bauhaus Grid
A generative poster composer built on the visual language of the Bauhaus school.
The Bauhaus school, founded by Walter Gropius in Weimar in 1919, closed after only 14 years. Its visual language — geometric abstraction, primary color, the grid as a structural device — went on to shape a century of graphic design. Bauhaus Grid is a browser tool for composing posters in that tradition.
Every output is reproducible from a seed, a palette, a shape-weight mix, and two probability sliders. Click any tile to edit its shape, colors, rotation, or to lock it in place before the next shuffle.
How it works
The renderer draws directly to SVG. A 2-10 column by 2-10 row grid holds one geometric primitive per cell, drawn from a library of 28 shape types (Solid, diagonals, triangles, circle and ring family, quarter- and semi-circles, double arcs, dot grids, stripes, crosses, chevron, checkerboard, arch, step, starburst, four-point star, arch portal, spiral, four-petal flower, rosette, infinity loop). Cells can also merge into bento-style 2x1, 1x2, or 2x2 blocks (and larger blocks at high Bento Cell Merge values).
The Controls tab exposes Grid Columns, Grid Rows, Tile Gap, Corner Radius, Bento Cell Merge (probability of merging adjacent cells into a single tile), and Decorative Overlay (probability of stacking a secondary symbol on top of the primary shape). The Shapes tab lets you enable individual shape types, weight their frequency, and apply one of three weight presets. The Palette tab ships with 9 named palettes (Weimar Classic, Dessau Architecture, Calm Teal & Sage, Terracotta & Olive, Swiss Vintage 1955, Nordic Sunset, Brutalist Pop, Botanical & Ink, Neo-Noir Slate); each is a list of 5 anonymous hex colors referenced by index. You can also create a custom palette of 2-8 colors, which is saved to localStorage. The Tile tab opens the per-tile editor for the currently selected tile.
For export, the SVG is the source of truth. PNG and JPG exports rasterize that SVG to a canvas at 1K, 2K, or 4K long edge (selected in the Export modal).
Try these
Weimar Classic, sparse
Pick the Weimar Classic palette, set Bento Cell Merge to about 0.2 and Decorative Overlay to 0. You get a clean, sparse composition of circles, quarter-circles, and diagonals on the school-era red, yellow, blue, cream, and black.
Botanical & Ink, locked strip
Pick Botanical & Ink, raise Decorative Overlay to about 0.4, then click a few tiles in the bottom row and use the padlock quick action to lock them. Each shuffle keeps those tiles in place and regenerates the rest — useful when the bottom strip holds typography.
Dessau Architecture, dense bento
Switch to Dessau Architecture, set Bento Cell Merge to 0.5 (larger blocks kick in above 1.5), and raise Decorative Overlay to 0.5. The composition becomes dense, blocky, and near-abstract.
FAQ
Are the palettes based on actual Bauhaus colors?
Partly. Weimar Classic is the school-era red, yellow, blue, cream, and black. Dessau Architecture is a more muted concrete-and-amber palette inspired by the school's later years. The rest are modern interpretations. You can also create a custom palette of 2-8 colors in the Palette tab.
Can I export at print resolution?
Yes. PNG and JPG exports offer three resolution tiers — 1K, 2K, and 4K long edge — selected in the Export modal. SVG export is resolution-independent and prints cleanly at any size.
Is the seed for reproducibility?
Yes, for a given combination of seed, palette, shape weights, Bento Cell Merge, Decorative Overlay, grid size, gap, and corner radius. The seed is not shown in the controls and the URL is not currently bookmarkable; the export filename embeds the seed so you can preserve a specific generation that way.
Can I save a specific generation?
Use the Export menu in the floating toolbar — it lets you pick PNG, JPG, or SVG and a resolution tier (1K, 2K, or 4K).
Related tools
Comments
Comments are not configured yet.
This site uses Giscus (GitHub Discussions) for comments. To enable, set the following environment variables and redeploy:
NEXT_PUBLIC_GISCUS_REPO=owner/repo NEXT_PUBLIC_GISCUS_REPO_ID=R_xxx NEXT_PUBLIC_GISCUS_CATEGORY=Comments NEXT_PUBLIC_GISCUS_CATEGORY_ID=DIC_xxx
The values come from giscus.app after you enable Discussions on the GitHub repo.