diff --git a/controllers/default.py b/controllers/default.py
index d971f34c36ea6849cf5f4a9aa615493ca6c818e2..3f780d06b07954e95264a4ff5b4f5053b2ae6381 100644
--- a/controllers/default.py
+++ b/controllers/default.py
@@ -1,4 +1,4 @@
 import random
 
 def index():
-    return dict(var=random.random(), meta=db(db.Meta).select().first())
+    return dict()
diff --git a/controllers/player.py b/controllers/player.py
new file mode 100644
index 0000000000000000000000000000000000000000..12d94937c091eff6b5c1f3f8c60b9d10b1cb791f
--- /dev/null
+++ b/controllers/player.py
@@ -0,0 +1,26 @@
+from parameter_util import JSON_BODY, JSON_CONTAINS
+from http_util import FAIL, CODE_JSON, CODE_MISSING, CODE_SEMANTIC, CODE_GONE, CODE_NOTFOUND
+from room_util import ROOM_GET_CODE
+
+def create():
+    parameters = JSON_BODY(request)
+
+    if parameters == None:
+        return(FAIL(CODE_JSON))
+
+    if not JSON_CONTAINS(parameters, [('room_code', str), ('user_name', str)]):
+        return(FAIL(CODE_MISSING))
+
+    room_code = parameters["room_code"]
+    user_name = parameters["user_name"]
+
+    if (len(room_code) != 4) or (len(user_name) == 0) or (len(user_name) > 15):
+        return(FAIL(CODE_SEMANTIC))
+
+    room_record = ROOM_GET_CODE(room_code)
+
+    if not room_record:
+        return(FAIL(CODE_NOTFOUND))
+
+    db.Player.insert(name=user_name, room_id=room_record.id)
+    return(200)
diff --git a/modules/http_util.py b/modules/http_util.py
index 3a9ca102d8f817d4b21ce611468624a3abda09eb..2a08f645d48a89ee8442fd9f4bb39ef2f306bae9 100644
--- a/modules/http_util.py
+++ b/modules/http_util.py
@@ -4,6 +4,7 @@ CODE_MISSING = 400
 CODE_JSON = 406
 CODE_GONE = 410
 CODE_SEMANTIC = 422
+CODE_NOTFOUND = 404
 
 def FAIL(_code):
     current.response.status = _code
diff --git a/modules/room_util.py b/modules/room_util.py
index 13290b8fb994f2490985bf05dfcd934098b5c914..a3c47314849b30e1db96ca6569d2a94cf10854a0 100644
--- a/modules/room_util.py
+++ b/modules/room_util.py
@@ -12,6 +12,15 @@ def ROOM_GET(_id, _password):
     return(room_record)
 
 
+def ROOM_GET_CODE(_code):
+    room_record = current.db((current.db.Room.code == _code) & (current.db.Room.closed == False)).select().first()
+
+    if not room_record:
+        return(None)
+
+    return(room_record)
+
+
 def PLAYERS_GET(_room):
     rows = current.db(current.db.Player.room_id == _room.id).select(orderby=current.db.Player.id)
 
diff --git a/static/css/base.css b/static/css/base.css
new file mode 100644
index 0000000000000000000000000000000000000000..1055cf2e0e3343dbe7f18189e13e99366c01db2d
--- /dev/null
+++ b/static/css/base.css
@@ -0,0 +1,18 @@
+#footer {
+    position: fixed;
+
+    left: 0px;
+    bottom: 0px;
+    width: 100%;
+
+    margin-top: 20px;
+    padding: 5px;
+
+    background-color: gray;
+    text-align: center;
+}
+
+#footer a {
+    color: white;
+    text-decoration: none;
+}
diff --git a/static/css/client.css b/static/css/client.css
new file mode 100644
index 0000000000000000000000000000000000000000..d8f9aa62ce986da05e9cdc269b0c0e8ad69d3b0c
--- /dev/null
+++ b/static/css/client.css
@@ -0,0 +1,4 @@
+body {
+    text-align: center;
+    background-color: lightgrey;
+}
diff --git a/static/js/ajax.js b/static/js/ajax.js
new file mode 100644
index 0000000000000000000000000000000000000000..4268188091aa0119492177402f986df25336a95f
--- /dev/null
+++ b/static/js/ajax.js
@@ -0,0 +1,15 @@
+function AJAX_JSON(_url, _payload, _returnFunction) {
+    $.ajax({
+            type: 'POST',
+            url: _url,
+            dataType: 'json',
+            data: JSON.stringify(_payload),
+            contentType : 'application/json',
+            success: function(data) {
+                _returnFunction(200, data);
+            },
+            error: function(xhr, statusText, errorThrown){
+                _returnFunction(xhr.status, errorThrown);
+            }
+    });
+}
diff --git a/views/default/index.html b/views/default/index.html
index 788800143577d87f67ce78ff065930a84853afa3..0a2a625bdf28cd972420293dd613a016d044fadd 100644
--- a/views/default/index.html
+++ b/views/default/index.html
@@ -1,8 +1,23 @@
-<html>
-	<body>
-		This is a test {{=var}}<br><br>
-        This is commit <b>{{=meta.git_commit[:10] if len(meta.git_commit) > 10 else meta.git_commit}}</b> from <b>{{=meta.git_date}}</b> show on
-        <a href="https://git.noc.ruhr-uni-bochum.de/studienprojekt-ss20/lynchburg-server/-/commit/{{=meta.git_commit}}">GitLab</a><br>
-        Database from: {{=meta.creation}}
-	</body>
-</html>
+{{extend 'layout.html'}}
+
+{{block head}}
+<link rel="stylesheet" type="text/css" href="{{=URL('static/css', 'client.css')}}">
+{{end}}
+
+<div id="current_content">
+    <form id="form_login">
+        <input type="text" id="room_code" placeholder="Room Code" maxlength="4"><br><br>
+        <input type="text" id="user_name" placeholder="User Name" maxlength="15"><br><br>
+        <input type="submit" value="Enter">
+    </form>
+</div>
+
+{{block page_js}}
+<script type="text/javascript">
+    $("#form_login").on("submit", function(){
+        var payload = {"room_code": $("#room_code").val(), "user_name": $("#user_name").val()}
+        AJAX_JSON("{{=URL('player', 'create')}}", payload, function(code, data){alert(code);});
+        return false;
+    });
+</script>
+{{end}}
diff --git a/views/layout.html b/views/layout.html
index ded03bfd837c1a48f368be18dc23ec42a32710c9..ec20e883bbd05ac5181b641c3076d0724a0577e8 100644
--- a/views/layout.html
+++ b/views/layout.html
@@ -2,9 +2,25 @@
     <head>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <link rel="stylesheet" type="text/css" href="{{=URL('static/css', 'base.css')}}">
         <script src="{{=URL('static','js/jquery.js')}}" type="text/javascript"></script>
+        <script src="{{=URL('static','js/ajax.js')}}" type="text/javascript"></script>
+
+        {{block head}}{{end head}}
     </head>
     <body>
+
+        <!-- Page Content -->
         {{include}}
+        <!-- ======================== -->
+
+        <div id="footer">
+            [ <a href="{{=URL('default', 'index')}}">WebClient</a> ]
+            [ <a href="{{=URL('debug', 'index')}}">Debug</a> ]
+            [ <a href="https://git.noc.ruhr-uni-bochum.de/studienprojekt-ss20">GitLab</a> ]
+        <!-- Page specific JavaScript -->
+        {{block page_js}}{{end page_js}}
+        <!-- ======================== -->
+
     </body>
 </html>