A Libre/Open Office spreadsheet BOM file has been added that lists sources for the required parts totaling around $1500.
The main rails are made from 3"x3"x1/4" aluminum angles, with 1/16" aluminum angle used as replaceable wear strips on the corners that the RMS2-2RS 3/8" V-Groove bearings run on. The hardened steel V-Groove bearings will eventually wear into the aluminum but the replaceable wear angles are cheap and easy to replace.
The tension on the V-Groove bearings is set with jack-screws that slide the bottom bearing mount bolts in slots. This tension on the bearings will eventually cause the bearings to wear into the aluminum wear strips, and this wear must be balanced against the machine stiffness desired.
The two X-Rails are mounted to aluminum T-slot extrusions that are in turn mounted to the table with a series of carriage bolts, washers and nuts. The nuts allow the two rails to be aligned and squared to each other.
To drive the X and Y axis I'm using single start 1/2-10 ACME lead screws and Delrin Anti-Backlash nuts. With 1.8 degree stepper motors and half stepping the drivers you get a quarter of a thousands of an inch (0.00025") resolution, which is more than I will ever need. The good news is that half stepping the drivers gives the greatest torque and highest precision. Micro stepping at higher ratios results in variable micro-step to micro-step accuracy even if the error is not cumulative across full steps. So my preference is to maximize torque while maintaining consistent accuracy. I'm using wedging style Anti-Backlash nuts from Dumpster CNC as I've had great success with these in the past. They do eventually wear out, but they maintain their anti-backlash features without needing manual adjustment as they wear.
For compactness on the Z axis I'm using MGN12H linear bearings and a 4 start TR8 trapezoidal lead screw with an adjustable tension Delrin Anti-Backlash nut from Open Builds.
For the spindle I'm using a 500W BLDC spindle with an ER-16 collet. I did how ever make sure that I could change my mind and use a variety of different spindles, and designed mounts for a Dewalt D660 router, a DWP611 trim router with speed control (from a earlier CNC build), and even a generic high wattage 80mm air/water cooled spindle if I need to.
For Z-probing I put a 3D printed housing on the Z-Axis for a 1/4" stereo audio jack with +12V, ground and signal lines so that a variety of powered and passive contact probes can be easily connected.
For the electronics I'm using and Arduino Mega with a screw terminal shield to connect up to the stepper drives and solid state relays for controlling dust collection and cooling/lubrication. The Arduino is running GRBL Mega 5X software which allows for the 4th axis option. I also designed a pop out/up draw to hold the electronics. This draw tucks into the unused space between the support ribs of the top deck of the 2x4 Basics work bench.
For the waste board system, I used a sub-deck of 2x6 and 2x8 boards that are bolted down to the top deck of the table with recessed hardware and then surfaced off to be perfectly co-plainer with the X and Y axes. To this deck I then added threaded inserts to allow a piece of 3/4 MDF to be bolted down. As the to main sides of MDF sheets are very accurately co-plainer (at least as much I will ever need), I do not for see the need to run a surfacing pass over any new waste boards.
For the HMI I'm using a PI4 and bCNC with a wireless media keyboard and a 15" monitor. I used 1" pipe hardware to make a monitor and keyboard pole. Saddle clamps worked perfect to create mounts for the monitor and keyboard tray. The vertical 1" pipes are loosely threaded into the tee & elbow joints on the arm, this creates pivot bearings for the arm, monitor and keyboard tray to swing on. The pipe also allows me to pass wires up through the center to keep clutter down.