Schedule Builder
Click to set your stream days, pick your games, export when ready
Live Preview
`; } function exportHTML() { const data = getScheduleData(); const accent = document.getElementById('accentColor').value; const html = buildPreviewHTML(data, accent); const blob = new Blob([html], { type: 'text/html' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${data.streamer_name.toLowerCase().replace(/\s+/g,'-')}-schedule.html`; a.click(); URL.revokeObjectURL(url); } function exportJSON() { const data = getScheduleData(); const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${data.streamer_name.toLowerCase().replace(/\s+/g,'-')}-schedule.json`; a.click(); URL.revokeObjectURL(url); } // Init buildTable(); // Auto-enable a few days for the demo state.monday.live = true; state.monday.game = 'Valorant'; state.monday.type = 'ranked'; state.wednesday.live = true; state.wednesday.game = 'Just Chatting'; state.wednesday.type = 'chill'; state.friday.live = true; state.friday.game = 'Variety'; state.friday.type = 'variety'; state.saturday.live = true; state.saturday.game = 'Minecraft'; state.saturday.type = 'creative'; buildTable(); setTimeout(updatePreview, 300);