2.6 KiB
2.6 KiB
Math Tasks Generator — Setup Steps
Step 1: Initialize Node.js project
npm init -ywith"type": "module"- Create
.gitignore(node_modules/, output/)
Step 2: Install dependencies
puppeteer— HTML to PDF conversion (headless Chrome)@tailwindcss/cli— Tailwind CSS v4 build tool (dev)serve— static file server for HTML preview (dev)concurrently— run CSS watch + preview server together (dev)
Step 3: Create directory structure
src/styles/main.css— Tailwind source with A4/print stylessrc/scripts/generate-pdf.mjs— HTML → PDF via Puppeteersrc/scripts/generate-problems.mjs— JSON task → concrete problem listsrc/scripts/banatie.mjs— Banatie API client for image generationtasks/— JSON task definition filesassets/backgrounds/— large background images per themeassets/icons/— icon sets in subfoldersoutput/html/— generated HTML (gitignored)output/pdf/— generated PDFs (gitignored)output/css/— built Tailwind CSS (gitignored)
Step 4: Configure Tailwind CSS v4
src/styles/main.csswith@import "tailwindcss",@pagerules for A4- Custom utility classes:
.page-a4,.page-background,.page-content,.problem-row,.problem-icon,.problem-text,.answer-line - Build script:
npx @tailwindcss/cli -i src/styles/main.css -o output/css/styles.css
Step 5: Create PDF generation script
src/scripts/generate-pdf.mjsusing Puppeteer- Accepts HTML file path, outputs PDF to
output/pdf/ - Settings: A4 format,
printBackground: true, zero margins,preferCSSPageSize: true
Step 6: Create problem generation utility
src/scripts/generate-problems.mjs— reads JSON task, generates randomized math problems- Exports function and works as CLI
- Handles variable substitution, deduplication
Step 7: Create example JSON task
tasks/example-multiply.jsonwith sample multiplication task config- Demonstrates full JSON schema: template, variables, labels, theme refs
Step 8: Set up npm scripts
build:css— build Tailwind CSS (minified)build:css:watch— watch modepreview— serve HTML at localhost:3000pdf— convert HTML to PDFdev— CSS watch + preview (concurrent)
Step 9: Initialize git repo
git init, initial commit
Step 10: Configure Banatie API integration
src/scripts/banatie.mjs— API client for image generation- Documented in CLAUDE.md
- Standard sizes: backgrounds 1200×1700px, icons 128×128px transparent PNG