Depends on what your needs are.
One approach is to go with panels. It gives you a nice UI for including blocks, nodes and other pieces of content.
The Panels module allows a site administrator to create customized
layouts for multiple uses. At its core it is a drag and drop content
manager that lets you visually design a layout and place content
within that layout. Integration with other systems allows you to
create nodes that use this, landing pages that use this, and even
override system pages such as taxonomy and the node page so that you
can customize the layout of your site with very fine grained
permissions.
The second approach, which has become my preferable, is to create your frontpage as a node and add the necessary views or blocks on it.
Regardless of your approach, if you are in need to add js and css files in the frontpage you can add the following in you template.php file(source):
function yourtheme_preprocess_page(&$vars) {
if(drupal_is_front_page()) {
drupal_add_js(drupal_get_path('theme', 'yourtheme') . '/js/your-front-script.js');
drupal_add_css(drupal_get_path('module', 'example') . '/example.css');
}
}