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