The Pottery Studio Β· Booking System

🏺 The Pottery Studio

Workshops: 10am, 1pm, 6pm | Painting & Pottery | 10 Locations

πŸ“‹ 0 bookings πŸ“‘ Local
Studio Dashboard
0
Total Bookings
0
Total Attendees
0
Adults
0
Children
$0
Est. Revenue
0
Upcoming (7d)
☁️ Cloud Sync (GitHub)
πŸ“± Same Token for All Devices!
Create ONE token on GitHub. Use the SAME token on your computer, phone, and tablet. Enter it once per device - it saves automatically.
πŸ”‘ First Time Setup (Do once on each device):
1. Go to GitHub Tokens
2. Click "Generate new token (classic)"
3. Name it "Pottery Studio" and check ONLY "gist"
4. Generate and COPY the token (same token for all devices!)
5. Paste below and click "Save on this Device"
πŸ’Ύ Local Backup & Restore

Your bookings save automatically. Use backup for extra safety.

Daily schedule
β€”
βž• Add New Booking
Weekly overview
β€”
Monthly calendar
β€”
l('.location-btn').forEach(btn => btn.addEventListener('click', () => { currentLocation = btn.dataset.loc; document.querySelectorAll('#dailyLocationBar .location-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active'); if(viewMode === 'single') renderSingle(); renderWeekly(); renderMonthly(); })); } document.querySelectorAll(".tab-btn").forEach(btn => btn.onclick = () => { document.querySelectorAll(".tab-btn").forEach(b => b.classList.remove("active")); document.querySelectorAll(".tab-content").forEach(c => c.classList.remove("active")); btn.classList.add("active"); document.getElementById(btn.dataset.tab + "Tab").classList.add("active"); if(btn.dataset.tab === 'weekly') renderWeekly(); if(btn.dataset.tab === 'monthly') renderMonthly(); if(btn.dataset.tab === 'daily') refreshAll(); }); } function showToast(msg) { let t = document.createElement('div'); t.className = 'toast-msg'; t.innerText = msg; document.body.appendChild(t); setTimeout(() => t.remove(), 2000); } function escapeHtml(s) { if(!s) return ''; return s.replace(/[&<>]/g, m => ({'&':'&','<':'<','>':'>'})[m]); } function init() { loadLocalData(); loadSettings(); initEvents(); refreshAll(); } init();