diff --git a/engine/src/flutter/sky_home b/engine/src/flutter/sky_home
new file mode 100644
index 0000000000..15d830e58e
--- /dev/null
+++ b/engine/src/flutter/sky_home
@@ -0,0 +1,10 @@
+#!mojo mojo:sky_viewer
+
+
+
diff --git a/engine/src/flutter/sky_home.dart b/engine/src/flutter/sky_home.dart
new file mode 100644
index 0000000000..7e4224b3b9
--- /dev/null
+++ b/engine/src/flutter/sky_home.dart
@@ -0,0 +1,56 @@
+import 'dart:sky';
+import 'package:sky/framework/fn.dart';
+import 'package:sky/framework/components/button.dart';
+import 'package:sky/framework/components/scaffold.dart';
+import 'package:sky/framework/components/tool_bar.dart';
+import 'package:sky/framework/theme/colors.dart';
+import 'package:sky/framework/theme/typography.dart' as typography;
+
+class SkyLink extends Component {
+ String text;
+ String href;
+
+ SkyLink(String text, this.href) : this.text = text, super(key: text);
+
+ UINode build() {
+ return new EventListenerNode(
+ new Button(key: text, content: new Text(text), level: 1),
+ onPointerUp: (_) => window.location.href = href
+ );
+ }
+}
+
+class SkyHome extends App {
+ static final Style _actionBarStyle = new Style('''
+ background-color: ${Green[500]};''');
+
+ static final Style _titleStyle = new Style('''
+ ${typography.white.title};''');
+
+ UINode build() {
+ List children = [
+ new SkyLink('Stocks2 App', '/examples/stocks2/lib/stock_app.dart'),
+ new SkyLink('Interactive Flex', '/examples/raw/interactive_flex.dart'),
+ new SkyLink('Ink Well', '/examples/raw/ink_well.dart'),
+ new SkyLink('Box2D Game', '/examples/game/main.dart'),
+ new SkyLink('Sector Layout', '/examples/raw/sector_layout.dart'),
+
+ // TODO(eseidel): We could use to separate these groups?
+ new SkyLink('Stocks App (Old)', '/examples/stocks/main.sky'),
+ new SkyLink('Touch Demo (Old)', '/examples/raw/touch-demo.sky'),
+ new SkyLink('Spinning Square (Old)', '/examples/raw/spinning-square.sky'),
+
+ new SkyLink('Licences (Old)', '/LICENSES.sky'),
+ ];
+
+ return new Scaffold(
+ // FIXME: ActionBar should have a better default style than transparent.
+ header: new StyleNode(
+ // FIXME: left should be optional, but currently crashes when null.
+ new ToolBar(left: new Text(''),
+ center: new Container(children: [new Text('Sky Demos')], style: _titleStyle)),
+ _actionBarStyle),
+ content: new Container(children: children)
+ );
+ }
+}
\ No newline at end of file