diff --git a/android/gradle.properties b/android/gradle.properties
index a91025357c94cf0966f1c7beed2d8bb52e1bfabb..a6742fa6ef44a10a2e9382d30dbde8e2665f2c91 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=1.0.16
-app.versionCode=17
+app.versionName=1.0.17
+app.versionCode=18
diff --git a/assets/menu/demo.png b/assets/menu/demo.png
new file mode 100644
index 0000000000000000000000000000000000000000..0285d549c885670d34aa0969a5ba200c113c317a
Binary files /dev/null and b/assets/menu/demo.png differ
diff --git a/icons/build_application_icons.sh b/icons/build_application_icons.sh
index 27dbe2647fe4e6d562fbd99451716d1b7d448570..e8512e78b1e31d0e32b433bfc5c7717c89abac7a 100755
--- a/icons/build_application_icons.sh
+++ b/icons/build_application_icons.sh
@@ -1,118 +1,88 @@
 #! /bin/bash
 
 # Check dependencies
-command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
-command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
-command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
+command -v inkscape >/dev/null 2>&1 || {
+  echo >&2 "I require inkscape but it's not installed. Aborting."
+  exit 1
+}
+command -v scour >/dev/null 2>&1 || {
+  echo >&2 "I require scour but it's not installed. Aborting."
+  exit 1
+}
+command -v optipng >/dev/null 2>&1 || {
+  echo >&2 "I require optipng but it's not installed. Aborting."
+  exit 1
+}
 
 CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 BASE_DIR="$(dirname "${CURRENT_DIR}")"
-
-SOURCE_ICON="${CURRENT_DIR}/icon.svg"
-SOURCE_FASTLANE="${CURRENT_DIR}/featureGraphic.svg"
-SOURCE_LAUNCH_IMAGE="${CURRENT_DIR}/icon.svg"
+ASSETS_DIR="${BASE_DIR}/assets"
 
 OPTIPNG_OPTIONS="-preserve -quiet -o7"
+ICON_SIZE=192
 
-if [ ! -f "${SOURCE_ICON}" ]; then
-  echo "Missing file: ${SOURCE_ICON}"
-fi
+#######################################################
 
-if [ ! -f "${SOURCE_FASTLANE}" ]; then
-  echo "Missing file: ${SOURCE_FASTLANE}"
-fi
+# Menu images
+AVAILABLE_MENU_IMAGES="
+demo
+"
 
-if [ ! -f "${SOURCE_LAUNCH_IMAGE}" ]; then
-  echo "Missing file: ${SOURCE_LAUNCH_IMAGE}"
-fi
+#######################################################
 
+# optimize svg
 function optimize_svg() {
-  SVG="$1"
+  SOURCE="$1"
 
-  cp ${SVG} ${SVG}.tmp
+  cp "${SOURCE}" "${SOURCE}.tmp"
   scour \
-      --remove-descriptive-elements \
-      --enable-id-stripping \
-      --enable-viewboxing \
-      --enable-comment-stripping \
-      --nindent=4 \
-      --quiet \
-      -i ${SVG}.tmp \
-      -o ${SVG}
-  rm ${SVG}.tmp
+    --remove-descriptive-elements \
+    --enable-id-stripping \
+    --enable-viewboxing \
+    --enable-comment-stripping \
+    --nindent=4 \
+    --quiet \
+    -i "${SOURCE}.tmp" \
+    -o "${SOURCE}"
+  rm "${SOURCE}.tmp"
 }
 
-# optimize source svg files
-optimize_svg ${SOURCE_ICON}
-optimize_svg ${SOURCE_FASTLANE}
-optimize_svg ${SOURCE_LAUNCH_IMAGE}
-
 # build icons
