@jackgreen2018/personal-trainer-workout-plan
v1.0.1
Published
Generate professional workout plan PDFs client-side via Rust/WASM
Downloads
269
Readme
@jackgreen2018/personal-trainer-workout-plan
Generate professional workout plan PDFs client-side via Rust/WASM. Targeted at freelance personal trainers who pay $49/mo for bloated platforms.
Install
npm install @jackgreen2018/personal-trainer-workout-planUsage
import { generateWorkoutPlan } from '@jackgreen2018/personal-trainer-workout-plan';
await generateWorkoutPlan({
client_name: "Alex Johnson",
trainer_name: "Coach Sarah Miller",
plan_title: "8-Week Strength Program",
start_date: "2026-08-15",
days: [
{
day_number: 1,
day_label: "Push Day",
exercises: [
{ name: "Barbell Bench Press", sets: 4, reps: "8-10", rest_seconds: 90 },
{ name: "Overhead Press", sets: 3, reps: "10", rest_seconds: 75 },
]
}
],
notes: "Progressive overload",
color: [30, 64, 128]
});Returns a Uint8Array containing a valid PDF document.
API
generateWorkoutPlan(options)
Generates a multi-page PDF workout plan.
Options:
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| client_name | string | Yes | Client's full name |
| trainer_name | string | Yes | Trainer's name |
| plan_title | string | No | Plan title (default: "Workout Plan") |
| start_date | string | No | Plan start date |
| days | WorkoutDay[] | Yes | Array of workout days |
| notes | string | No | General notes for the plan |
| color | [number, number, number] | No | RGB color tuple (default: [30, 64, 128]) |
WorkoutDay:
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| day_number | number | Yes | Day number (1-7) |
| day_label | string | Yes | Day name (e.g., "Push Day") |
| exercises | Exercise[] | Yes | List of exercises |
Exercise:
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| name | string | Yes | Exercise name |
| sets | number | Yes | Number of sets |
| reps | string | Yes | Reps (e.g., "10", "8-12", "30s") |
| rest_seconds | number | No | Rest between sets in seconds |
| notes | string | No | Exercise-specific notes |
Benchmark
Tested on Node.js 20, M1 MacBook Pro:
| Library | Time (ms) | Size (bytes) | Speedup | |---------|-----------|--------------|---------| | @jackgreen2018/personal-trainer-workout-plan | 5.2 | 8618 | 6.53x faster | | pdf-lib | 33.8 | 3674 | baseline |
Run benchmark:
npm run benchmarkLicense
MIT
