Skip to content
Jonny Campbell
All notes

Build notes/AI & hardware

A StackedFM device, designed in conversation.

I bought a touchscreen and asked AI to design the rest: a folded aluminium case, real parts, and the files a metal shop would need. Here’s how it went, and what’s still only on screen.

An AI-generated image: the StackedFM Prism, a wedge of white aluminium with a long touchscreen showing StackedFM and a volume knob on its right-hand end, on an oak desk by a window, with records leaning against the wall behind.
An AI-generated image of the design, which hasn’t been built. The screen shows a real screenshot.StackedFM Prism · RAL 9006 white aluminium
The workbench

StackedFM hardware The whole design, in your browser.

Open the workbench

I wanted listening to music to feel more intentional again. At one point I was thinking of buying a record player and starting a physical collection. I liked the idea of my music having a physical presence, but I couldn't commit to building another collection.

So I built StackedFM, a digital record shelf for my music library. I use Spotify for discovery and StackedFM for listening. I also built it to work beside a record player, as a little display showing what's playing.

An AI-generated image: a tablet on a wooden sideboard beside a turntable, showing StackedFM playing In the Aeroplane Over the Sea by Neutral Milk Hotel.
StackedFM beside a record player. An AI-generated image, not a photo.

This autumn I wanted to take it off the screen and turn it into something that sits on my desk. I bought a 12.3-inch touchscreen and rebuilt StackedFM to run on it. Then I gave Claude Code one brief, and it designed the enclosure as code: real parts with prices, three versions, build steps and the files a metal shop would need. You can explore the whole design in your browser.

One thing first: so far, only the screen is real. Everything else here is a digital prototype.

Starting with a picture

I used image generation to brainstorm a few form factors and landed on a wedge: a long strip of album art in a folded metal case. It took some steering. I didn't want mugs with writing on them or silly posters. I wanted real posters that matched my taste in music, and someone touching the screen as if they were flicking through records.

An AI-generated concept image: a long, wedge-shaped touchscreen on a dark desk showing a row of album covers, with a finger touching Nirvana's Nevermind, and band posters on the wall behind it.
What I hoped to build, before I'd built anything. This is an AI-generated image, not a photo.

The screen

I bought a couple of capacitive touchscreens before landing on this one: a 12.3-inch, 1920 × 720 display from The Pi Hut. It's long and thin, which suits a row of album covers.

The day I bought it, I plugged it into my laptop as a second monitor and built StackedFM a new interface for it in Codex. My brief was short: beautiful, buttery, smooth interactions, very little UI, and something that felt more like listening to a record. I wanted an OLED-black background and a focus mode with nothing but the music.

The same afternoon it was live at stackedfm.com/device, with all 475 albums in my collection on it. By the end of the day it had:

  • large artwork and a swipeable shelf of records, in three views: Now playing, Covers and Spines;
  • controls that fade away after a few seconds, and a pause button that never hides;
  • a focus view when you tap the artwork;
  • playback through Spotify, or from local files.
A laptop and a wide touchscreen on a small stand, side by side on a desk. The laptop shows StackedFM's collection beside a chat with a coding agent, and the touchscreen shows StackedFM's Spines view.
My desk, from a photo I took, tidied up with AI image editing. The screens show real screenshots.
StackedFM's Spines view: the record by boygenius shown as a cover, beside a long row of album spines.
Spines view, with the whole collection. A screenshot from 3 October.

One brief

Two days later I opened Claude Code (Opus 5.5) and gave it one brief. I told it about the screen, that I planned to add a Raspberry Pi and build it into a little product, and that I was thinking of powder-coated, bent aluminium. I pasted in my brainstorm, attached the concept images, and linked to a post by David Plakon, who'd built a browser tool for a device of their own. I wanted something like that for StackedFM, and I told it we were aiming for an exceptionally high bar.

The first decision it made was the important one: what to model it in. I'd mentioned Blender. It chose build123d, a Python CAD library, and explained why:

Sheet metal has to be exact solids, because the shop unfolds the STEP with its own tooling. A mesh tool like Blender can't export a usable STEP.

Blender still makes the renders, but it never touches the geometry.

About two hours and twenty minutes after my first message, it reported back with a working workbench: three versions of the enclosure, each passing its checks.

What it designed

The enclosure is two parts in 2 mm aluminium. The cover is a tent, folded three or four times, so every visible edge is either a fold or a straight cut. The tray is a U that sits just inside it. Six countersunk screws come up through the floor into nuts pressed into the cover.

The window in the cover is the bezel. It's the screen's active area plus 0.75 mm on each side, with the glass bonded behind it.

