diff --git a/LICENSE b/LICENSE
index adb0f049cef97c77fc32907ac5a53395a9f9b3f1..aa886076688c17a10c97645f2141bf5196717103 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,8 @@
 MIT License
 
 Copyright (c) 2019 Dominik George <dominik.george@teckids.org>
+Copyright (c) 2019 Tom Teichler <tom.teichler@teckids.org>
+Copyright (c) 2019 Martin Gummi <martin.gummi@teckids.org>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/biscuit/core/locale/de/LC_MESSAGES/django.po b/biscuit/core/locale/de/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..1cf3588bda95bf1e63becc27f4d4953d0867881a
--- /dev/null
+++ b/biscuit/core/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,137 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BiscuIT - School Information System (SIS)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-07-17 01:40+0200\n"
+"PO-Revision-Date: 2019-07-17 01:48+0200\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.2.3\n"
+
+#: biscuit/core/menus.py:14
+msgid "Interfaces"
+msgstr "Schnittstellen"
+
+#: biscuit/core/menus.py:18 biscuit/core/templates/core/persons.html:5
+msgid "Persons"
+msgstr "Personen"
+
+#: biscuit/core/models.py:10
+msgid "female"
+msgstr "weiblich"
+
+#: biscuit/core/models.py:11
+msgid "male"
+msgstr "männlich"
+
+#: biscuit/core/models.py:15
+msgid "Is person active?"
+msgstr "Ist die Person aktiv?"
+
+#: biscuit/core/models.py:17
+msgid "First name"
+msgstr "Vorname"
+
+#: biscuit/core/models.py:18
+msgid "Last name"
+msgstr "Nachname"
+
+#: biscuit/core/models.py:20
+msgid "Additional name(s)"
+msgstr "Zusätzliche Namen"
+
+#: biscuit/core/models.py:23
+msgid "Short name"
+msgstr "Kurzname"
+
+#: biscuit/core/models.py:26
+msgid "Street"
+msgstr "Straße"
+
+#: biscuit/core/models.py:28
+msgid "Street number"
+msgstr "Hausnummer"
+
+#: biscuit/core/models.py:30
+msgid "Postal code"
+msgstr "Postleitzahl"
+
+#: biscuit/core/models.py:32
+msgid "Place"
+msgstr "Ort"
+
+#: biscuit/core/models.py:34
+msgid "Home phone"
+msgstr "Festnetz"
+
+#: biscuit/core/models.py:36
+msgid "Mobile phone"
+msgstr "Handy"
+
+#: biscuit/core/models.py:38
+msgid "E-mail address"
+msgstr "E-Mail-Adresse"
+
+#: biscuit/core/models.py:41
+msgid "Date of birth"
+msgstr "Geburtsdatum"
+
+#: biscuit/core/models.py:43
+msgid "Sex"
+msgstr "Geschlecht"
+
+#: biscuit/core/models.py:45
+msgid "Photo"
+msgstr "Foto"
+
+#: biscuit/core/models.py:48
+msgid "Reference ID of import source"
+msgstr "Referenz-ID der Import-Quelle"
+
+#: biscuit/core/models.py:50
+msgid "Guardians / Parents"
+msgstr "Erziehungsberechtigte / Eltern"
+
+#: biscuit/core/models.py:59
+msgid "Long name of group"
+msgstr "Langer Name der Gruppe"
+
+#: biscuit/core/models.py:61
+msgid "Short name of group"
+msgstr "Kurzer Name der Gruppe"
+
+#: biscuit/core/templates/core/person.html:10
+msgid "Edit person"
+msgstr "Person editiern"
+
+#: biscuit/core/templates/core/person.html:13
+msgid "Contact details"
+msgstr "Kontaktdetails"
+
+#: biscuit/core/templates/core/person.html:75
+msgid "Person not found"
+msgstr "Person nicht gefunden"
+
+#: biscuit/core/templates/core/person.html:78
+msgid ""
+"\n"
+"    There is no person with this id.\n"
+"   "
+msgstr ""
+"\n"
+"    Es existiert keine Person mit dieser ID.\n"
+"   "
+
+#: biscuit/core/templates/core/persons.html:9
+msgid "List of all persons"
+msgstr "Liste aller Personen"
diff --git a/biscuit/core/static/css/style.css b/biscuit/core/static/css/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..e74da43733d521bde563adfb94b4f4bf5a6465e4
--- /dev/null
+++ b/biscuit/core/static/css/style.css
@@ -0,0 +1,3 @@
+img.person-img {
+        max-height: 300px;
+}
diff --git a/biscuit/core/static/img/fallback.png b/biscuit/core/static/img/fallback.png
new file mode 100644
index 0000000000000000000000000000000000000000..a39964ba07f9a6aea6b53943f8e79199cb204c87
Binary files /dev/null and b/biscuit/core/static/img/fallback.png differ
diff --git a/biscuit/core/tables.py b/biscuit/core/tables.py
index 5d6f480c2031ec85750c017a3ed1c89d1c5b3412..f4a8e508a4af78c69c81d75a77c00d2b1b3249e8 100644
--- a/biscuit/core/tables.py
+++ b/biscuit/core/tables.py
@@ -1,11 +1,11 @@
 from django.utils.translation import ugettext_lazy as _
 import django_tables2 as tables
-#from django_tables2.utils import A
+from django_tables2.utils import A
 
 
 class PersonsTable(tables.Table):
     class Meta:
         attrs = {'class': 'table table-striped table-bordered table-hover table-responsive-xl'}
 
-    first_name = tables.Column(verbose_name=_('First name'))
-    last_name = tables.Column(verbose_name=_('Last name'))
+    first_name = tables.LinkColumn('person_by_id', args=[A('id')])
+    last_name = tables.LinkColumn('person_by_id', args=[A('id')])
diff --git a/biscuit/core/templates/core/base.html b/biscuit/core/templates/core/base.html
index a55cafdddc8a1f8988fc69a43756851b1c05eb83..320c744556f6d6905c85ddfc11dbdceb7916ee41 100644
--- a/biscuit/core/templates/core/base.html
+++ b/biscuit/core/templates/core/base.html
@@ -5,8 +5,9 @@
 {% block bootstrap4_title %}BiscuIT School Information System{% endblock %}
 
 {% block bootstrap4_extra_head %}
+ {% fa_css %}
  {% include_css "DataTables-Bootstrap4" %}
- <link rel="stylesheet" href="{% static 'style.css' %}" />
+ <link rel="stylesheet" href="{% static 'css/style.css' %}" />
  <link rel="shortcut icon" href="#" />
 {% endblock %}
 
