Skip to content

feat(certificates): implement data visualization analytics dashboard - #1324

Merged
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
sadiqolalere41-pro:feat/certificate-data-visualization-472
Sep 1, 2026
Merged

feat(certificates): implement data visualization analytics dashboard#1324
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
sadiqolalere41-pro:feat/certificate-data-visualization-472

Conversation

@sadiqolalere41-pro

Copy link
Copy Markdown
  • 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

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • No console errors
  • Uses Lucide icons consistently
  • Responsive design implemented
  • Starknet best practices followed

- 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
@drips-wave

drips-wave Bot commented Aug 31, 2026

Copy link
Copy Markdown

@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! 🚀

Learn more about application limits

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Thank you for contributing to the project.

@RUKAYAT-CODER
RUKAYAT-CODER merged commit ac5a736 into rinafcode:main Sep 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

enhancement Certificate Generation : Data Visualization

2 participants