-function build_application_icon() {
-  ICON_SIZE="$1"
+function build_icon() {
+  SOURCE="$1"
   TARGET="$2"
 
   echo "Building ${TARGET}"
 
-  TARGET_PNG="${TARGET}.png"
+  if [[ ! -f "${SOURCE}" ]]; then
+    echo "Missing file: ${SOURCE}"
+    exit 1
+  fi
 
-  inkscape \
-      --export-width=${ICON_SIZE} \
-      --export-height=${ICON_SIZE} \
-      --export-filename=${TARGET_PNG} \
-      ${SOURCE_ICON}
-
-  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
-}
+  if [[ ! -d "$(dirname ${TARGET})" ]]; then
+    mkdir -p "$(dirname ${TARGET})"
+  fi
 
-# build fastlane image
-function build_fastlane_image() {
-  WIDTH="$1"
-  HEIGHT="$2"
-  TARGET="$3"
-
-  echo "Building ${TARGET}"
-
-  TARGET_PNG="${TARGET}.png"
+  optimize_svg "${SOURCE}"
 
   inkscape \
-      --export-width=${WIDTH} \
-      --export-height=${HEIGHT} \
-      --export-filename=${TARGET_PNG} \
-      ${SOURCE_FASTLANE}
+    --export-width="${ICON_SIZE}" \
+    --export-height="${ICON_SIZE}" \
+    --export-filename="${TARGET}" \
+    "${SOURCE}"
 
-  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
+  optipng ${OPTIPNG_OPTIONS} "${TARGET}"
 }
 
-# build launch images (splash screen)
-function build_launch_image() {
-  ICON_SIZE="$1"
-  TARGET="$2"
-
-  echo "Building ${TARGET}"
-
-  TARGET_PNG="${TARGET}.png"
-
-  inkscape \
-      --export-width=${ICON_SIZE} \
-      --export-height=${ICON_SIZE} \
-      --export-filename=${TARGET_PNG} \
-      ${SOURCE_LAUNCH_IMAGE}
-
-  optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG}
-}
+#######################################################
 
-build_application_icon  72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher
-build_application_icon  48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher
-build_application_icon  96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher
-build_application_icon 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher
-build_application_icon 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher
-build_application_icon 512 ${BASE_DIR}/fastlane/metadata/android/en-US/images/icon
+# Create output folders
+mkdir -p "${ASSETS_DIR}"
 
-build_launch_image  72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/launch_image
-build_launch_image  48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/launch_image
-build_launch_image  96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/launch_image
-build_launch_image 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/launch_image
-build_launch_image 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/launch_image
+# Delete existing generated images
+find "${ASSETS_DIR}" -type f -name "*.png" -delete
 
