Read in depth from Ray Maker's top notch blog:
2016-2017 Trainer App In-Depth Guide
2016-2017 Bike Trainer Recommendations
and some older hardware here:
2014-2015 Bike Trainer Recommendations
My own recommendation would be Zwift running on a PC, Mac or recent iOS device, paired with your own bike and a smart trainer of your choice. Zwift allows you to run all the programmed workouts you'd like, and has progressive training plans built-in. You can build or borrow new workouts easily.
TrainerRoad is devoted to progessive training plans, and has a rich library built in that could keep you well occupied year after year.
There are other apps like TrainerRoad, and a few others somewhat like Zwift. There's a third variety, which provide video and programmed resistance for many real world courses.
I like Zwift because for me, and hundreds of others at any hour 24/7/365, it provides a social experience that transforms the home workout room into a group ride or race whenever you want. For me, that is a richer experience day after day than a variety of real world courses, and more motivational than a solo workout in the garage. The software is good, but the network effect -- the fact that there are hundreds of other real live people (or thousands) riding on the same course around you -- is what makes me return to it time after time. And if you use Strava, your rides will upload to Strava as a virtual ride, complete with segment records, etc.
I've done TrainerRoad, and I've done real world software, and I've tried several others. Each has its strengths and I'll do a real world ride (like Flanders or Alpe d'Huez) from time to time, to get a reminder of what the pros are riding. Different people will prefer different software.