Back
Lesson Plan Generator

Lesson Plan Generator

Basic Information

Learning Objectives

Standards Alignment

Materials Needed

Lesson Structure

Differentiation

Learning Activities

Homework/Follow-up

Lesson Plan Preview

Your lesson plan preview will appear here.

Fill out the form and click “Update Preview” to see changes.

`; } if (subject || gradeLevel) { html += `

${subject || ''} ${gradeLevel ? '| ' + gradeLevel : ''}

`; } if (duration || date) { html += `

`; if (duration) html += `Duration: ${duration} minutes `; if (date) html += `Date: ${new Date(date).toLocaleDateString()}`; html += `

`; } html += `
`; // Learning Objectives const objectives = document.getElementById('objectives').value; if (objectives) { html += `

Learning Objectives

`; html += `
    ${objectives.split('\n').filter(o => o.trim()).map(o => `
  • ${o}
  • `).join('')}
`; } // Standards const standards = document.getElementById('standards').value; if (standards) { html += `

Standards Alignment

`; html += `

${standards.replace(/\n/g, '
')}

`; } // Materials const materials = document.getElementById('materials').value; if (materials) { html += `

Materials Needed

`; html += `
    ${materials.split(',').filter(m => m.trim()).map(m => `
  • ${m.trim()}
  • `).join('')}
`; } // Lesson Structure html += `

Lesson Structure

`; const warmup = document.getElementById('warmup').value; const instruction = document.getElementById('instruction').value; const guidedPractice = document.getElementById('guidedPractice').value; const independentPractice = document.getElementById('independentPractice').value; const assessment = document.getElementById('assessment').value; const closure = document.getElementById('closure').value; html += ` ${warmup ? `` : ''} ${instruction ? `` : ''} ${guidedPractice ? `` : ''} ${independentPractice ? `` : ''} ${assessment ? `` : ''} ${closure ? `` : ''}
SectionDescription
Warm-up${warmup}
Direct Instruction${instruction}
Guided Practice${guidedPractice}
Independent Practice${independentPractice}
Assessment${assessment}
Closure${closure}
`; // Activities const activityItems = document.querySelectorAll('.activity-item'); if (activityItems.length > 0) { let hasActivities = false; activityItems.forEach(item => { if (item.querySelector('.activity-title').value) { hasActivities = true; } }); if (hasActivities) { html += `

Detailed Activities

`; html += ``; activityItems.forEach(item => { const title = item.querySelector('.activity-title').value; const desc = item.querySelector('.activity-desc').value; const time = item.querySelector('.activity-time').value; const grouping = item.querySelector('.activity-grouping').value; if (title) { html += ``; } }); html += `
ActivityDescriptionTimeGrouping
${title}${desc || '-'}${time || '-'} min${grouping.replace('whole', 'Whole Class').replace('small', 'Small Groups').replace('pairs', 'Pairs').replace('individual', 'Individual')}
`; } } // Differentiation const scaffolding = document.getElementById('scaffolding').value; const enrichment = document.getElementById('enrichment').value; if (scaffolding || enrichment) { html += `

Differentiation

`; if (scaffolding) { html += `

Scaffolding/Support

`; html += `

${scaffolding.replace(/\n/g, '
')}

`; } if (enrichment) { html += `

Enrichment

`; html += `

${enrichment.replace(/\n/g, '
')}

`; } } // Homework const homework = document.getElementById('homework').value; if (homework) { html += `

Homework/Follow-up

`; html += `

${homework.replace(/\n/g, '
')}

`; } previewContent.innerHTML = html; } // Download blank template function downloadBlankTemplate() { const doc = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' }); // Set styles doc.setFont('helvetica'); doc.setFontSize(16); // Add header doc.text('Lesson Plan Template', 105, 20, { align: 'center' }); doc.setFontSize(12); doc.text('Instructor: ________________________', 20, 30); // Add sections with placeholders const sections = [ { title: 'Lesson Title', y: 40 }, { title: 'Subject/Grade Level', y: 50 }, { title: 'Duration/Date', y: 60 }, { title: 'Learning Objectives', y: 70, lines: 3 }, { title: 'Standards Alignment', y: 100, lines: 2 }, { title: 'Materials Needed', y: 130, lines: 2 }, { title: 'Lesson Structure', y: 160, subsections: [ 'Warm-up', 'Direct Instruction', 'Guided Practice', 'Independent Practice', 'Assessment', 'Closure' ]}, { title: 'Differentiation', y: 220, subsections: [ 'Scaffolding/Support', 'Enrichment' ]}, { title: 'Homework/Follow-up', y: 260, lines: 2 } ]; sections.forEach(section => { doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text(section.title + ':', 20, section.y); doc.setFontSize(12); doc.setTextColor(0, 0, 0); if (section.lines) { for (let i = 0; i < section.lines; i++) { doc.text('________________________________________________________________________', 20, section.y + 10 + (i * 7)); } } if (section.subsections) { let y = section.y + 10; section.subsections.forEach(sub => { doc.setFontSize(12); doc.text(sub + ':', 25, y); doc.text('________________________________________________________________________', 25, y + 7); y += 15; }); } }); // Save the PDF doc.save('lesson-plan-template.pdf'); } // Download filled PDF function downloadFilledPdf() { const doc = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' }); // Set styles doc.setFont('helvetica'); doc.setFontSize(16); // Get form values const instructorName = document.getElementById('instructorName').value; const lessonTitle = document.getElementById('lessonTitle').value || 'Untitled Lesson'; const subject = document.getElementById('subject').value; const gradeLevel = document.getElementById('gradeLevel').value; const duration = document.getElementById('duration').value; const date = document.getElementById('date').value; // Add header doc.text(lessonTitle, 105, 20, { align: 'center' }); doc.setFontSize(12); let yPosition = 30; // Instructor name if (instructorName) { doc.text(`Instructor: ${instructorName}`, 20, yPosition); yPosition += 10; } // Subject and grade level if (subject || gradeLevel) { doc.text(`${subject || ''} ${gradeLevel ? '| ' + gradeLevel : ''}`, 20, yPosition); yPosition += 10; } // Duration and date let infoLine = ''; if (duration) infoLine += `Duration: ${duration} minutes `; if (date) infoLine += `Date: ${new Date(date).toLocaleDateString()}`; if (infoLine) { doc.text(infoLine, 20, yPosition); yPosition += 10; } // Learning Objectives const objectives = document.getElementById('objectives').value; if (objectives) { doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Learning Objectives:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 7; const objectivesList = objectives.split('\n').filter(o => o.trim()); objectivesList.forEach(obj => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text('• ' + obj, 25, yPosition); yPosition += 7; }); yPosition += 10; } // Standards const standards = document.getElementById('standards').value; if (standards) { doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Standards Alignment:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 7; const standardsLines = doc.splitTextToSize(standards, 170); standardsLines.forEach(line => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text(line, 25, yPosition); yPosition += 7; }); yPosition += 10; } // Materials const materials = document.getElementById('materials').value; if (materials) { doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Materials Needed:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 7; const materialsList = materials.split(',').filter(m => m.trim()); materialsList.forEach(mat => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text('• ' + mat.trim(), 25, yPosition); yPosition += 7; }); yPosition += 10; } // Lesson Structure doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Lesson Structure:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 10; const structureSections = [ { title: 'Warm-up', content: document.getElementById('warmup').value }, { title: 'Direct Instruction', content: document.getElementById('instruction').value }, { title: 'Guided Practice', content: document.getElementById('guidedPractice').value }, { title: 'Independent Practice', content: document.getElementById('independentPractice').value }, { title: 'Assessment', content: document.getElementById('assessment').value }, { title: 'Closure', content: document.getElementById('closure').value } ]; structureSections.forEach(section => { if (section.content) { if (yPosition > 250) { doc.addPage(); yPosition = 20; } doc.setFontSize(12); doc.text(`${section.title}:`, 25, yPosition); yPosition += 7; const contentLines = doc.splitTextToSize(section.content, 170); contentLines.forEach(line => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text(line, 30, yPosition); yPosition += 7; }); yPosition += 5; } }); // Activities const activityItems = document.querySelectorAll('.activity-item'); if (activityItems.length > 0) { let hasActivities = false; activityItems.forEach(item => { if (item.querySelector('.activity-title').value) { hasActivities = true; } }); if (hasActivities) { if (yPosition > 230) { doc.addPage(); yPosition = 20; } doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Detailed Activities:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 10; const activitiesData = []; activitiesData.push(['Activity', 'Description', 'Time', 'Grouping']); activityItems.forEach(item => { const title = item.querySelector('.activity-title').value; const desc = item.querySelector('.activity-desc').value || '-'; const time = item.querySelector('.activity-time').value || '-'; const grouping = item.querySelector('.activity-grouping').value .replace('whole', 'Whole Class') .replace('small', 'Small Groups') .replace('pairs', 'Pairs') .replace('individual', 'Individual'); if (title) { activitiesData.push([title, desc, time + ' min', grouping]); } }); doc.autoTable({ startY: yPosition, head: [activitiesData[0]], body: activitiesData.slice(1), margin: { left: 20 }, styles: { fontSize: 10 }, columnStyles: { 0: { cellWidth: 40 }, 1: { cellWidth: 70 }, 2: { cellWidth: 20 }, 3: { cellWidth: 40 } } }); yPosition = doc.lastAutoTable.finalY + 10; } } // Differentiation const scaffolding = document.getElementById('scaffolding').value; const enrichment = document.getElementById('enrichment').value; if (scaffolding || enrichment) { if (yPosition > 240) { doc.addPage(); yPosition = 20; } doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Differentiation:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 10; if (scaffolding) { doc.text('Scaffolding/Support:', 25, yPosition); yPosition += 7; const scaffoldingLines = doc.splitTextToSize(scaffolding, 170); scaffoldingLines.forEach(line => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text(line, 30, yPosition); yPosition += 7; }); yPosition += 5; } if (enrichment) { doc.text('Enrichment:', 25, yPosition); yPosition += 7; const enrichmentLines = doc.splitTextToSize(enrichment, 170); enrichmentLines.forEach(line => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text(line, 30, yPosition); yPosition += 7; }); yPosition += 5; } } // Homework const homework = document.getElementById('homework').value; if (homework) { if (yPosition > 250) { doc.addPage(); yPosition = 20; } doc.setFontSize(14); doc.setTextColor(52, 152, 219); doc.text('Homework/Follow-up:', 20, yPosition); doc.setFontSize(12); doc.setTextColor(0, 0, 0); yPosition += 7; const homeworkLines = doc.splitTextToSize(homework, 170); homeworkLines.forEach(line => { if (yPosition > 270) { doc.addPage(); yPosition = 20; } doc.text(line, 25, yPosition); yPosition += 7; }); } // Save the PDF doc.save('lesson-plan.pdf'); }