There's a blog post that was on HN a few days back about it: https://www.troyhunt.com/ubiquiti-all-the-things-how-i-final...
For example, three dual band triple chain 802.11n/ac APs (https://routerboard.com/RBwAPG-5HacT2HnD) and a router (https://routerboard.com/RB750Gr3) have an MRSP of $330, including POE for the APs.
Roaming is very tough to get right unfortunately. Only the client devices can make a decision to roam, so without ugly hacks such as using a single channel / MAC / SSID to create a giant interfering WLAN, your options are limited. What you can do with Mikrotik is set up access rules to kick a client off an AP if the signal strength falls below a threshold, but as this is not client-initiated, there is a longer re-association time which could interrupt VoIP etc.
There are options such as 3rd party roaming clients for (eg https://play.google.com/store/apps/details?id=com.heleron.wi... for Android) which I'd consider. For laptops, most drivers have a "roaming aggressiveness" setting which can be tweaked. In general almost all devices should handle transient connectivity glitches fairly well, so kicking low signal clients off an AP shouldn't interrupt too much.
>2016 macbook that for some reason won't keep disconnecting from my WiFi router
I have had two different Macs that did this. I did a ton of research (those 5-10(!) year-old bookmarks in Pinboard are unsurprisingly dead) and found certain wifi chipsets had problems (which is why other people with the same model as you will say they've never had a problem). That said, when we moved into our new house a year ago I had to buy a new router and add an access point because of the step up in square footage and I haven't had a problem since.
Of course, that new router was one of the Netgear ones with the giant security hole that was revealed a couple of weeks ago . . .