Board Meeting Minutes Generator

Board Meeting Minutes Generator

Easily create and format professional minutes for your board meetings.

General Meeting Information

Meeting Attendees

Agenda Items, Discussions & Decisions

Action Items

Decision/Outcome: ${decision || 'No decision recorded.'}

`; }); let actionsHtml = '
    '; document.querySelectorAll('.action-item').forEach(item => { const [task, assigned, deadline] = Array.from(item.querySelectorAll('input')).map(el => el.value); const deadlineDate = deadline ? new Date(deadline).toLocaleDateString('en-US', {timeZone: 'UTC'}) : 'N/A'; if (task) actionsHtml += `
  1. ${task} (Assigned to: ${assigned || 'N/A'}, Deadline: ${deadlineDate})
  2. `; }); actionsHtml += '
'; ui.minutesPreview.innerHTML = `

Board Meeting Minutes

${company}

Date: ${date}

Time: ${time}

Location: ${location}

Attendees Present

${attendeesPresent}

Attendees Absent

${attendeesAbsent}

Agenda and Decisions

${agendaHtml}

Action Items

${actionsHtml}

Minutes submitted by,

[Recorder's Name/Title]

Approved by,

[Approver's Name/Title]

`; }; ui.downloadPdfBtn.addEventListener('click', async () => { if (!window.jspdf || !window.html2canvas) { alert('PDF generation library not loaded.'); return; } ui.loader.classList.remove('hidden'); ui.downloadPdfBtn.disabled = true; try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(ui.minutesPreview, { scale: 2 }); const pdf = new jsPDF('p', 'mm', 'a4'); const pdfWidth = pdf.internal.pageSize.getWidth(); const margin = 15; const contentWidth = pdfWidth - margin * 2; const imgHeight = canvas.height * contentWidth / canvas.width; let heightLeft = imgHeight; let position = 0; pdf.addImage(canvas.toDataURL('image/png'), 'PNG', margin, margin, contentWidth, imgHeight); heightLeft -= (pdf.internal.pageSize.getHeight() - margin * 2); while (heightLeft > 0) { position = heightLeft - imgHeight + margin; pdf.addPage(); pdf.addImage(canvas.toDataURL('image/png'), 'PNG', margin, position, contentWidth, imgHeight); heightLeft -= (pdf.internal.pageSize.getHeight() - margin * 2); } pdf.save('Board_Meeting_Minutes.pdf'); } catch (error) { console.error("PDF Generation Error:", error); alert("An error occurred generating the PDF."); } finally { ui.loader.classList.add('hidden'); ui.downloadPdfBtn.disabled = false; } }); document.body.addEventListener('click', e => { if (e.target.classList.contains('remove-btn')) { e.target.closest('div[id]').remove(); } }); window.changeTab = (tabIndex) => { currentTab = tabIndex; updateTabUI(); }; ui.prevBtn.addEventListener('click', () => { if (currentTab > 0) { currentTab--; updateTabUI(); } }); ui.nextBtn.addEventListener('click', () => { if (currentTab < ui.tabs.length - 1) { currentTab++; updateTabUI(); } }); ui.addAttendeeBtn.addEventListener('click', () => addAttendee()); ui.addAgendaBtn.addEventListener('click', () => addAgendaItem()); ui.addActionItemBtn.addEventListener('click', () => addActionItem()); // Initial Data addAttendee('John Smith', 'CEO / Chairman', 'Present'); addAttendee('Jane Doe', 'CFO / Board Member', 'Present'); addAttendee('Mike Ross', 'Legal Counsel', 'Guest'); addAttendee('Lisa Ray', 'COO / Board Member', 'Absent'); addAgendaItem('Review of Q3 Financials', 'Jane Doe presented the quarterly financial report. Revenue is up 15% year-over-year. Net profit margin is steady at 12%. Detailed report was distributed prior to the meeting.', 'Motion to approve the Q3 financial report was passed unanimously.'); addActionItem('Finalize 2026 budget proposal', 'Jane Doe', '2025-10-15'); updateTabUI(); });
Scroll to Top