diff --git a/.gitignore b/.gitignore
index 2c15282f5dfb9e172a3d70966de99fdf64da9414..d03f5961d3a59f9c7ebefb132daeb459061b76b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,5 @@ tools/portaudio
 # Ignore temp files
 *~
 
-
+# Ignore website cache
+www/cache
diff --git a/www/Git_Access.txt b/www/Git_Access.txt
index 7d80ce7bbe9701f5f645b629a3407a903c8db2f4..5cbde2f57edf3589964f16571b42d09f3dfc4696 100644
--- a/www/Git_Access.txt
+++ b/www/Git_Access.txt
@@ -10,6 +10,8 @@ To access SFLphone's git repository (read-only):
 
 ---------------------------------------------
 git clone git://sflphone.org/git/sflphone.git
+cd sflphone
+autoreconf --install
 ---------------------------------------------
 
 
diff --git a/www/footer.php b/www/footer.php
new file mode 100644
index 0000000000000000000000000000000000000000..baf2b117ffa05c5e5f02043df7648a7ae7929e21
--- /dev/null
+++ b/www/footer.php
@@ -0,0 +1,3 @@
+</div><!-- page_wrapper -->
+</body>
+</html>
diff --git a/www/header.php b/www/header.php
new file mode 100644
index 0000000000000000000000000000000000000000..b5244a40255848808132d999634cf5a832d9552f
--- /dev/null
+++ b/www/header.php
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <link rel="stylesheet" type="text/css" href="sflphone.css" />
+  <title><?= ($title ? $title.' :: ' : '') ?> SFLphone</title>
+</head>
+<body>
+<div id="page_wrapper">
+<div id="header">
+  <a href="."><img src="images/logoSFLphone<?= ($module == 'page_home' ? '512x149' : '312x91') ?>.png" /></a>
+</div>
\ No newline at end of file
diff --git a/www/images/devel.png b/www/images/devel.png
new file mode 100644
index 0000000000000000000000000000000000000000..70a0d06667dffbd6acc6ad7276da96cebe85d21b
Binary files /dev/null and b/www/images/devel.png differ
diff --git a/www/images/fetch.png b/www/images/fetch.png
new file mode 100644
index 0000000000000000000000000000000000000000..778b9de1c54b0bf95ebb01c852cb829adb1808d7
Binary files /dev/null and b/www/images/fetch.png differ
diff --git a/www/images/info.png b/www/images/info.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e0729c6757590db194ea291ae00058601e4a0bc
Binary files /dev/null and b/www/images/info.png differ
diff --git a/www/images/logoSFLphone312x91.png b/www/images/logoSFLphone312x91.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1637322248865099cc2b88d75cbf6d091d84f24
Binary files /dev/null and b/www/images/logoSFLphone312x91.png differ
diff --git a/www/images/logoSFLphone512x149.png b/www/images/logoSFLphone512x149.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb773de41f940f8e79f21a27eb841a48b8702fef
Binary files /dev/null and b/www/images/logoSFLphone512x149.png differ
diff --git a/www/index.php b/www/index.php
index 58598b4813047b39dac5c33f49bff132d9fe9aa1..e616f5710e13270c16e08cee1065d14325a8cfa2 100644
--- a/www/index.php
+++ b/www/index.php
@@ -1,9 +1,37 @@
 <?php
+/**
+ * Copyright (C) 2007 - Savoir-faire Linux Inc.
+ * Author: Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>
+ *
+ * LICENSE: GPLv3
+ */
 
-include('sflphone.funcs.php');
+require_once('sflphone.funcs.php');
 
-show_page('Git_Access');
 
 
+$module = '';
+
+// Default module: home
+if (!$_REQUEST['l']) {
+  $module = 'home';
+} else {
+  $module = $_REQUEST['l'];
+}
+
+
+
+
+// Send output.
+include('header.php');
+
+$mod = "templates/page_$module.php";
+if (!file_exists($mod)) {
+  print "<h1>Module '$module' not found</h1>";
+} else {
+  include($mod);
+}
+
+include('footer.php');
 
 ?>
