You can even make your home page one big widget area whose content is entirely composed of widgets. I would not recommend a widget approach for main page content though. You could use the page’s custom fields to define what content should be displayed. This concept is good, but the default UI for custom fields is terrible for this use. I recommend using the Advanced Custom Fields plugin or similar to better create a meaningful UI for entering custom field data.
Once you’ve defined the desired UI with the ACF plugin, you template code can largely be a series of lines, each similar to the_field('foobar');