NC Contractor Continuing Education Hours Tracker
ANA›Life Services Authority›National Calculator Authority›NC Contractor Continuing Education Hours Tracker
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
NC Contractor Continuing Education Hours Tracker
Track your continuing education (CE) hours for North Carolina contractor license renewal. NC requires 8 CE hours per renewal cycle, including mandatory topics.
License Classification
Limited (projects up to $500,000) Intermediate (projects up to $1,000,000) Unlimited (no project limit)
NC Lien Law & License Law Hours Completed
Mandatory: minimum 2 hours required per cycle
OSHA / Safety Hours Completed
Recommended: at least 2 hours of safety training
Business Management / Finance Hours Completed
Technical / Trade-Specific Hours Completed
Other Approved CE Hours Completed
License Renewal Date
Used to calculate days remaining in your renewal cycle
Calculate CE Status
function ncCalc() { var licenseClass = document.getElementById('nc-license-class').value; var lawHours = parseFloat(document.getElementById('nc-law-hours').value) || 0; var safetyHours = parseFloat(document.getElementById('nc-safety-hours').value) || 0; var bizHours = parseFloat(document.getElementById('nc-business-hours').value) || 0; var techHours = parseFloat(document.getElementById('nc-technical-hours').value)|| 0; var otherHours = parseFloat(document.getElementById('nc-other-hours').value) || 0; var renewalDate = document.getElementById('nc-renewal-date').value;
// --- Input Validation --- var errors = [];
if (lawHours 8) { errors.push("Total CE hours cannot exceed 8 per renewal cycle (NC NCLBGC rule)."); }
var resultDiv = document.getElementById('nc-result');
if (errors.length > 0) { resultDiv.style.display = 'block'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }
// --- Core Calculations --- var REQUIRED_TOTAL = 8; // NC requires 8 CE hours per 2-year renewal cycle var REQUIRED_LAW = 2; // Minimum 2 hours: Lien Law & License Law (mandatory)
var hoursRemaining = Math.max(0, REQUIRED_TOTAL - totalHours); var lawDeficit = Math.max(0, REQUIRED_LAW - lawHours); var percentComplete = Math.min(100, (totalHours / REQUIRED_TOTAL) * 100); var mandatoryMet = lawHours >= REQUIRED_LAW; var totalRequirementMet = totalHours >= REQUIRED_TOTAL; var fullyCompliant = mandatoryMet && totalRequirementMet;
// Days remaining calculation var daysRemaining = null; var daysRemainingText = "N/A (no renewal date entered)"; if (renewalDate) { var today = new Date(); today.setHours(0,0,0,0); var renewal = new Date(renewalDate); renewal.setHours(0,0,0,0); daysRemaining = Math.ceil((renewal - today) / (1000 * 60 * 60 * 24)); if (daysRemaining OVERDUE by " + Math.abs(daysRemaining) + " days"; } else if (daysRemaining === 0) { daysRemainingText = "Due TODAY"; } else if (daysRemaining " + daysRemaining + " days (urgent)"; } else { daysRemainingText = "" + daysRemaining + " days"; } }
// License class label var classLabels = { limited: "Limited (up to $500,000)", intermediate: "Intermediate (up to $1,000,000)", unlimited: "Unlimited (no project cap)" };
- // Progress bar color
- var barColor = percentComplete ✔ COMPLIANT'
- '✘ NOT YET COMPLIANT';
// Build output var html = '### CE Hours Summary ' + statusBadge + ' '; html += ''; html += 'Category' + 'Completed' + 'Required' + 'Status';
var rows = [ ["Lien Law & License Law (Mandatory)", lawHours.toFixed(1), REQUIRED_LAW.toFixed(1), mandatoryMet ? "✔" : "✘ Need " + lawDeficit.toFixed(1) + " more"], ["OSHA / Safety", safetyHours.toFixed(1), "—", "—"], ["Business Management / Finance", bizHours.toFixed(1), "—", "—"], ["Technical / Trade-Specific", techHours.toFixed(1), "—", "—"], ["Other Approved CE", otherHours.toFixed(1), "—", "—"] ];
rows.forEach(function(r) { var statusColor = r[3].indexOf("✘") !== -1 ? '#e74c3c' : r[3] === "✔" ? '#27ae60' : '#555'; html += '' + '' + r[0] + '' + '' + r[1] + '' + '' + r[2] + '' + '' + r[3] + '' + ''; });
html += '' + 'TOTAL' + '' + totalHours.toFixed(1) + '' + '' + REQUIRED_TOTAL.toFixed(1) + '' + '' + (totalRequirementMet ? "✔ Met" : "✘ Need " + hoursRemaining.toFixed(1) + " more") + '' + ''; html += '';
// Progress bar html += ''; html += '' + 'Overall Progress' + '' + totalHours.toFixed(1) + ' / ' + REQUIRED_TOTAL + ' hours (' + percentComplete.toFixed(1) + '%)'; html += '' + ''; html += '';
// Key metrics html += ''; html += 'License Classification:' + classLabels[licenseClass] + ''; html += 'Hours Still Needed:' + hoursRemaining.toFixed(1) + ' hours'; html += 'Mandatory Law Hours Met:' + (mandatoryMet ? "Yes ✔" : "No — need " + lawDeficit.toFixed(1) + " more hours ✘") + ''; html += 'Days Until Renewal:' + daysRemainingText + ''; html += '';
// Recommendations html += ''; html += 'Recommendations:'; if (!mandatoryMet) { html += '- Complete at least ' + lawDeficit.toFixed(1) + ' more hour(s) of NC Lien Law & License Law — this is mandatory.'; } if (!totalRequirementMet) { html += '- You need ' + hoursRemaining.toFixed(1) + ' more CE hour(s) to meet the 8-hour cycle requirement.'; } if (daysRemaining !== null && daysRemaining ';
resultDiv.style.display = 'block'; resultDiv.innerHTML = html; }
#### Formula
Total CE Hours = Law Hours + Safety Hours + Business Hours + Technical Hours + Other Hours Hours Remaining = max(0, 8 − Total CE Hours) Mandatory Law Deficit = max(0, 2 − Law Hours Completed) Percent Complete = min(100, (Total CE Hours ÷ 8) × 100) Fully Compliant = (Total CE Hours ≥ 8) AND (Law Hours ≥ 2) Days Remaining = Renewal Date − Today's Date
#### Assumptions & References
- NC General Statutes §87-10.1 and NCLBGC rules require 8 continuing education hours per 2-year license renewal cycle.
- A minimum of 2 hours must cover NC Lien Law and/or License Law — this is a mandatory topic category.
- CE hours must be completed through NCLBGC-approved providers; self-study or unapproved courses do not qualify.
- Contractors should retain CE completion certificates for a minimum of 3 years in case of audit.
- Source: NC Licensing Board for General Contractors (NCLBGC) — nclbgc.org
More Calculators
- Static Pressure Drop Calculator for Duct Systems
- HVAC Equipment Rebate Savings Calculator
- HVAC Equipment Sizing Calculator — Manual J Load Estimate
- Illinois Climate Zone Heat Load Calculator
- Kansas Utility Cost Estimator — Heating vs Cooling Season
- HVAC Equipment Sizing Calculator (Manual J Estimator)