diff --git a/aleksis/apps/paweljong/templates/paweljong/event/detail.html b/aleksis/apps/paweljong/templates/paweljong/event/detail.html
new file mode 100644
index 0000000000000000000000000000000000000000..2820c52e7fac9064fb2253f0011c647d373fdca3
--- /dev/null
+++ b/aleksis/apps/paweljong/templates/paweljong/event/detail.html
@@ -0,0 +1,41 @@
+{# -*- engine:django -*- #}
+
+{% extends "core/base.html" %}
+
+{% load i18n static rules material_form %}
+{% load render_table from django_tables2 %}
+
+{% block browser_title %}{{ event }}{% endblock %}
+
+{% block content %}
+  <h4>{{ event }}</h4>
+
+  {% has_perm 'paweljong.manage_event' user event as can_manage_event %}
+  {% has_perm 'paweljong.delete_event' user event as can_delete_event %}
+  {% has_perm 'paweljong.send_notification_mail' user event as can_send_notification %}
+  {% has_perm 'tezor.view_invoice_rule' user event as can_view_invoice %}
+  {% has_perm 'core.edit_person_rule' user person as can_change_person %}
+
+  {% if can_manage_event or can_manage_event_preferences or can_delete_event or can_send_notification %}
+    <p>
+      {% if can_manage_event %}
+        <a href="{% url 'edit_event_by_pk' event.pk %}" class="btn waves-effect waves-light">
+          <i class="material-icons left iconify" data-icon="mdi:edit"></i>
+          {% trans "Edit" %}
+        </a>
+      {% endif %}
+
+      {% if can_delete_event %}
+        <a href="{% url 'delete_event_by_pk' event.pk %}" class="btn waves-effect waves-light red">
+          <i class="material-icons left iconify" data-icon="mdi:delete"></i>
+          {% trans "Delete" %}
+        </a>
+      {% endif %}
+
+    </p>
+  {% endif %}
+
+  <h5>{% blocktrans %}Registrations</h5>
+  {% render_table registrations_table %}
+
+{% endblock %}
diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py
index 5568600668fe34105b8ceb8f5df8b8f51ef1d0b0..d2dddb9288a406d34884f8f4a04bf940ad51f1ee 100644
--- a/aleksis/apps/paweljong/urls.py
+++ b/aleksis/apps/paweljong/urls.py
@@ -43,6 +43,7 @@ urlpatterns = [
         name="register_event_by_slug",
     ),
     path("event/<slug:slug>", views.EventFullView.as_view(), name="event_by_name"),
+    path("event/<slug:slug>/detail", views.EventDetailView.as_view(), name="event_detail_by_name"),
     path(
         "event/<slug:slug>/start",
         views.RegisterEventStart.as_view(),
diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py
index a16c8f8f8ab446cadd4d5e4d3172900ac0a0a86f..2127f80b5752dc4b7f5510ca2d7b3a0c0f3e207f 100644
--- a/aleksis/apps/paweljong/views.py
+++ b/aleksis/apps/paweljong/views.py
@@ -899,3 +899,28 @@ class RegistrationStateEditView(PermissionRequiredMixin, AdvancedEditView):
     template_name = "paweljong/registration_state/edit.html"
     success_url = reverse_lazy("registration_states")
     success_message = _("The term has been saved.")
+
+
+class EventDetailView(PermissionRequiredMixin, DetailView):
+    """Detail view for an event instance."""
+
+    context_object_name = "event"
+    permission_required = "paweljong.view_event_rule"
+    template_name = "paweljong/event/detail.html"
+    model = Event
+    slug_field = "slug"
+
+    def get_queryset(self):
+        return Event.objects.all()
+
+    def get_context_data(self, **kwargs):
+
+        context = super().get_context_data(**kwargs)
+
+        # Build table
+        registrations = EventRegistration.objects.filter(event=self.object)
+        registrations_table = EventRegistrationsTable(registrations)
+        RequestConfig(request).configure(registrations_table)
+        context["registrations_table"] = registrations_table
+
+        return context