diff --git a/android/gradle.properties b/android/gradle.properties
index a6742fa6ef44a10a2e9382d30dbde8e2665f2c91..53f7ea286da5b592c797927723a89c3f02454457 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.17
-app.versionCode=18
+app.versionName=1.0.18
+app.versionCode=19
diff --git a/assets/menu/graph.png b/assets/menu/graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2224c4ffd3fbe14013888af9fb706ce56c7603f
Binary files /dev/null and b/assets/menu/graph.png differ
diff --git a/icons/build_application_icons.sh b/icons/build_application_icons.sh
index e8512e78b1e31d0e32b433bfc5c7717c89abac7a..776681baf185ca8163ad753482021eef3051919f 100755
--- a/icons/build_application_icons.sh
+++ b/icons/build_application_icons.sh
@@ -26,6 +26,7 @@ ICON_SIZE=192
 # Menu images
 AVAILABLE_MENU_IMAGES="
 demo
+graph
 "
 
 #######################################################
diff --git a/icons/menu_graph.svg b/icons/menu_graph.svg
new file mode 100644
index 0000000000000000000000000000000000000000..cb653f29ce50c75023682cf88c9b22563ef72e26
--- /dev/null
+++ b/icons/menu_graph.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="#534fbc" offset=".53489"/><stop stop-color="#d5e834" offset="1"/></radialGradient></defs><rect x="1" y="1" width="100" height="100" ry="0" fill="url(#radialGradient876)" stroke="#000" stroke-width="2"/><path transform="translate(12.795 -12.378)" d="m41.231 66.406c1.2372-1.351 2.4315 1.0012 2.2454 2.0564-0.50427 2.8593-4.1113 3.4739-6.3581 2.4345-4.0191-1.8593-4.7114-7.1159-2.6236-10.66 3.0639-5.201 10.16-5.9833 14.962-2.8126 6.3992 4.226 7.2698 13.219 3.0017 19.263-5.371 7.6061-16.285 8.5638-23.565 3.1908-8.8179-6.5075-9.8622-19.354-3.3798-27.867 7.6392-10.033 22.425-11.163 32.169-3.5689 11.249 8.768 12.466 25.498 3.758 36.471-9.8949 12.468-28.572 13.77-40.772 3.947-13.687-11.02-15.076-31.647-4.1361-45.074 12.145-14.906 34.723-16.381 49.376-4.3252" fill="none" stroke="#000" stroke-linecap="round" stroke-width="6"/></svg>
diff --git a/lib/main.dart b/lib/main.dart
index 10751510ec1e00e9d66bcff90bc80ad7c140c251..b45097a814031b90c2bb831e08a758ae06024670 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
 
 import 'package:random/provider/data.dart';
 import 'package:random/screens/demo.dart';