Inside, a Raspberry Pi 5 sits on an NVMe board, with a DAC on top for the audio. Air comes in through holes in the floor and leaves through a hex grid high on the back. The rear connectors use standard Neutrik D-size cut-outs, so the inserts can change without recutting the metal.

There are three versions. All of them are 322 mm wide, or 349 mm with the knob:

VersionScreen angleDepth × height
Prism60°, the reference design137 × 125 mm
Desk52°, for looking down at a desk151 × 117 mm
Shelf70°, for a shelf at eye height137 × 135 mm

Each comes in six powder-coat colours. The parts list has prices and where to buy them. The priced parts come to £415.73 including VAT, at 5 October prices. That doesn't include the metalwork, and nine lines aren't priced yet.

CAD as code

Everything comes from one Python file of measurements. Change a number, run the build, and about two minutes later you have:

  • STEP files of the formed parts, for the shop;
  • DXF flat patterns with the cut lines and every bend's angle and direction;
  • a 3D model for the browser;
  • a report from the checks.

The flat patterns and the folded parts come from the same model, so the two can't drift apart. In all, it's about 2,600 lines of Python.

The flat patterns for the Prism: the cover as a rectangle with the screen window, a vent grid, four connector holes and three bend lines at 120°, and the tray as a long shape with triangular ends and two 90° bends.
The Prism's two parts, flat, as the laser would cut them. The dashed lines are bends. From the workbench.

Every build runs 13 checks on each version: published sheet-metal rules, minimum web widths, symmetry, clearances, room for cables, and whether any of the 24 parts overlap. All three versions pass.

The symmetry check exists because of a bug. At one point a whole wall of the tray went missing, and every existing check still passed. The fix came with a new check, so it can't slip through again.

One sentence, one knob

The next day I asked for one change: a volume knob on the right-hand side of the device, not on the front.

Top-mounted controls are common because they're ambidextrous, easy to find and easy to reach from different angles. But I'm right-handed, so I can put the volume on the right. It feels more natural to me and keeps the top clean.

That one sentence meant:

  • adding a push-button encoder and a knob, wired to the Pi;
  • moving the Pi and its boards 17.5 mm, because the knob would have hit them;
  • re-solving all three versions and running the checks again;
  • adding the new parts to the parts list;
  • re-rendering the images and re-recording the tour video on exactly the same timeline.
A render of the white aluminium enclosure from the front: a long touchscreen showing StackedFM, and the volume knob on its right-hand end.
The front, with the knob on the right. A render of the CAD model.
A render of the black enclosure from behind: a grid of vent holes, four connector cut-outs and the volume knob on the side.
The back. Seen from behind, the knob is on the left. A render of the CAD model.

The workbench

The page it built is how I explore all of this. You can turn the model around, pull it apart with a slider, or step through the build one stage at a time. You can cut a section through it, see inside, click any part for its price, and switch between versions and colours. The flat drawings, check results and STEP and DXF files are all there too.

In the original, the 3D screen runs the real device software, and you can tap it. The copy on this site shows stills of the three views instead.

I also wanted a video of it for my talk at Impromptu Belfast. The agent recorded this tour itself, clicking and scrolling through the page in a headless browser.

The tour from my talk, with the knob. 75 seconds, no sound.

You can open the workbench here.

What's real and what isn't

The screen is real, and so is the software. It's live at stackedfm.com/device, and it plays music through Spotify.

Everything else is a design. The enclosure hasn't been quoted or made, and the software hasn't run on a Pi yet, so I don't know how smooth it'll be, or how it handles speakers, heat or a long listening session.

Before ordering anything, I'd need to check:

  • that a shop can make the bends, which go up to 128°;
  • the part numbers for the rear connectors;
  • a few estimates, like where the DAC's sockets sit and how much the metal stretches in a bend;
  • how much power the screen draws.

There's a bigger question too. In my talk I said I don't have to worry about the company behind it going under and the device becoming an expensive paperweight, because I pay for the server. That's true of StackedFM, but it still plays music through Spotify. If I ever made these for other people, they'd need Spotify's approval, and I haven't applied for it.

From vibe coding to vibe manufacturing

This used to take a team. Now it's a conversation. Across two days I sent about a dozen messages. The agent chose the tools, found the parts, wrote the CAD, checked it and built the page.

I think we're moving from vibe coding to vibe manufacturing, where more of us can design physical things around our own needs. For a little more than you'd pay for a device like this, you could build one yourself and have a conversation piece in your room.

The next step is the physical one: a Pi, a few boards and some folded aluminium.

Thanks for reading.

Back to all notes
AI Assisted

I led the work, and AI helped along the way. Badge by AI Honesty Badge.