diff --git a/donate/models.py b/donate/models.py
index d3bb371c4db03eb0d921a43aafb88a1168a63fee..7313d891482508f93489333ec9ba9983c1a3443e 100644
--- a/donate/models.py
+++ b/donate/models.py
@@ -1,3 +1,4 @@
+from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
 from django.db import models
 from django.shortcuts import redirect
 from django.utils.translation import gettext_lazy
@@ -61,7 +62,7 @@ class DonateFormMixin(models.Model):
 def get_url(page, dest_page_type):
     try:
         return page.get_children().type(dest_page_type).live().first().get_url()
-    except Page.DoesNotExist:
+    except (Page.DoesNotExist, AttributeError):
         return "#"
 
 
@@ -323,9 +324,21 @@ class DonateProjectIndexPage(Page, SubpageMixin, MetadataPageMixin):
 
     def get_context(self, request):
         context = super().get_context(request)
-        context["projects"] = (
-            self.get_children().live().specific().order_by("-donateprojectpage__date")
+
+        paginator = Paginator(
+            self.get_children().live().specific().order_by("-donateprojectpage__date"),
+            6,
         )
+
+        page = request.GET.get("page")
+        try:
+            projects = paginator.page(page)
+        except PageNotAnInteger:
+            projects = paginator.page(1)
+        except EmptyPage:
+            projects = paginator.page(paginator.num_pages)
+
+        context["projects"] = projects
         return context
 
 
diff --git a/donate/templates/donate/donate_project_index_page.html b/donate/templates/donate/donate_project_index_page.html
index bc2ae1c1eaa9fa51777515d854597ee72c97dd7a..3d44a78e8b6d8acd3efc8af95a758d42551a1cf8 100644
--- a/donate/templates/donate/donate_project_index_page.html
+++ b/donate/templates/donate/donate_project_index_page.html
@@ -18,20 +18,31 @@
 
       </div> <!-- /row -->
 
-      {% comment %} {# TODO #}
-      <nav aria-label="Stránkování projektů">
+      {% if projects.paginator.num_pages > 1 %}
+      <nav aria-label="Stránkování aktualit">
         <ul class="pagination justify-content-center">
-          <li class="page-item active">
-            <a class="page-link" href="#">1 <span class="sr-only">(current)</span></a>
-          </li>
-          <li class="page-item"><a class="page-link" href="#">2</a></li>
-          <li class="page-item"><a class="page-link" href="#">3</a></li>
-          <li class="page-item">
-            <a class="page-link" href="#">Další</a>
-          </li>
+
+          {% if projects.has_previous %}
+            <li class="page-item"><a class="page-link" href="?page={{ projects.previous_page_number }}">Předchozí</a></li>
+          {% endif %}
+
+          {% for page_num in projects.paginator.page_range %}
+            {% if page_num == projects.number %}
+              <li class="page-item active">
+                <a class="page-link" href="#">{{ page_num }} <span class="sr-only">(current)</span></a>
+              </li>
+            {% else %}
+              <li class="page-item"><a class="page-link" href="?page={{ page_num }}">{{ page_num }}</a></li>
+            {% endif %}
+          {% endfor %}
+
+          {% if projects.has_next %}
+            <li class="page-item"><a class="page-link" href="?page={{ projects.next_page_number }}">Další</a></li>
+          {% endif %}
+
         </ul>
       </nav>
-      {% endcomment %}
+      {% endif %}
 
     </div> <!-- /container -->
   </section>