I went the STC-1000 route myself. It's $25 for the controller, but it's a bare component---it wound up costing about $60 total for a wired box with two outlets, one for heating and one for cooling. If you're reasonably electrically linclined, this is a good way to go. I used the method Revvy describes here (
https://www.homebrewtalk.com/f51/stc-1000-wiring-333680/). There's a link to the original creator somewhere in that thread. I built mine without the always-on outlet, and I put a 15A slow-blow fuse on the incoming power.
However, please note that it does involve wiring 120V (or higher in some countries) AC power. This is serious stuff. While it doesn't require great sophistication, it does require care in wiring things correctly. It's possible to make mistakes that give you a working, but potentially lethal, device, so if you've not done your own wiring before, I would strongly urge you to find someone who has some experience to walk you through it.
With that, you can use just about any cooling device---I've used a fridge and a chest freezer---to provide the fermentation chamber. Set the fridge/freezer to max cold and plug it into the cooling outlet on the STC-1000 box. If you think you're going to need to raise the temperature, stick a reptile or seedling heat pad or a small space heater [*] in there, connected to the heating outlet.
[*] Space heaters are potentially dangerous. There are some ceramic space heaters out there that are ok, although they have a lot of power. This is the route I've gone (though I may switch in the near future). If you're using one of these, you have to be careful where you put the thermometer that drives the temperature controller. If you follow the usual advice, which is to tape the thermometer to the side of the fermentor, then insulate it with foam, you are asking for trouble. It will very accurately measure the temperature of the beer, and crank on the heat until that beer reaches the temperature you want. The problem is that this will take a long time, and the heater will be blasting the whole time. This will give you a possibly VERY high air temperature, which can be quite dangerous.
My solution is to untape the thermometer so it measures the air temperature when heating. This won't heat as quickly, but it prevents runaway heating.