I think you could get 20 dpi using 0603 smt LEDs.
The strip of 100 red smt LEDs I have in front of me cost $10.50. 30" @ 20 LEDs per inch would be 600 LEDs. You’d also need a current limiting resistor for each LED (resistors are dirt cheap when you buy a bunch).
You culd use 595 shift registers to multiplex the LEDs. There’s likely a better alternative to driving the LEDs than using 595s but I’m not familiar with them myself.
If you made the array modular, you could have 256 LEDs and four 595 chips on a strip of PCB 12.8" long. I bet the 256 LEDs could fit on 12" of PCB to make the modules an even foot. You could then have a strip 24" or 36" long by linking the PCBs end to end.
You wouldn’t need to make the modules 256 LEDs long but if you want the shift registers to work out even, you’d want the number of LEDs to be some power of 8 (128 LEDs (6") might be a better size of PCB than 12").
Having a custom PCB would probably be the best option when making these modules, but you could also used SparkFun’s smt proto board to make it. If you cut their Bandicoot board into strips three or four smt pads wide, you could solder the LEDs and resistors to the pads to make strips of 77 (about) LEDs each. You should be able to get five or six such strips per Bandicoot board.
I think you’d only need two of the Bandicoot boards to make your 30" LED array. You’d still need to attach the shift registers some place and wire it all up.
If you use SOIC 595 chips, they could be soldered to these same boards if you made them a bit wider. The strips would probably need to be twice as wide to accommodate the 595s. So you might want to get three of the Bandicoot boards.
https://www.sparkfun.com/products/8708
I figure 30" of array built this way would cost about $100 in parts.
Sorry, I was just kind of thinking out loud. This is probably much more detail about a DIY version than you were after. I’m guessing you’re hoping for a unit that’s already been made?
Edit: With a custom PCB you could easily get 25 LEDs per inch with 0603 LEDs. At 25 dpi, you’d still have 10 mil spacing between chips. With 6 mil spacing you could get 27 dpi.