diff --git a/apps/activity/forms.py b/apps/activity/forms.py
new file mode 100644
index 0000000000000000000000000000000000000000..a36f85cdad87ec5e845a2e940f627e0aacfe3f8b
--- /dev/null
+++ b/apps/activity/forms.py
@@ -0,0 +1,12 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from django import forms
+
+from activity.models import Activity
+
+
+class ActivityForm(forms.ModelForm):
+    class Meta:
+        model = Activity
+        fields = '__all__'
diff --git a/apps/activity/views.py b/apps/activity/views.py
index f6c3ad1d301cd1f4ed17c6d8d799345953c7cddd..224181ef9192c7818401fcafd3856579ecb1fbe3 100644
--- a/apps/activity/views.py
+++ b/apps/activity/views.py
@@ -2,29 +2,36 @@
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 from django.views.generic import CreateView, DetailView, UpdateView, TemplateView
+from django.utils.translation import gettext_lazy as _
 from django_tables2.views import SingleTableView
 
+from .forms import ActivityForm
 from .models import Activity
 
 
 class ActivityCreateView(CreateView):
     model = Activity
-    template_name = 'activity_create.html'
+    form_class = ActivityForm
 
 
 class ActivityListView(SingleTableView):
     model = Activity
-    template_name = 'activity_list.html'
+
+    def get_context_data(self, **kwargs):
+        ctx = super().get_context_data(**kwargs)
+
+        ctx['title'] = _("Upcoming activities")
+
+        return ctx
 
 
 class ActivityDetailView(DetailView):
     model = Activity
-    template_name = 'activty_detail.html'
 
 
 class ActivityUpdateView(UpdateView):
     model = Activity
-    template_name = 'activity_update.html'
+    form_class = ActivityForm
 
 
 class ActivityEntryView(TemplateView):
diff --git a/templates/activity/activity_form.html b/templates/activity/activity_form.html
new file mode 100644
index 0000000000000000000000000000000000000000..99c254e3a2d550f39208a5f070fb7f7a8a328735
--- /dev/null
+++ b/templates/activity/activity_form.html
@@ -0,0 +1,11 @@
+{% extends "base.html" %}
+{% load static %}
+{% load i18n %}
+{% load crispy_forms_tags %}
+{% block content %}
+<form method="post">
+{% csrf_token %}
+{{form|crispy}}
+<button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
+</form>
+{% endblock %}
diff --git a/templates/activity/activity_list.html b/templates/activity/activity_list.html
index 7f682d4cf92062d8d375385d93390d1c67a521d5..9092e2ca8758c4259b9b7c56dd96add216d21587 100644
--- a/templates/activity/activity_list.html
+++ b/templates/activity/activity_list.html
@@ -2,15 +2,9 @@
 {% load render_table from django_tables2 %}
 {% load i18n crispy_forms_tags%}
 {% block content %}
+    {% render_table table %}
 
-<a class="btn btn-primary" href="{% url 'activity:activity_create' %}">{% trans 'New activity' %}</a>
-
-<div class="row">
-    <div id="replaceable-content" class="col-6">
-        {% render_table  table %}
-    </div>
-</div>
-
+    <a class="btn btn-primary" href="{% url 'activity:activity_create' %}">{% trans 'New activity' %}</a>
 {% endblock %}
 
 {% block extrajavascript %}