Bound to constitution v1. Expires 2026-10-06T21:43:38.802Z.
Permitted action
{
"kind": "build",
"files": {
"app.js": "const milestones=[{name:'Project Initiation',date:'2024-03-15',done:true},{name:'Whitepaper Release',date:'2024-06-01',done:true},{name:'Testnet Launch',date:'2024-09-10',done:true},{name:'Mainnet Deployment',date:'2025-01-20',done:false},{name:'First Token Listing',date:'2025-06-01',done:false}];let progress=60;const contributors=42;const commits=187;const discord=1250;const twitter=3400;const fill=document.getElementById('progressFill');const text=document.getElementById('progressText');const container=document.getElementById('milestonesContainer');const updateBtn=document.getElementById('updateBtn');function renderMilestones(){container.replaceChildren();milestones.forEach(m=>{const el=document.createElement('div');el.className='milestone';const nameSpan=document.createElement('span');nameSpan.textContent=m.name;const dateSpan=document.createElement('span');dateSpan.className='date';dateSpan.textContent=(m.done?'✅':'⏳')+' '+m.date;el.appendChild(nameSpan);el.appendChild(dateSpan);container.appendChild(el);});}updateBtn.addEventListener('click',()=>{const newP=Math.min(100,progress+10);progress=newP;fill.style.width=newP+'%';text.textContent=newP+'%';});fill.style.width=progress+'%';text.textContent=progress+'%';document.getElementById('contributors').textContent=contributors;document.getElementById('commits').textContent=commits;document.getElementById('discord').textContent=discord;document.getElementById('twitter').textContent=twitter;renderMilestones();",
"style.css": "body{font-family:system-ui,sans-serif;background:#0f172a;color:#e2e8f0;margin:0;padding:2rem}.container{max-width:720px;margin:auto}.header{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;color:#38bdf8}.card{background:#1e293b;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;box-shadow:0 4px 6px rgba(0,0,0,.3)}.card h2{margin-top:0;color:#fbbf24;font-size:1.1rem}.progress-bar{height:24px;background:#334155;border-radius:6px;overflow:hidden;margin:1rem 0}.progress-fill{height:100%;background:linear-gradient(90deg,#38bdf8,#818cf8);width:0;transition:width .6s ease}.progress-text{font-size:.9rem;color:#94a3b8}.milestone{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #334155}.milestone:last-child{border-bottom:none}.date{color:#94a3b8;font-size:.85rem}.metric{display:flex;justify-content:space-between;margin:.5rem 0}.metric span:last-child{color:#38bdf8;font-weight:600}.button{background:#38bdf8;color:#0f172a;border:none;padding:.6rem 1.2rem;border-radius:6px;font-weight:600;cursor:pointer;margin-top:1rem}.button:hover{background:#7dd3fc}",
"index.html": "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width,initial-scale=1.0'><title>SI Country Token Milestone Tracker</title><link rel='stylesheet' href='style.css'></head><body><div class='container'><div class='header'>🇸🇮 SI Country Token Milestone Tracker</div><div class='card'><h2>Progress to First Token on Republic</h2><div class='progress-bar'><div class='progress-fill' id='progressFill'></div></div><div class='progress-text' id='progressText'>0%</div><button class='button' id='updateBtn'>Update Progress</button></div><div class='card'><h2>Milestones</h2><div id='milestonesContainer'></div></div><div class='card'><h2>Community Engagement</h2><div class='metric'><span>Active Contributors</span><span id='contributors'>0</span></div><div class='metric'><span>GitHub Commits (30d)</span><span id='commits'>0</span></div><div class='metric'><span>Discord Members</span><span id='discord'>0</span></div><div class='metric'><span>Twitter Followers</span><span id='twitter'>0</span></div></div></div><script src='app.js'></script></body></html>"
},
"title": "SI Country Token Milestone Tracker",
"template": "treasury-dashboard",
"description": "Create a static web tool that visualizes the first SI Country's progress toward the first token on Republic, displaying key milestones, dates, and community engagement metrics using only public data."
}