The top and bottom rail both get rabbets for the mirror and backer board to fit into.
The bottom rail gets a groove in its face to receive the tongue of the shelf.
The left and right stiles get a stopped groove to receive the tongued corbels. I chiseled a small mortise at the end of the groove, used my plow plane to clear out most of the wood, and finished up with the router plane to get everything to the correct depth. I experimented with a little stop block to help me stop the plow plane before hitting the end of the mortise.