+import 'package:random/screens/graph.dart';
 import 'package:random/screens/home.dart';
 
 void main() {
@@ -19,7 +20,7 @@ class MyApp extends StatelessWidget {
       create: (BuildContext context) => Data(),
       child: Consumer<Data>(builder: (context, data, child) {
         return MaterialApp(
-          title: 'Jeux de mots et lettres',
+          title: 'Random application - testing stuff...',
           theme: ThemeData(
             primarySwatch: Colors.blue,
           ),
@@ -32,6 +33,12 @@ class MyApp extends StatelessWidget {
                     builder: (context) => DemoPage(),
                   );
                 }
+              case '/graph':
+                {
+                  return MaterialPageRoute(
+                    builder: (context) => GraphPage(),
+                  );
+                }
 
               default:
                 {
diff --git a/lib/painters/graph_painter.dart b/lib/painters/graph_painter.dart
new file mode 100644
index 0000000000000000000000000000000000000000..38c12994462fd13de15529a993bf6adbcba5ff91
--- /dev/null
+++ b/lib/painters/graph_painter.dart
@@ -0,0 +1,42 @@
+import 'dart:math';
+import 'package:flutter/material.dart';
+
+import 'package:random/provider/data.dart';
+
+class GraphPainter extends CustomPainter {
+  const GraphPainter(this.myProvider);
+
+  final Data myProvider;
+
+  double random(double max) {
+    return Random().nextDouble() * max;
+  }
+
+  @override
+  void paint(Canvas canvas, Size size) {
+    // Fill background
+    final paintBackground = Paint();
+    paintBackground.color = Colors.black;
+    paintBackground.style = PaintingStyle.fill;
+
+    final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height));
+    canvas.drawRect(rectBackground, paintBackground);
+
+    // Draw some lines
+    final paintLine = Paint();
+    paintLine.color = Colors.red;
+    paintLine.style = PaintingStyle.fill;
+
+    int linesCount = 500;
+    for (int i = 0; i < linesCount; i++) {
+      Offset lineStart = Offset(random(size.width), random(size.height));
+      Offset lineStop = Offset(random(size.width), random(size.height));
+      canvas.drawLine(lineStart, lineStop, paintLine);
+    }
+  }
+
+  @override
+  bool shouldRepaint(CustomPainter oldDelegate) {
+    return false;
+  }
+}
diff --git a/lib/screens/demo.dart b/lib/screens/demo.dart
index 82e0985d3dc2f78072874872fb4a519039458956..a9c565652a7eee02dc876cbf1b5930601633b0a5 100644
--- a/lib/screens/demo.dart
+++ b/lib/screens/demo.dart
@@ -4,6 +4,8 @@ import 'package:provider/provider.dart';
 import 'package:random/provider/data.dart';
 
 class DemoPage extends StatelessWidget {
+  static String code = 'demo';
+
   @override
   Widget build(BuildContext context) {
     Data myProvider = Provider.of<Data>(context);
diff --git a/lib/screens/graph.dart b/lib/screens/graph.dart
new file mode 100644
index 0000000000000000000000000000000000000000..9a0ca153a1ba263010e1244e270901c64763c4fe
--- /dev/null
+++ b/lib/screens/graph.dart
@@ -0,0 +1,64 @@
+import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+import 'package:random/painters/graph_painter.dart';
+
+import 'package:random/provider/data.dart';
+
+class GraphPage extends StatelessWidget {
+  static String code = 'graph';
+
+  @override
+  Widget build(BuildContext context) {
+    Data myProvider = Provider.of<Data>(context);
+    double boardWidth = MediaQuery.of(context).size.width;
+
+    Scaffold pageContent = Scaffold(
+      appBar: AppBar(
+        elevation: 0,
+        actions: <Widget>[],
+      ),
+      backgroundColor: Colors.blue,
+      body: SafeArea(
+        child: Column(
+          mainAxisAlignment: MainAxisAlignment.start,
+          crossAxisAlignment: CrossAxisAlignment.center,
+          children: [
+            Center(
+              child: GestureDetector(
+                onTapUp: (details) {
+                  double xTap = details.localPosition.dx;
+                  double yTap = details.localPosition.dy;
+                  print('[' + xTap.toString() + ',' + yTap.toString() + ']');
+                },
+                child: Container(
+                  margin: EdgeInsets.all(4),
+                  padding: EdgeInsets.all(4),
+                  child: CustomPaint(
+                    size: Size(boardWidth, boardWidth),
+                    willChange: false,
+                    painter: GraphPainter(myProvider),
+                    isComplex: true,
+                  ),
+                ),
+              ),
+            ),
+          ],
+        ),
+      ),
+    );
+
+    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
index d8705c7f5faabaefd9b865d9d8476ecaa0fbc93e..2dd7dd607e835816dfbd6ac1436ee3f2e7b94888 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
 import 'package:random/provider/data.dart';
+import 'package:random/screens/demo.dart';
+import 'package:random/screens/graph.dart';
 
 class Home extends StatelessWidget {
   static const String id = 'home';
@@ -56,7 +58,8 @@ class Home extends StatelessWidget {
           crossAxisAlignment: CrossAxisAlignment.center,
           mainAxisSize: MainAxisSize.max,
           children: <Widget>[
-            _buildMenuItemContainer('demo', Colors.pink),
+            _buildMenuItemContainer(DemoPage.code, Colors.pink),
+            _buildMenuItemContainer(GraphPage.code, Colors.lightBlue),
           ],
         ),
       ),