Resume & Cover Letter Builder

Single-file, private, autosaves in your browser

Resume Builder

Education

Experience (Part-time, Internships, Projects)

Extracurricular & Leadership

Volunteer

Skills

Awards/Honors (optional)

`; download((state.resume.name||'resume').replace(/\s+/g,'_')+".html", html); }); $('#btn-download-letter').addEventListener('click', ()=>{ const letter = $('#cl-preview').textContent || ''; download((state.resume.name||'cover_letter').replace(/\s+/g,'_')+"_cover_letter.txt", letter); }); $('#btn-export-json').addEventListener('click', ()=>{ download('resume_builder.json', JSON.stringify(state, null, 2)); }); $('#import-json').addEventListener('change', (e)=>{ const file = e.target.files?.[0]; if(!file) return; const reader = new FileReader(); reader.onload = ()=>{ try{ const data = JSON.parse(reader.result); load(data); render(); save(); alert('Import complete.'); } catch(err){ alert('Invalid JSON.'); } }; reader.readAsText(file); }); // Reset $('#btn-reset').addEventListener('click', ()=>{ if(confirm('Clear all data? This cannot be undone.')){ localStorage.removeItem('resume_builder_v1'); location.reload(); } }); // Manual Save $('#btn-save').addEventListener('click', ()=>{ syncFromUI(); save(); alert('Saved to your browser.'); }); // Persistence function save(){ localStorage.setItem('resume_builder_v1', JSON.stringify(state)); } function load(obj){ Object.assign(state, obj); // Populate UI $('#template').value = state.template || 'classic'; ['name','title','email','phone','location','url','summary','skills'].forEach(id=>{ document.getElementById(id).value = state.resume[id] || ''; }); // Clear lists then repopulate for(const [key, {container, addItem}] of Object.entries(lists)){ container.innerHTML = ''; (state.resume[key]||[]).forEach(addItem); } // Letter $('#cl-date').value = state.letter.date || ''; $('#cl-company').value = state.letter.company || ''; $('#cl-position').value = state.letter.position || ''; $('#cl-manager').value = state.letter.manager || ''; $('#cl-address').value = state.letter.address || ''; $('#cl-opening').value = state.letter.opening || ''; $('#cl-body').value = state.letter.body || ''; $('#cl-closing').value = state.letter.closing || ''; } // Initial load (function(){ initChips(); const stored = localStorage.getItem('resume_builder_v1'); if(stored){ try{ load(JSON.parse(stored)); }catch(e){} } if(!stored){ load({ ...state }); } // default date if(!state.letter.date){ $('#cl-date').value = new Date().toLocaleDateString(undefined, {year:'numeric', month:'long', day:'numeric'}); } syncFromUI(); render(); })();