-build_fastlane_image 1024 500 ${BASE_DIR}/fastlane/metadata/android/en-US/images/featureGraphic
+# build menu images
+for MENU_IMAGE in ${AVAILABLE_MENU_IMAGES}; do
+  build_icon "${CURRENT_DIR}/menu_${MENU_IMAGE}.svg" "${ASSETS_DIR}/menu/${MENU_IMAGE}.png"
+done
diff --git a/icons/build_game_icons.sh b/icons/build_game_icons.sh
deleted file mode 100755
index 218080d1eb12952690ba1e182a468f6e3cf03d65..0000000000000000000000000000000000000000
--- a/icons/build_game_icons.sh
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /bin/bash
-
-# Check dependencies
-command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
-command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
-command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
-
-CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-BASE_DIR="$(dirname "${CURRENT_DIR}")"
-ASSETS_DIR="${BASE_DIR}/assets"
-
-OPTIPNG_OPTIONS="-preserve -quiet -o7"
-ICON_SIZE=192
-
-#######################################################
-
-# Game images
-AVAILABLE_GAME_IMAGES="
-"
-
-# Settings images
-AVAILABLES_GAME_SETTINGS="
-"
-
-#######################################################
-
-# optimize svg
-function optimize_svg() {
-  SOURCE="$1"
-
-  cp ${SOURCE} ${SOURCE}.tmp
-  scour \
-      --remove-descriptive-elements \
-      --enable-id-stripping \
-      --enable-viewboxing \
-      --enable-comment-stripping \
-      --nindent=4 \
-      --quiet \
-      -i ${SOURCE}.tmp \
-      -o ${SOURCE}
-  rm ${SOURCE}.tmp
-}
-
-# build icons
-function build_icon() {
-  SOURCE="$1"
-  TARGET="$2"
-
-  echo "Building ${TARGET}"
-
-  if [ ! -f "${SOURCE}" ]; then
-    echo "Missing file: ${SOURCE}"
-    exit 1
-  fi
-
-  optimize_svg "${SOURCE}"
-
-  inkscape \
-      --export-width=${ICON_SIZE} \
-      --export-height=${ICON_SIZE} \
-      --export-filename=${TARGET} \
-      ${SOURCE}
-
-  optipng ${OPTIPNG_OPTIONS} ${TARGET}
-}
-
-function build_settings_icons() {
-  INPUT_STRING="$1"
-
-  SETTING_NAME="$(echo "${INPUT_STRING}" | cut -d":" -f1)"
-  SETTING_VALUES="$(echo "${INPUT_STRING}" | cut -d":" -f2 | tr "," " ")"
-
-  for SETTING_VALUE in ${SETTING_VALUES}
-  do
-    SETTING_CODE="${SETTING_NAME}_${SETTING_VALUE}"
-    build_icon ${CURRENT_DIR}/${SETTING_CODE}.svg ${ASSETS_DIR}/icons/${SETTING_CODE}.png
-  done
-}
-
-#######################################################
-
-# Create output folders
-mkdir -p ${ASSETS_DIR}/icons
-
-# Delete existing generated images
-find ${ASSETS_DIR}/icons -type f -name "*.png" -delete
-
-# build game images
-for GAME_IMAGE in ${AVAILABLE_GAME_IMAGES}
-do
-  build_icon ${CURRENT_DIR}/${GAME_IMAGE}.svg ${ASSETS_DIR}/icons/${GAME_IMAGE}.png
-done
-
-# build settings images
-for GAME_SETTING in ${AVAILABLES_GAME_SETTINGS}
-do
-  build_settings_icons "${GAME_SETTING}"
-done
diff --git a/icons/build_icons.sh b/icons/build_icons.sh
new file mode 100755
index 0000000000000000000000000000000000000000..915a16cb0b0b9b3a7109ef6686af811fc93cb8bb
--- /dev/null
+++ b/icons/build_icons.sh
@@ -0,0 +1,6 @@
+#! /bin/bash
+
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+
+"${CURRENT_DIR}/build_application_icons.sh"
+"${CURRENT_DIR}/build_repository_icons.sh"
diff --git a/icons/build_repository_icons.sh b/icons/build_repository_icons.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b50cfc24693d2a5622ad2a7711815a2eeb41d1ce
--- /dev/null
+++ b/icons/build_repository_icons.sh
@@ -0,0 +1,127 @@
+#! /bin/bash
+
+# Check dependencies
+command -v inkscape >/dev/null 2>&1 || {
+  echo >&2 "I require inkscape but it's not installed. Aborting."
+  exit 1
+}
+command -v scour >/dev/null 2>&1 || {
+  echo >&2 "I require scour but it's not installed. Aborting."
+  exit 1
+}
+command -v optipng >/dev/null 2>&1 || {
+  echo >&2 "I require optipng but it's not installed. Aborting."
+  exit 1
+}
+
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+BASE_DIR="$(dirname "${CURRENT_DIR}")"
+
+SOURCE_ICON="${CURRENT_DIR}/icon.svg"
+SOURCE_FASTLANE="${CURRENT_DIR}/featureGraphic.svg"
+SOURCE_LAUNCH_IMAGE="${CURRENT_DIR}/icon.svg"
+
+OPTIPNG_OPTIONS="-preserve -quiet -o7"
+
+if [ ! -f "${SOURCE_ICON}" ]; then
+  echo "Missing file: ${SOURCE_ICON}"
+fi
+
+if [ ! -f "${SOURCE_FASTLANE}" ]; then
+  echo "Missing file: ${SOURCE_FASTLANE}"
+fi
+
+if [ ! -f "${SOURCE_LAUNCH_IMAGE}" ]; then
+  echo "Missing file: ${SOURCE_LAUNCH_IMAGE}"
+fi
+
+function optimize_svg() {
+  SVG="$1"
+
+  cp "${SVG}" "${SVG}.tmp"
+  scour \
+    --remove-descriptive-elements \
+    --enable-id-stripping \
+    --enable-viewboxing \
+    --enable-comment-stripping \
+    --nindent=4 \
+    --quiet \
+    -i "${SVG}.tmp" \
+    -o "${SVG}"
+  rm "${SVG}.tmp"
+}
+
+# optimize source svg files
+optimize_svg "${SOURCE_ICON}"
+optimize_svg "${SOURCE_FASTLANE}"
+optimize_svg "${SOURCE_LAUNCH_IMAGE}"
+
+# build icons
+function build_application_icon() {
+  ICON_SIZE="$1"
+  TARGET="$2"
+
+  echo "Building ${TARGET}"
+
+  TARGET_PNG="${TARGET}.png"
+
+  inkscape \
+    --export-width="${ICON_SIZE}" \
+    --export-height="${ICON_SIZE}" \
+    --export-filename="${TARGET_PNG}" \
+    "${SOURCE_ICON}"
+
+  optipng ${OPTIPNG_OPTIONS} "${TARGET_PNG}"
+}
+
+# build fastlane image
+function build_fastlane_image() {
+  WIDTH="$1"
+  HEIGHT="$2"
+  TARGET="$3"
+
+  echo "Building ${TARGET}"
+
+  TARGET_PNG="${TARGET}.png"
+
+  inkscape \
+    --export-width="${WIDTH}" \
+    --export-height="${HEIGHT}" \
+    --export-filename="${TARGET_PNG}" \
+    "${SOURCE_FASTLANE}"
+
+  optipng ${OPTIPNG_OPTIONS} "${TARGET_PNG}"
+}
+
+# build launch images (splash screen)
+function build_launch_image() {
+  ICON_SIZE="$1"
+  TARGET="$2"
+
+  echo "Building ${TARGET}"
+
+  TARGET_PNG="${TARGET}.png"
+
+  inkscape \
+    --export-width="${ICON_SIZE}" \
+    --export-height="${ICON_SIZE}" \
+    --export-filename="${TARGET_PNG}" \
+    "${SOURCE_LAUNCH_IMAGE}"
+
+  optipng ${OPTIPNG_OPTIONS} "${TARGET_PNG}"
+}
+
+build_application_icon 72 "${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher"
+build_application_icon 48 "${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher"
+build_application_icon 96 "${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher"
+build_application_icon 144 "${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher"
+build_application_icon 192 "${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher"
+build_application_icon 512 "${BASE_DIR}/fastlane/metadata/android/en-US/images/icon"
+
+build_launch_image 72 "${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/launch_image"
+build_launch_image 48 "${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/launch_image"
+build_launch_image 96 "${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/launch_image"
+build_launch_image 144 "${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/launch_image"
+build_launch_image 192 "${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/launch_image"
+
+build_fastlane_image 1024 500 "${BASE_DIR}/fastlane/metadata/android/en-US/images/featureGraphic"
diff --git a/icons/menu_demo.svg b/icons/menu_demo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f1ae7ea305291e00e6aee70d3d813a44cecde5ba
--- /dev/null
+++ b/icons/menu_demo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient id="radialGradient876" cx="51" cy="51" r="51" gradientUnits="userSpaceOnUse"><stop stop-color="#94bc4f" offset=".53489"/><stop stop-color="#e84e34" offset="1"/></radialGradient></defs><rect x="1" y="1" width="100" height="100" ry="0" fill="url(#radialGradient876)" stroke="#000" stroke-width="2"/><path d="m50.952 32.393c1.3622-0.0046 4.9652 11.398 6.07 12.195 1.1048 0.79696 13.062 0.61914 13.487 1.9133s-9.3059 8.2444-9.7225 9.5414c-0.41657 1.297 3.4475 12.614 2.3481 13.418-1.0993 0.80441-10.717-6.3028-12.079-6.2982-1.3622 0.0046-10.931 7.1767-12.036 6.3797s2.6827-12.14 2.2574-13.434c-0.42533-1.2941-10.203-8.1785-9.7868-9.4754 0.41657-1.297 12.375-1.2 13.474-2.0044s4.6252-12.231 5.9874-12.236z" fill="#fff" stroke="#030303" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="6" stroke-width="3.3"/></svg>
diff --git a/lib/main.dart b/lib/main.dart
index a8c43d24bae4da3c44a22531974c4340f08b7bb4..10751510ec1e00e9d66bcff90bc80ad7c140c251 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,65 +1,49 @@
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:provider/provider.dart';
+
+import 'package:random/provider/data.dart';
+import 'package:random/screens/demo.dart';
+import 'package:random/screens/home.dart';
 
 void main() {
-  runApp(MyApp());
+  WidgetsFlutterBinding.ensureInitialized();
+  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
+      .then((value) => runApp(MyApp()));
 }
 
 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
