We track tractors and handheld scanners in large sheds, so I’ve been through both parts.
Positioning: UWB two-way ranging. Fix 4-8 anchors on walls and columns (more in aisles with racking), put a tag on each cart (Qorvo DWM1001/DWM3000 modules are the usual starting point). The tag ranges to the anchors and computes x, y in metres in your own coordinate frame. 10-30 cm accuracy in line of sight. Racks of metal parts will cost you some of that.
The dashboard part is easier than people think. A Map card has an Image (floor plan) mode: you give it the floor plan picture and its width/height in pixels, and then the latitude and longitude columns hold y and x in pixels from the top-left corner. So convert metres to pixels on the cart (or in the gateway) and send them as two keys:
{"pos_x_px": 812, "pos_y_px": 377, "batt_pct": 74, "job": "B12"}
In the card set Latitude column to pos_y_px and Longitude column to pos_x_px, colour markers from a status column (idle, busy, fault), and add tooltip fields for battery and job. Routes can be drawn and replayed too if you want “where did cart 7 go this morning”.
Megan’s question matters for limits. One message per cart per second is 86,400 a day each, so put all the cart’s values in the same message. The default per-device limit is 10 messages a second, so you’re fine there, but look at your monthly message quota before you go to 50 carts. Map cards

