diff --git a/aurweb/routers/packages.py b/aurweb/routers/packages.py
index 3eda2539..72cd8c99 100644
--- a/aurweb/routers/packages.py
+++ b/aurweb/routers/packages.py
@@ -195,3 +195,12 @@ async def package_base(request: Request, name: str) -> Response:
context["packages"] = pkgbase.packages.all()
return render_template(request, "pkgbase.html", context)
+
+
+@router.get("/pkgbase/{name}/voters")
+async def package_base_voters(request: Request, name: str) -> Response:
+ # Get the PackageBase.
+ pkgbase = get_pkgbase(name)
+ context = make_context(request, "Voters")
+ context["pkgbase"] = pkgbase
+ return render_template(request, "pkgbase/voters.html", context)
diff --git a/templates/pkgbase/voters.html b/templates/pkgbase/voters.html
new file mode 100644
index 00000000..be86f01f
--- /dev/null
+++ b/templates/pkgbase/voters.html
@@ -0,0 +1,27 @@
+{% extends "partials/layout.html" %}
+
+{% block pageContent %}
+
+
+
+
+
+ {% for pkg_vote in pkgbase.package_votes %}
+ -
+
+ {{ pkg_vote.User.Username }}
+
+
+ {% set voted_at = pkg_vote.VoteTS | dt | as_timezone(timezone) %}
+ ({{ voted_at.strftime("%Y-%m-%d %H:%M") }})
+
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/test/test_packages_routes.py b/test/test_packages_routes.py
index fb45af88..2190dc18 100644
--- a/test/test_packages_routes.py
+++ b/test/test_packages_routes.py
@@ -912,3 +912,21 @@ def test_packages_per_page(client: TestClient, maintainer: User):
root = parse_root(response.text)
rows = root.xpath('//table[@class="results"]/tbody/tr')
assert len(rows) == 250
+
+
+def test_pkgbase_voters(client: TestClient, maintainer: User, package: Package):
+ pkgbase = package.PackageBase
+ endpoint = f"/pkgbase/{pkgbase.Name}/voters"
+
+ now = int(datetime.utcnow().timestamp())
+ with db.begin():
+ db.create(PackageVote, User=maintainer, PackageBase=pkgbase,
+ VoteTS=now)
+
+ with client as request:
+ resp = request.get(endpoint)
+ assert resp.status_code == int(HTTPStatus.OK)
+
+ root = parse_root(resp.text)
+ rows = root.xpath('//div[@class="box"]//ul/li')
+ assert len(rows) == 1