diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2a71b46fba5b04b5b228398405dc11074fb2221f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/Pipfile.lock
+/settings.json
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000000000000000000000000000000000000..2b1258fdbf67f955c9b78728e6d66a235d54772e
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,21 @@
+[[source]]
+url = "https://pypi.python.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[[source]]
+url = "https://pypi.thecodelabs.de"
+verify_ssl = true
+name = "TheCodeLabs"
+
+[requires]
+python_version = "3"
+
+[packages]
+flask = "==1.1.2"
+gevent = "==20.6.1"
+TheCodeLabs-BaseUtils = "*"
+TheCodeLabs-FlaskUtils = "*"
+python-jenkins = "==1.5.0"
+
+[dev-packages]
diff --git a/settings-example.json b/settings-example.json
new file mode 100644
index 0000000000000000000000000000000000000000..f32efc79dd95f7a0eb9b14749afd4a323d90cc2e
--- /dev/null
+++ b/settings-example.json
@@ -0,0 +1,10 @@
+{
+    "server": {
+        "listen": "0.0.0.0",
+        "port": 10002,
+        "secret": "",
+        "useSSL": false,
+        "keyfile": "",
+        "certfile": ""
+    }
+}
\ No newline at end of file
diff --git a/src/Pipfile b/src/Pipfile
deleted file mode 100644
index 8be94475fbf027a5cd44e1fd9de6cb7cadc6ae41..0000000000000000000000000000000000000000
--- a/src/Pipfile
+++ /dev/null
@@ -1,10 +0,0 @@
-[[source]]
-url = "https://pypi.python.org/simple"
-verify_ssl = true
-name = "pypi"
-
-[requires]
-python_version = "3.7"
-
-[packages]
-python-jenkins = "==1.5.0"
\ No newline at end of file
diff --git a/src/ProjectLeaf.py b/src/ProjectLeaf.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e88afb3c9de6e7bd3d57394b8bd00d600e0226b
--- /dev/null
+++ b/src/ProjectLeaf.py
@@ -0,0 +1,25 @@
+import os
+
+from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger
+from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp
+
+from blueprints import Routes
+from logic import Constants
+
+LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME)
+
+
+class CarrotCastleWebsite(FlaskBaseApp):
+    SUPPORTED_LANGUAGES = ['en', 'de']
+
+    def __init__(self, appName: str):
+        super().__init__(appName, os.path.dirname(__file__), LOGGER, serveRobotsTxt=True)
+
+    def _register_blueprints(self, app):
+        app.register_blueprint(Routes.construct_blueprint())
+        return app
+
+
+if __name__ == '__main__':
+    website = CarrotCastleWebsite(Constants.APP_NAME)
+    website.start_server()
diff --git a/src/blueprints/Routes.py b/src/blueprints/Routes.py
new file mode 100644
index 0000000000000000000000000000000000000000..98b46f24dcef76cae743cdb39d9712e0e972ff78
--- /dev/null
+++ b/src/blueprints/Routes.py
@@ -0,0 +1,11 @@
+from flask import Blueprint, render_template
+
+
+def construct_blueprint():
+    routes = Blueprint('routes', __name__)
+
+    @routes.route('/', methods=['GET'])
+    def index():
+        return render_template('index.html')
+
+    return routes
diff --git a/src/services/__init__.py b/src/blueprints/__init__.py
similarity index 100%
rename from src/services/__init__.py
rename to src/blueprints/__init__.py
diff --git a/src/logic/Constants.py b/src/logic/Constants.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c42f3d0ed89926f3910617b88299297924fca92
--- /dev/null
+++ b/src/logic/Constants.py
@@ -0,0 +1,4 @@
+import os
+
+APP_NAME = 'ProjectLeaf'
+ROOT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
\ No newline at end of file
diff --git a/src/Image.py b/src/logic/Image.py
similarity index 100%
rename from src/Image.py
rename to src/logic/Image.py
diff --git a/src/Main.py b/src/logic/Main.py
similarity index 97%
rename from src/Main.py
rename to src/logic/Main.py
index fe9b36b03dde4dd91ddb98a1bb843fb2e84ff6a0..3b905395c7ca9e2ce6ffd7a1d7031d9afc25b174 100644
--- a/src/Main.py
+++ b/src/logic/Main.py
@@ -7,7 +7,7 @@ import time
 
 from PIL import Image, ImageDraw, ImageFont
 
-from Image import DebugImage, EPDImage, AbstractImage
+from logic.Image import DebugImage, EPDImage, AbstractImage
 from libs.lib.waveshare_epd import epd4in2bc
 
 logging.basicConfig(level=logging.DEBUG)
diff --git a/src/logic/__init__.py b/src/logic/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/services/JenkinsService.py b/src/logic/services/JenkinsService.py
similarity index 100%
rename from src/services/JenkinsService.py
rename to src/logic/services/JenkinsService.py
diff --git a/src/logic/services/__init__.py b/src/logic/services/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/static/css/main.css b/src/static/css/main.css
new file mode 100644
index 0000000000000000000000000000000000000000..d8ee3a0e94f3b718b381dbb25f73932048a1d731
--- /dev/null
+++ b/src/static/css/main.css
@@ -0,0 +1,6 @@
+body {
+    background-color: #212121;
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+}
\ No newline at end of file
diff --git a/src/static/js/main.js b/src/static/js/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..bf61691901f56399bf407efe8fef6db3e5710fb6
--- /dev/null
+++ b/src/static/js/main.js
@@ -0,0 +1,6 @@
+function init()
+{
+
+}
+
+init();
\ No newline at end of file
diff --git a/src/templates/index.html b/src/templates/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..add6d57661f5a9d014ccfaecde929df6e5099780
--- /dev/null
+++ b/src/templates/index.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>CarrotCastle</title>
+        {% import 'macros.html' as macros %}
+        {{ macros.header() }}
+    </head>
+
+    <body>
+        <div class="main">
+            <div class="content">
+            </div>
+
+        </div>
+    </body>
+    <script type="text/javascript" src={{ url_for('static', filename='js/main.js') }}></script>
+</html>
diff --git a/src/templates/macros.html b/src/templates/macros.html
new file mode 100644
index 0000000000000000000000000000000000000000..312689384071ffbc2801c8e2471bd85e97004c5c
--- /dev/null
+++ b/src/templates/macros.html
@@ -0,0 +1,10 @@
+{% macro header() -%}
+    <meta charset="UTF-8"/>
+
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link href="{{ url_for('static', filename='libraries/fontawesome/css/all.min.css') }}" rel="stylesheet">
+
+    <link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}"/>
+
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+{%- endmacro %}
diff --git a/src/version.json b/src/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7dfe9f7a2f16edc7694b95c860822ce65156362d
--- /dev/null
+++ b/src/version.json
@@ -0,0 +1,7 @@
+{
+    "version": {
+        "name": "v1.0.0",
+        "code": 1,
+        "date": "05.07.20"
+    }
+}
\ No newline at end of file