feat(certificates): implement data visualization analytics dashboard - #1324
Merged
RUKAYAT-CODER merged 1 commit intoSep 1, 2026
Conversation
- Add getCertificateAnalytics() to certificate-service: returns totalIssued, totalActive, totalRevoked, 30-day issuedByDay trend, per-course breakdown, and avgCompletionToIssuanceDays; scoped by userId or global for admins - Add GET /api/certificates/analytics route with requireAuth, per-user rate limiting (60 req/15 min), audit logging, and Cache-Control: private max-age=30 - Add CertificateAnalyticsDashboard component: stat cards, 30-day AreaChart trend, horizontal BarChart per-course, Active vs Revoked PieChart; uses recharts, framer-motion, lucide-react; skeleton loader, error/retry state, aria-labels and sr-only data tables for full accessibility - Wire dashboard into certificates page below generation form; analyticsKey state forces re-fetch after each successful certificate issuance - Add 9 unit tests for getCertificateAnalytics covering zero counts, bucket shape/sort, scoping, revocation, latency, and today-bucket increment - Add 26 component tests for CertificateAnalyticsDashboard covering stat cards, chart regions, accessible tables, fetch lifecycle, error/retry, refresh, and ARIA landmark roles Closes rinafcode#472
|
@sadiqolalere41-pro Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
Thank you for contributing to the project. |
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add getCertificateAnalytics() to certificate-service: returns totalIssued, totalActive, totalRevoked, 30-day issuedByDay trend, per-course breakdown, and avgCompletionToIssuanceDays; scoped by userId or global for admins
Add GET /api/certificates/analytics route with requireAuth, per-user rate limiting (60 req/15 min), audit logging, and Cache-Control: private max-age=30
Add CertificateAnalyticsDashboard component: stat cards, 30-day AreaChart trend, horizontal BarChart per-course, Active vs Revoked PieChart; uses recharts, framer-motion, lucide-react; skeleton loader, error/retry state, aria-labels and sr-only data tables for full accessibility
Wire dashboard into certificates page below generation form; analyticsKey state forces re-fetch after each successful certificate issuance
Add 9 unit tests for getCertificateAnalytics covering zero counts, bucket shape/sort, scoping, revocation, latency, and today-bucket increment
Add 26 component tests for CertificateAnalyticsDashboard covering stat cards, chart regions, accessible tables, fetch lifecycle, error/retry, refresh, and ARIA landmark roles
Closes #472
Description
Brief description of changes
Related Issue
Closes #
Type of Change
Checklist