\ No newline at end of file
diff --git a/www/sflphone.css b/www/sflphone.css
new file mode 100644
index 0000000000000000000000000000000000000000..26c45559beb22b4de58801a24ac61c689ed311d1
--- /dev/null
+++ b/www/sflphone.css
@@ -0,0 +1,273 @@
+/* Based on the output of asciidoc */
+
+
+body {
+  margin: 0 auto 0 auto;
+  width: 750px;
+  background-color: #666666;
+}
+
+a {
+  color: blue;
+  text-decoration: underline;
+}
+a:visited {
+  color: fuchsia;
+}
+
+em {
+  font-style: italic;
+}
+
+strong {
+  font-weight: bold;
+}
+
+tt {
+  color: navy;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  color: #86B1B5;
+  font-family: sans-serif;
+  margin-top: 1.2em;
+  margin-bottom: 0.5em;
+  line-height: 1.3;
+}
+
+h1 {
+  border-bottom: 2px solid silver;
+}
+h2 {
+  border-bottom: 2px solid silver;
+  padding-top: 0.5em;
+}
+
+div.sectionbody {
+  font-family: serif;
+  margin-left: 0;
+}
+
+hr {
+  border: 1px solid silver;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+}
+
+pre {
+  padding: 0;
+  margin: 0;
+}
+
+span#author {
+  color: #527bbd;
+  font-family: sans-serif;
+  font-weight: bold;
+  font-size: 1.2em;
+}
+span#email {
+}
+span#revision {
+  font-family: sans-serif;
+}
+
+div#footer {
+  font-family: sans-serif;
+  font-size: small;
+  border-top: 2px solid silver;
+  padding-top: 0.5em;
+  margin-top: 4.0em;
+}
+div#footer-text {
+  float: left;
+  padding-bottom: 0.5em;
+}
+div#footer-badges {
+  float: right;
+  padding-bottom: 0.5em;
+}
+
+div#preamble,
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+  margin-right: 10%;
+  margin-top: 1.5em;
+  margin-bottom: 1.5em;
+}
+div.admonitionblock {
+  margin-top: 2.5em;
+  margin-bottom: 2.5em;
+}
+
+div.content { /* Block element content. */
+  padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+  font-family: sans-serif;
+  font-weight: bold;
+  text-align: left;
+  margin-top: 1.0em;
+  margin-bottom: 0.5em;
+}
+div.title + * {
+  margin-top: 0;
+}
+
+td div.title:first-child {
+  margin-top: 0.0em;
+}
+div.content div.title:first-child {
+  margin-top: 0.0em;
+}
+div.content + div.title {
+  margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+  background: #ffffee;
+  border: 1px solid silver;
+  padding: 0.5em;
+}
+
+div.listingblock > div.content {
+  border: 1px solid silver;
+  background: #f4f4f4;
+  padding: 0.5em;
+}
+
+div.quoteblock > div.content {
+  padding-left: 2.0em;
+}
+
+div.attribution {
+  text-align: right;
+}
+div.verseblock + div.attribution {
+  text-align: left;
+}
+
+div.admonitionblock .icon {
+  vertical-align: top;
+  font-size: 1.1em;
+  font-weight: bold;
+  text-decoration: underline;
+  color: #527bbd;
+  padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+  padding-left: 0.5em;
+  border-left: 2px solid silver;
+}
+
+div.exampleblock > div.content {
+  border-left: 2px solid silver;
+  padding: 0.5em;
+}
+
+div.verseblock div.content {
+  white-space: pre;
+}
+
+div.imageblock div.content { padding-left: 0; }
+div.imageblock img { border: 1px solid silver; }
+span.image img { border-style: none; }
+
+dl {
+  margin-top: 0.8em;
+  margin-bottom: 0.8em;
+}
+dt {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+  font-style: italic;
+}
+dd > *:first-child {
+  margin-top: 0;
+}
+
+ul, ol {
+    list-style-position: outside;
+}
+ol.olist2 {
+  list-style-type: lower-alpha;
+}
+
+div.tableblock > table {
+  border: 3px solid #527bbd;
+}
+thead {
+  font-family: sans-serif;
+  font-weight: bold;
+}
+tfoot {
+  font-weight: bold;
+}
+
+div.hlist {
+  margin-top: 0.8em;
+  margin-bottom: 0.8em;
+}
+td.hlist1 {
+  vertical-align: top;
+  font-style: italic;
+  padding-right: 0.8em;
+}
+td.hlist2 {
+  vertical-align: top;
+}
+
+@media print {
+  div#footer-badges { display: none; }
+}
+/* Workarounds for IE6's broken and incomplete CSS2. */
+
+div.sidebar-content {
+  background: #ffffee;
+  border: 1px solid silver;
+  padding: 0.5em;
+}
+div.sidebar-title, div.image-title {
+  font-family: sans-serif;
+  font-weight: bold;
+  margin-top: 0.0em;
+  margin-bottom: 0.5em;
+}
+
+div.listingblock div.content {
+  border: 1px solid silver;
+  background: #f4f4f4;
+  padding: 0.5em;
+}
+
+div.quoteblock-content {
+  padding-left: 2.0em;
+}
+
+div.exampleblock-content {
+  border-left: 2px solid silver;
+  padding-left: 0.5em;
+}
+
+
+
+/** SFLphone specific */
+#header {
+  text-align: center;
+}
+#header img {
+  border: 0px;
+}
+
+#page_wrapper {
+  width: 750px;
+  background-color: white;
+  padding: 1em 2em 2em 2em;
+  border-left: 1px #aaaaaa solid;
+  border-right: 1px #aaaaaa solid;
+}
\ No newline at end of file
diff --git a/www/sflphone.funcs.php b/www/sflphone.funcs.php
index b0d6174b52c82b6859e6c8bfb1dfd59d718c061e..6396c1135a0bba2d590def8662ec603516aaa6d9 100644
--- a/www/sflphone.funcs.php
+++ b/www/sflphone.funcs.php
@@ -29,6 +29,10 @@ function get_page($page) {
   // Get the latest HASH for that page.
   $hash = get_git_hash($page);
 
+  if (!$hash) {
+    return "Page '$page' not found.<br />\n";
+  }
+
   $cnt = get_cache_hash($hash);
 
   if (!$cnt) {
diff --git a/www/templates/page_devel.php b/www/templates/page_devel.php
new file mode 100644
index 0000000000000000000000000000000000000000..3cc490a71f5b81d71ca6fd0155e70baba3f0e457
--- /dev/null
+++ b/www/templates/page_devel.php
@@ -0,0 +1,3 @@
+<h1>Git access</h1>
+
+<?php show_page('Git_Access'); ?>
diff --git a/www/templates/page_download.php b/www/templates/page_download.php
new file mode 100644
index 0000000000000000000000000000000000000000..97de7ceb3b17a4b1c3eddb82f34833e457fbd9a6
--- /dev/null
+++ b/www/templates/page_download.php
@@ -0,0 +1,3 @@
+<h1>Download</h2>
+
+<?php show_page('Download'); ?>
diff --git a/www/templates/page_goals.php b/www/templates/page_goals.php
new file mode 100644
index 0000000000000000000000000000000000000000..f6509fefd38fa2ce0273fac56cff5dd6ea4be3a9
--- /dev/null
+++ b/www/templates/page_goals.php
@@ -0,0 +1,3 @@
+<h1>Goals</h1>
+
+<?php show_page('Goals'); ?>
diff --git a/www/templates/page_home.php b/www/templates/page_home.php
new file mode 100644
index 0000000000000000000000000000000000000000..e52303baf955498cccef0bae8bfb491e040454ae
--- /dev/null
+++ b/www/templates/page_home.php
@@ -0,0 +1,33 @@
+<h1>News</h1>
+
+<?php show_page('News'); ?>
+
+<h1>About</h1>
+
+<?php show_page('About'); ?>
+
+<h1>Get started</h2>
+
+<p>
+The project is ongoing well, but your help and contribution is needed to make this software even better!
+</p>
+<p>&nbsp;</p>
+<p>
+<img align="left" style="margin-right: 10px; margin-left: 5em;" src="images/info.png"/> 
+<a href="index.php?l=goals">Goals</a> - where do we want to be <br/>
+<a href="index.php?l=features">Features</a> - where we are <br/>
+<a href="index.php?l=screenshots">Screenshots</a> - a quick look at the current status
+</p>
+<br style="clear: both;"/>
+<p>
+<img align="left" style="margin-right: 10px; margin-left: 5em;" src="images/fetch.png"/>
+<a href="index.php?l=download">Download</a> - grab the latest source code<br/>
+<a href="index.php?l=build">Build</a> - build and installation instructions <br/>
+</p>
+<br style="clear: both;"/>
+<p>
+<img align="left" style="margin-right: 10px; margin-left: 5em;" src="images/devel.png"/>
+<a href="/mantis">File a bug</a> - File a bug report <br/>
+<a href="index.php?l=discuss">Discuss</a> - Subscribe to a mailing list or contact us <br/>
+<a href="index.php?l=devel">Develop</a> - Submit patches, work on the code, contribute
+</p>
\ No newline at end of file