Generating PDF Reports
One-click PDF summary of a client's training, body comp, goals, and adherence.
trainer guide/analytics
What this is for: Send a polished progress report to a client (monthly review, end of program, billing).
What's in the PDF
Up to 7 sections, all toggleable in the modal:
- Cover — client name, trainer name, date range, EvoFit branding.
- Workout Summary — total sessions, completion rate, volume, top 3 exercises.
- Measurements — weight, body fat %, muscle mass — start, end, delta.
- Body Composition Chart — line chart over time.
- Training Load Chart — ACWR with risk band.
- Goals — each goal with progress % and status.
- Performance — PR list, adherence %, missed-workout count.
You pick which to include in the modal.
Step-by-step
- Open
/analytics. - Select the client (top selector).
- Click Generate Report in the header.
- The ReportModal opens.
- Pick:
- Date range (last 30/60/90 days, custom range, or all time).
- Sections — tick boxes for the 7 sections above.
- Click Generate PDF.
- The PDF downloads to your browser.
Sharing
The PDF is generated client-side (jsPDF) and downloaded to your machine. There's no email-from-app feature — share via:
- WhatsApp (drag-drop into the chat)
- Email (attach the file)
- Cloud share (Drive, Dropbox)
Why jsPDF and not server-side rendering?
We rewrote this from Puppeteer to jsPDF in 2026-04-20 because Puppeteer/Chromium kept failing on Vercel deploys. jsPDF is pure JavaScript, builds work cleanly, and the output is identical-quality.
Common pitfalls
Where to find this
- Trigger:
/analytics→ Generate Report button. - Component:
ReportModal. - Library:
jspdf+jspdf-autotable. - Endpoint: client-side rendering — no backend call needed.
Was this article helpful?