diff --git a/biscuit/core/templates/core/person.html b/biscuit/core/templates/core/person.html
new file mode 100644
index 0000000000000000000000000000000000000000..af0dc931229f7db879629fee4e2c7e09f2193b61
--- /dev/null
+++ b/biscuit/core/templates/core/person.html
@@ -0,0 +1,83 @@
+{% extends "core/base.html" %}
+{% load bootstrap4 font_awesome i18n staticfiles %}
+
+{% block content %}
+<div class="col-sm-12 col-md-12">
+ {% if person %}
+  <h2>{{ person.first_name }} {{ person.last_name }}</h2>
+  <p>
+   <a href="{{ '#' }}">
+    {% blocktrans %}Edit person{% endblocktrans %}
+   </a>
+  </p>
+  <h3>{% blocktrans %}Contact details{% endblocktrans %}</h3>
+  <table class="table table-responsive-xl table-border table-striped">
+   <tr>
+    <td rowspan="6">
+     {% if person.photo %}
+      <img class="person-img" src="{{ person.photo.url }}" alt="{{ person.first_name }} {{ person.last_name }}" />
+     {% else %}
+      <img class="person-img" src="{% static 'img/fallback.png' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
+     {% endif %}
+    </td>
+    <td>{% fa 'user' %}</td>
+    <td>{{ person.first_name }}</td>
+    <td>{{ person.additional_name }}</td>
+    <td>{{ person.last_name }}</td>
+   </tr>
+   <tr>
+    <td>{% fa 'venus-mars' %}</td>
+    <td colspan="3">{{ person.get_sex_display }}</td>
+   </tr>
+   <tr>
+    <td>{% fa 'fa-home' %}</td>
+    <td colspan="2">{{ person.street }} {{ person.housenumber }}</td>
+    <td colspan="2">{{ person.postal_code }} {{ person.place }}</td>
+   </tr>
+   <tr>
+    <td>{% fa 'phone-square' %}</td>
+    <td>{{ person.phone_number }}</td>
+    <td>{{ person.mobile_number }}</td>
+   </tr>
+   <tr>
+    <td>{% fa 'envelope' %}</td>
+    <td colspan="3">{{ person.email }}</td>
+   </tr>
+   <tr>
+    <td>{% fa 'gift' %}</td>
+    <td colspan="3">{{ person.date_of_birth|date }}</td>
+   </tr>
+   {% comment %}
+   <tr>
+    <td>{% fa 'graduation-cap' %}</td>
+    <td>Class</td>
+    <td>Teacher</td>
+   </tr>
+   {% endcomment %}
+  </table>
+
+  {# Will be implemted soon #}
+  <table class="table table-responsive-xl table-border table-striped">
+   <tr>
+    <td>Member</td>
+     <td>
+      <h4>Groups</h4>
+      <ul>
+       <li><a href="#">Foo</a></li>
+       <li><a href="#">Foo</a></li>
+       <li><a href="#">Foo</a></li>
+       <li><a href="#">Foo</a></li>
+     </td>
+   </tr> 
+  </table>
+ {% else %}
+  <h2>{% blocktrans %}Person not found{% endblocktrans %}</h2>
+
+  <p>
+   {% blocktrans %}
+    There is no person with this id.
+   {% endblocktrans %}
+  </p>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/biscuit/core/urls.py b/biscuit/core/urls.py
index cde54b7e54b1bd3dec3b4ca10275023518aa4e1c..8edfec2230df9f94650ca96bf12b83f9548029c6 100644
--- a/biscuit/core/urls.py
+++ b/biscuit/core/urls.py
@@ -10,6 +10,8 @@ urlpatterns = [
     path('admin/', admin.site.urls),
     path('accounts/', include('django.contrib.auth.urls')),
     path('persons', views.persons, name='persons'),
+    path('person', views.person, name='person'),
+    path('person/<int:id_>', views.person, name='person_by_id'),
     path('person_card/<int:id>', views.person_card, name='person_card_by_id'),
     path('', views.index, name='index'),
 ]
diff --git a/biscuit/core/views.py b/biscuit/core/views.py
index a62f6a4777d57329be466a07979a35e4e71f9008..138b7d76a88bcfb688dd281306fec648163fc8f5 100644
--- a/biscuit/core/views.py
+++ b/biscuit/core/views.py
@@ -1,14 +1,18 @@
 from django.contrib.auth.decorators import login_required
-from django.shortcuts import render
-from django_tables2 import RequestConfig
+from django.utils.translation import gettext as _
 from django.http import Http404
+from django.shortcuts import redirect, render
+from django_tables2 import RequestConfig
+from django.urls import reverse
 from .models import Person
 from .tables import PersonsTable
 
+
 def index(request):
     context = {}
     return render(request, 'core/index.html', context)
 
+
 @login_required
 def persons(request):
     context = {}
@@ -23,6 +27,7 @@ def persons(request):
 
     return render(request, 'core/persons.html', context)
 
+
 @login_required
 def person_card(request, id=None):
     context = {}
@@ -34,10 +39,23 @@ def person_card(request, id=None):
     # Get person and check access
     try:
         person = Person.objects.get(id=id)
-    except ObjectDoesNotExist as e:
+    except Person.DoesNotExist as e:
+        # Turn not-found object into a 404 error
+        raise Http404 from e
+
+    return render(request, 'core/person_card.html', context)
+
+
+def person(request, id_):
+    context = {}
+
+    # Get person and check access
+    try:
+        person = Person.objects.get(pk=id_)
+    except Person.DoesNotExist as e:
         # Turn not-found object into a 404 error
         raise Http404 from e
 
     context['person'] = person
 
-    return render(request, 'core/person_card.html', context)
+    return render(request, 'core/person.html', context)