Skip to content

feat: streaming report exports#584

Merged
santosral merged 12 commits into
mainfrom
feat/streaming-report-exports
Jun 9, 2026
Merged

feat: streaming report exports#584
santosral merged 12 commits into
mainfrom
feat/streaming-report-exports

Conversation

@santosral

@santosral santosral commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

🚀 Summary

This PR adds streaming report exports and migrates the admin quiz export onto the new exceljs helper, replacing the vendored xlsx dependency.

✏️ Changes

  • Add ADRs, design spec, and implementation plan for streaming report exports
  • Add the exceljs dependency
  • Add the spreadsheet cell sanitizer and timestamp formatter
  • Add the generateReport streaming xlsx helper
  • Stream the quiz report export via generateReport
  • Point the reports download link at the nested /quiz route
  • Remove the vendored xlsx dependency

The user profile report (Spec B) stacks on top once this lands.

Closes #577, closes #578, closes #579, closes #580, closes #581, closes #582.

@santosral santosral self-assigned this Jun 8, 2026
@santosral santosral requested a review from nicholasjjlim June 8, 2026 12:06
@santosral santosral marked this pull request as ready for review June 8, 2026 13:15
@santosral santosral marked this pull request as draft June 8, 2026 13:17
@santosral santosral marked this pull request as ready for review June 9, 2026 02:25
nicholasjjlim
nicholasjjlim previously approved these changes Jun 9, 2026

@nicholasjjlim nicholasjjlim left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@santosral santosral merged commit b450359 into main Jun 9, 2026
8 checks passed
@santosral santosral deleted the feat/streaming-report-exports branch June 9, 2026 02:53
@santosral santosral mentioned this pull request Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants