diff --git a/schoolapps/dashboard/__init__.py b/schoolapps/dashboard/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/schoolapps/dashboard/admin.py b/schoolapps/dashboard/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..fc4ef21f431cbe731885eaabebf1a1f4bc546e27
--- /dev/null
+++ b/schoolapps/dashboard/admin.py
@@ -0,0 +1,6 @@
+from django.contrib import admin
+from .models import Activity
+
+# Register your models here.
+
+admin.site.register(Activity)
diff --git a/schoolapps/dashboard/apps.py b/schoolapps/dashboard/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..bc6084702acf8de9b788588f5813d689a8bd82bf
--- /dev/null
+++ b/schoolapps/dashboard/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class DashboardConfig(AppConfig):
+    name = 'dashboard'
+    verbose_name = "Dashboard"
diff --git a/schoolapps/dashboard/migrations/0001_initial.py b/schoolapps/dashboard/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b10c48c73f9b9f135de9069b3dc96d0b4973b12
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0001_initial.py
@@ -0,0 +1,22 @@
+# Generated by Django 2.0 on 2017-12-22 11:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Activity',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=200)),
+                ('description', models.TextField(max_length=500)),
+                ('app', models.CharField(max_length=100)),
+            ],
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/0002_activity_user.py b/schoolapps/dashboard/migrations/0002_activity_user.py
new file mode 100644
index 0000000000000000000000000000000000000000..18f9a636db9a88e85a959c28fda5dfb9cd2f5727
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0002_activity_user.py
@@ -0,0 +1,21 @@
+# Generated by Django 2.0 on 2017-12-22 11:33
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('dashboard', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='activity',
+            name='user',
+            field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE,
+                                    to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/0003_activity_created_at.py b/schoolapps/dashboard/migrations/0003_activity_created_at.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0ee7e6c90df5e3be13a7f09caf6cf21303b65f4
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0003_activity_created_at.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0 on 2017-12-22 11:36
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('dashboard', '0002_activity_user'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='activity',
+            name='created_at',
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/__init__.py b/schoolapps/dashboard/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/schoolapps/dashboard/models.py b/schoolapps/dashboard/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..06a491be9135cf1d2cd151b6423a171dda9c65d0
--- /dev/null
+++ b/schoolapps/dashboard/models.py
@@ -0,0 +1,23 @@
+from django.db import models
+from django.contrib.auth.models import User
+from django.utils import timezone
+
+
+def get_default_user():
+    User.objects.get_or_create(username='nouser')
+
+
+# Create your models here.
+
+class Activity(models.Model):
+    user = models.ForeignKey(User, models.CASCADE, default=get_default_user())
+
+    title = models.CharField(max_length=200)
+    description = models.TextField(max_length=500)
+
+    app = models.CharField(max_length=100)
+
+    created_at = models.DateTimeField(default=timezone.now)
+
+    def __str__(self):
+        return self.title
diff --git a/schoolapps/dashboard/tests.py b/schoolapps/dashboard/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6
--- /dev/null
+++ b/schoolapps/dashboard/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/schoolapps/dashboard/views.py b/schoolapps/dashboard/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..0622ce4406239e3cd6071fd7ced063c33304986e
--- /dev/null
+++ b/schoolapps/dashboard/views.py
@@ -0,0 +1,23 @@
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import render
+from .models import Activity
+from .apps import DashboardConfig
+
+
+# Create your views here.
+
+@login_required
+def index(request):
+    # Register visit
+    act = Activity(title="Dashboard aufgerufen", description="Sie haben das Dashboard aufgerufen.",
+                   app=DashboardConfig.verbose_name, user=request.user)
+    act.save()
+
+    # Load activities
+    activities = Activity.objects.filter(user=request.user).order_by('-created_at')
+
+    context = {
+        'activities': activities
+    }
+
+    return render(request, 'index.html', context)