diff --git a/stages/0/Main.elm b/stages/0/Main.elm
new file mode 100644
index 0000000..56a2cad
--- /dev/null
+++ b/stages/0/Main.elm
@@ -0,0 +1,37 @@
+module Main (..) where
+
+import Html exposing (..)
+import Html.Attributes exposing (..)
+
+
+model =
+ { result =
+ { id = 1
+ , name = "TheSeamau5/elm-checkerboardgrid-tutorial"
+ , stars = 66
+ }
+ }
+
+
+view model =
+ div
+ [ class "content" ]
+ [ header
+ []
+ [ -- TODO add the equivalent of
ElmHub
right before the tagline
+ span [ class "tagline" ] [ text "“Like GitHub, but for Elm things.”" ]
+ ]
+ , ul
+ [ class "results" ]
+ [ li
+ []
+ [ span [ class "star-count" ] [{- TODO display the number of stars -}]
+ -- TODO use the model to put a link here that points to
+ -- https://github.com/TheSeamau5/elm-checkerboardgrid-tutorial
+ ]
+ ]
+ ]
+
+
+main =
+ view model
diff --git a/stages/0/README.md b/stages/0/README.md
new file mode 100644
index 0000000..e4a727c
--- /dev/null
+++ b/stages/0/README.md
@@ -0,0 +1,17 @@
+Stage 1
+=======
+
+## Installation
+
+```bash
+elm package install
+```
+
+(Answer `y` at the prompt. In rare cases a known issue can cause the download
+to fail; in that case, just run `elm package install` again.)
+
+## Building
+
+```bash
+elm live Main.elm --open -- --output=elm.js
+```
diff --git a/stages/0/elm-hub.png b/stages/0/elm-hub.png
new file mode 100644
index 0000000..ba32816
Binary files /dev/null and b/stages/0/elm-hub.png differ
diff --git a/stages/0/elm-package.json b/stages/0/elm-package.json
new file mode 100644
index 0000000..2b33bdf
--- /dev/null
+++ b/stages/0/elm-package.json
@@ -0,0 +1,15 @@
+{
+ "version": "1.0.0",
+ "summary": "Like GitHub, but for Elm stuff.",
+ "repository": "https://github.com/rtfeldman/elm-workshop.git",
+ "license": "BSD-3-Clause",
+ "source-directories": [
+ "."
+ ],
+ "exposed-modules": [],
+ "dependencies": {
+ "elm-lang/core": "3.0.0 <= v < 4.0.0",
+ "evancz/elm-html": "4.0.0 <= v < 5.0.0"
+ },
+ "elm-version": "0.16.0 <= v < 0.17.0"
+}
diff --git a/stages/0/index.html b/stages/0/index.html
new file mode 100644
index 0000000..d045ba4
--- /dev/null
+++ b/stages/0/index.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ ElmHub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/stages/0/style.css b/stages/0/style.css
new file mode 100644
index 0000000..64c74d7
--- /dev/null
+++ b/stages/0/style.css
@@ -0,0 +1,92 @@
+
+.content {
+ width: 960px;
+ margin: 0 auto;
+ padding: 30px;
+ font-family: Helvetica, Arial, serif;
+}
+
+header {
+ position: relative;
+ padding: 6px 12px;
+ height: 36px;
+ background-color: rgb(96, 181, 204);
+}
+
+h1 {
+ color: white;
+ font-weight: normal;
+ margin: 0;
+}
+
+.tagline {
+ color: #eee;
+ position: absolute;
+ right: 16px;
+ top: 12px;
+ font-size: 24px;
+ font-style: italic;
+}
+
+.results {
+ list-style-image: url('http://img-cache.cdn.gaiaonline.com/76bd5c99d8f2236e9d3672510e933fdf/http://i278.photobucket.com/albums/kk81/d3m3nt3dpr3p/Tiny-Star-Icon.png');
+ list-style-position: inside;
+ padding: 0;
+}
+
+.results li {
+ font-size: 18px;
+ margin-bottom: 16px;
+}
+
+.star-count {
+ font-weight: bold;
+ margin-right: 16px;
+}
+
+a {
+ color: rgb(96, 181, 204);
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.search-query {
+ padding: 8px;
+ font-size: 24px;
+ margin-bottom: 18px;
+ margin-top: 36px;
+}
+
+.search-button {
+ padding: 8px 16px;
+ font-size: 24px;
+ color: white;
+ border: 1px solid #ccc;
+ background-color: rgb(96, 181, 204);
+ margin-left: 12px
+}
+
+.search-button:hover {
+ color: rgb(96, 181, 204);
+ background-color: white;
+}
+
+.hide-result {
+ background-color: transparent;
+ border: 0;
+ font-weight: bold;
+ font-size: 18px;
+ margin-left: 18px;
+ cursor: pointer;
+}
+
+.hide-result:hover {
+ color: rgb(96, 181, 204);
+}
+
+button:focus, input:focus {
+ outline: none;
+}