diff --git a/ippisite/ippidb/templates/about-contributor-card.html b/ippisite/ippidb/templates/about-contributor-card.html
new file mode 100644
index 0000000000000000000000000000000000000000..5057457f80b2c1f8cf0fb3a09035b82ae0caae49
--- /dev/null
+++ b/ippisite/ippidb/templates/about-contributor-card.html
@@ -0,0 +1,11 @@
+{% extends "about.html" %}
+
+{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
+
+{% block pagetitle %}Contributors{% endblock%}
+
+{% block view_content %}
+<div class="row">
+	{{ object.get_contributor_firstname | capfirst }} {{ object.get_contributor_lastname | capfirst }} || {{ object.get_orcid_url }}
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/ippisite/ippidb/templates/about-contributors.html b/ippisite/ippidb/templates/about-contributors.html
index 54a12cff7a8a8334dd27ca346a354cb2df97d5c0..4727f07a8d99280621065fd146c7509a1caf9e7c 100644
--- a/ippisite/ippidb/templates/about-contributors.html
+++ b/ippisite/ippidb/templates/about-contributors.html
@@ -16,7 +16,7 @@
 		<tbody>
 			{% for contributor in object_list %}
 			<tr>
-				<td>{{ contributor.get_contributor_firstname | capfirst }} {{ contributor.get_contributor_lastname | capfirst }}</td>
+				<td><a href="{{ contributor.id }}">{{ contributor.get_contributor_firstname | capfirst }} {{ contributor.get_contributor_lastname | capfirst }}</a></td>
 				<td><a href="{{ contributor.get_orcid_url }}" target="_blank">{{ contributor.get_orcid }}</a></td>
 			</tr>
 			{% endfor %}
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index a75b10256830e4434fcc4001f637d4ae77c55294..1ca040aa03d1052810632587a1c2213ec75f5f10 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -61,7 +61,8 @@ urlpatterns = [
         name="physicochemistry",
     ),
     re_path(r"^about-pca/$", views.about_pca, name="pca"),
-    re_path(r"^about-contributors/$",  views.ContributorsListView.as_view(), name="contributors"),
+    re_path(r"^about-contributors/$",  views.ContributorListView.as_view(), name="contributors"),
+    re_path(r"^about-contributors/(?P<pk>\d+)$",  views.ContributorDetailView.as_view(), name="contributor_card"),
     re_path(r"^targetcentric/$", views.PDBView.as_view(), name="cavities"),
     re_path(r"^targetcentric/networks$", views.NetworkView.as_view(), name="networks"),
     re_path(r"^api/", include(ROUTER.urls)),
diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py
index 7666e858dbb7948ee9095959cef0c1746fe7456d..d3219a289171984bfd5a312220ddfc3ed5f8c2c5 100644
--- a/ippisite/ippidb/views/__init__.py
+++ b/ippisite/ippidb/views/__init__.py
@@ -32,7 +32,8 @@ from .about import (
     about_pca,
     about_pharmacology,
     about_physicochemistry,
-    ContributorsListView,
+    ContributorListView,
+    ContributorDetailView,
 )
 from django.conf import settings
 
@@ -103,7 +104,8 @@ __all__ = [
     about_pca,
     about_pharmacology,
     about_physicochemistry,
-    ContributorsListView,
+    ContributorListView,
+    ContributorDetailView,
     PdbViewSet,
     DistanceViewSet,
     PDBView,
diff --git a/ippisite/ippidb/views/about.py b/ippisite/ippidb/views/about.py
index cc9a875f94eaa316f4a8efd8976d5d6307404765..45731cef1ec3faae7f2aa4a948dc017c70103081 100644
--- a/ippisite/ippidb/views/about.py
+++ b/ippisite/ippidb/views/about.py
@@ -2,11 +2,11 @@
 iPPI-DB global statistics views
 """
 
-import re
 from django.contrib.auth import get_user_model
 from django.db.models import F, Count, FloatField, QuerySet
 from django.db.models.functions import Cast, Floor
 from django.shortcuts import render
+from django.views.generic.detail import DetailView
 from django.views.generic.list import ListView
 import json
 
@@ -324,7 +324,7 @@ def get_contributor_firstname(self):
     orcid = self.get_orcid()
     if orcid is not None:
         data = self.__orcid_json
-        return data['first_name']
+        return data["first_name"]
 
 
 @cached_orcid_json
@@ -335,7 +335,7 @@ def get_contributor_lastname(self):
     orcid = self.get_orcid()
     if orcid is not None:
         data = self.__orcid_json
-        return data['last_name']
+        return data["last_name"]
 
 
 User.add_to_class("get_orcid", get_orcid)
@@ -345,9 +345,11 @@ User.add_to_class("get_contributor_firstname", get_contributor_firstname)
 User.add_to_class("get_contributor_lastname", get_contributor_lastname)
 
 
-class ContributorsListView(ListView):
+class ContributorListView(ListView):
     """
     Contributors list view
+
+    This view lists the users with at least one accepted contribution
     """
 
     model = User
@@ -359,3 +361,20 @@ class ContributorsListView(ListView):
             socialaccount__isnull=False, contributions_count__gt=0
         )
         return qs
+
+
+class ContributorDetailView(DetailView):
+    """
+    Contributor detail view
+
+    """
+
+    model = User
+    template_name = "about-contributor-card.html"
+
+    def get_queryset(self):
+        qs = super().get_queryset()
+        qs = qs.annotate(contributions_count=Count("contribution")).filter(
+            socialaccount__isnull=False, contributions_count__gt=0
+        )
+        return qs