-    return MaterialApp(
-      title: 'Flutter Demo',
-      theme: ThemeData(
-        primarySwatch: Colors.blue,
-      ),
-      home: MyHomePage(title: 'Flutter Demo Home Page'),
-    );
-  }
-}
-
-class MyHomePage extends StatefulWidget {
-  MyHomePage({Key? key, required this.title}) : super(key: key);
-
-  final String title;
-
-  @override
-  _MyHomePageState createState() => _MyHomePageState();
-}
-
-class _MyHomePageState extends State<MyHomePage> {
-  int _counter = 0;
-
-  void _incrementCounter() {
-    setState(() {
-      _counter++;
-    });
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        title: Text(widget.title),
-      ),
-      body: Center(
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            Text(
-              'You have pushed the button this many times:',
-            ),
-            Text(
-              '$_counter',
-              style: Theme.of(context).textTheme.headline4,
-            ),
-          ],
-        ),
-      ),
-      floatingActionButton: FloatingActionButton(
-        onPressed: _incrementCounter,
-        tooltip: 'Increment',
-        child: Icon(Icons.add),
-      ),
+    return ChangeNotifierProvider(
+      create: (BuildContext context) => Data(),
+      child: Consumer<Data>(builder: (context, data, child) {
+        return MaterialApp(
+          title: 'Jeux de mots et lettres',
+          theme: ThemeData(
+            primarySwatch: Colors.blue,
+          ),
+          home: Home(),
+          onGenerateRoute: (settings) {
+            switch (settings.name) {
+              case '/demo':
+                {
+                  return MaterialPageRoute(
+                    builder: (context) => DemoPage(),
+                  );
+                }
+
+              default:
+                {
+                  print("Unknown menu entry: " + settings.name.toString());
+                }
+                break;
+            }
+
+            return null;
+          },
+        );
+      }),
     );
   }
 }
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
new file mode 100644
index 0000000000000000000000000000000000000000..6b8cf9f7183f446608ffaeb4e75eb746ec68c76c
--- /dev/null
+++ b/lib/provider/data.dart
@@ -0,0 +1,3 @@
+import 'package:flutter/foundation.dart';
+
+class Data extends ChangeNotifier {}
diff --git a/lib/screens/demo.dart b/lib/screens/demo.dart
new file mode 100644
index 0000000000000000000000000000000000000000..82e0985d3dc2f78072874872fb4a519039458956
--- /dev/null
+++ b/lib/screens/demo.dart
@@ -0,0 +1,50 @@
+import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+
+import 'package:random/provider/data.dart';
+
+class DemoPage extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    Data myProvider = Provider.of<Data>(context);
+
+    Scaffold pageContent = Scaffold(
+      appBar: AppBar(
+        elevation: 0,
+        actions: <Widget>[
+          IconButton(
+            icon: const Icon(Icons.loop),
+            onPressed: () => print(myProvider),
+          ),
+        ],
+      ),
+      backgroundColor: Colors.blue,
+      body: Center(
+        child: Column(
+          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+          crossAxisAlignment: CrossAxisAlignment.center,
+          mainAxisSize: MainAxisSize.max,
+          children: <Widget>[
+            Text('TOP'),
+            SizedBox(height: 2),
+            Text('BOTTOM'),
+          ],
+        ),
+      ),
+    );
+
+    return SizedBox.expand(
+      child: Container(
+        child: FittedBox(
+          fit: BoxFit.contain,
+          alignment: Alignment.center,
+          child: SizedBox(
+            height: (MediaQuery.of(context).size.height),
+            width: (MediaQuery.of(context).size.width),
+            child: pageContent,
+          ),
+        ),
+      ),
+    );
+  }
+}
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
new file mode 100644
index 0000000000000000000000000000000000000000..d8705c7f5faabaefd9b865d9d8476ecaa0fbc93e
--- /dev/null
+++ b/lib/screens/home.dart
@@ -0,0 +1,65 @@
+import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+
+import 'package:random/provider/data.dart';
+
+class Home extends StatelessWidget {
+  static const String id = 'home';
+
+  Future<void> resetGame(Data myProvider) async {}
+
+  @override
+  Widget build(BuildContext context) {
+    Data myProvider = Provider.of<Data>(context);
+
+    Container _buildMenuItemContainer(String code, Color color) {
+      double imageSize = 150;
+
+      String imageAsset = 'assets/menu/' + code + '.png';
+
+      return Container(
+        margin: EdgeInsets.all(2),
+        decoration: BoxDecoration(
+          borderRadius: BorderRadius.circular(8),
+          border: Border.all(
+            color: Colors.teal,
+            width: 8,
+          ),
+        ),
+        child: TextButton(
+          style: TextButton.styleFrom(
+            padding: EdgeInsets.all(15),
+            backgroundColor: color,
+          ),
+          child: Image(
+            image: AssetImage(imageAsset),
+            width: imageSize,
+            height: imageSize,
+            fit: BoxFit.fill,
+          ),
+          onPressed: () {
+            resetGame(myProvider);
+            Navigator.pushNamed(
+              context,
+              '/' + code,
+            );
+          },
+        ),
+      );
+    }
+
+    return Scaffold(
+      backgroundColor: Colors.blue,
+      body: Center(
+        child: Column(
+          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+          crossAxisAlignment: CrossAxisAlignment.center,
+          mainAxisSize: MainAxisSize.max,
+          children: <Widget>[
+            _buildMenuItemContainer('demo', Colors.pink),
+          ],
+        ),
+      ),
+    );
+  }
+}
diff --git a/pubspec.lock b/pubspec.lock
index e15edce13a498487cca3027f244fac391b740de3..8fc5a8be536a232a6b5e8c14643147d7083bb92d 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -74,6 +74,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
+  nested:
+    dependency: transitive
+    description:
+      name: nested
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
   path:
     dependency: transitive
     description:
@@ -81,6 +88,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.2"
+  provider:
+    dependency: "direct main"
+    description:
+      name: provider
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "6.0.4"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -137,3 +151,4 @@ packages:
     version: "2.1.2"
 sdks:
   dart: ">=2.17.0-0 <3.0.0"
+  flutter: ">=1.16.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 7d2d72d0ca7055e53d62371f0867b25578e6979c..35e4ed17f4d9fa0e42e12ceb787ef36a6ba9fecd 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: random
 description: A random application.
-publish_to: 'none'
+publish_to: "none"
 version: 1.0.0+1
 
 environment:
@@ -9,6 +9,7 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
+  provider: ^6.0.2
 
 dev_dependencies:
   flutter_test:
@@ -16,3 +17,5 @@ dev_dependencies:
 
 flutter:
   uses-material-design: true
+  assets:
+    - assets/menu/