diff --git a/_projectCommon.php b/_projectCommon.php
new file mode 100644
index 0000000..0fe02c9
--- /dev/null
+++ b/_projectCommon.php
@@ -0,0 +1,23 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2014 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *******************************************************************************/
+
+  # Set the theme for your project's web pages.
+  # See the Committer Tools "Phoenix" secion in the How Do I? for list of themes
+  # https://dev.eclipse.org/committers/
+  $theme = "solstice";
+
+  # Define your project-wide Nav bars here.
+  # Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank).
+  $Nav->addNavSeparator("Solstice",   "/eclipse.org-common/themes/solstice/docs/");
+  $Nav->addCustomNav("Documentation", "/eclipse.org-common/themes/solstice/docs/", "_self", NULL);
+  $Nav->addCustomNav("Source code", "http://git.eclipse.org/c/www.eclipse.org/eclipse.org-common.git/tree/themes/solstice/", "_self", NULL);
+  $Nav->addCustomNav("Using Phoenix", "http://wiki.eclipse.org/Using_Phoenix", "_self", NULL);
diff --git a/content/en_index.php b/content/en_index.php
new file mode 100644
index 0000000..f4e6422
--- /dev/null
+++ b/content/en_index.php
@@ -0,0 +1,30 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2014 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *******************************************************************************/
+?>
+
+<!-- Main content area -->
+<div id="midcolumn">
+  <h1><?php print $pageTitle;?></h1>
+  <p><a href="solstice-starterkit.zip" class="btn btn-warning">Download Starterkit</a></p>
+</div>
+<!-- ./end  #midcolumn -->
+
+<!-- Start of the right column -->
+<div id="rightcolumn">
+  <div class="sideitem">
+    <h2>Related Links</h2>
+    <ul>
+      <li><a target="_self" href="/eclipse.org-common/themes/solstice/docs/">Documentation</a></li>
+    </ul>
+  </div>
+</div>
+<!-- ./end  #rightcolumn -->
diff --git a/description.html b/description.html
new file mode 100644
index 0000000..10edabc
--- /dev/null
+++ b/description.html
@@ -0,0 +1 @@
+This project was just provisioned, so there isn't much to see here. You can find links to the propsal on this page.  Stay tuned for great things. 
\ No newline at end of file
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..e76266c
--- /dev/null
+++ b/index.php
@@ -0,0 +1 @@
+<?php header('Location: http://eclipse.org/projects/project.php?id=iot.duttile'); ?>
\ No newline at end of file
diff --git a/index_for_custom_site.php b/index_for_custom_site.php
new file mode 100644
index 0000000..a3739bb
--- /dev/null
+++ b/index_for_custom_site.php
@@ -0,0 +1,66 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2014 Eclipse Foundation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *******************************************************************************/
+
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+
+  $App   = new App();
+  $Nav  = new Nav();
+  $Menu   = new Menu();
+
+  # Shared variables/configs for all pages of your website.
+  require_once('_projectCommon.php');
+
+  # Begin: page-specific settings.  Change these.
+  $pageTitle = "Starterkit Template";
+  $pageKeywords = "Add maximal 20 keywords and seperate them from each other by a comma en a space.";
+  $pageAuthor = "Christopher Guindon";
+
+  # Initialize custom solstice $variables.
+  $variables = array();
+
+  # Add classes to <body>. (String)
+  $variables['body_classes'] = '';
+
+  # Insert custom HTML in the breadcrumb region. (String)
+  $variables['breadcrumbs_html'] = "";
+
+  # Hide the breadcrumbs. (Bool)
+  $variables['hide_breadcrumbs'] = FALSE;
+
+  # Insert HTML before the left nav. (String)
+  $variables['leftnav_html'] = '';
+
+  # Update the main container class (String)
+  $variables['main_container_classes'] = 'container';
+
+  # Insert HTML after opening the main content container, before the left sidebar. (String)
+  $variables['main_container_html'] = '';
+
+  # Set Solstice theme variables. (Array)
+  $App->setThemeVariables($variables);
+
+  # Place your html content in a file called content/en_pagename.php
+  ob_start();
+  include("content/en_" . $App->getScriptName());
+  $html = ob_get_clean();
+
+  # Insert extra html before closing </head> tag.
+  //$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style.css" media="screen" />');
+
+  # Insert script/html before closing </body> tag.
+  //$App->AddExtraJSFooter('<script type="text/javascript" src="script.min.js"></script>');
+
+  # Generate the web page
+  $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
