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..1041a3a
--- /dev/null
+++ b/index.php
@@ -0,0 +1 @@
+<?php header('Location: http://eclipse.org/projects/project.php?id=iot.zenoh'); ?>
\ 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);
+
