Seva Counter
Daily toolkit for CSC & Jan Seva Kendra operators
Everything you open ten times a day, kept in one place.
Photo & print tools, PDF utilities, shop registers, calculators, and direct links to every Aadhaar, PAN, banking and welfare portal a VLE touches daily — searchable from a single counter.
Tip: type a category word like “photo”, “pdf”, “aadhaar”, “bank” or “calculator”.
All tools
Next token number to hand out
This counter lives in this browser tab only and resets when you close the page — useful as a simple stand-in for a paper token box during the day.
`; host.querySelector('#tqNext').addEventListener('click', ()=>{ shopState.tokenNo++; host.querySelector('#tqDisplay').textContent = '#'+String(shopState.tokenNo).padStart(3,'0'); updateTokenPreview(); }); host.querySelector('#tqReset').addEventListener('click', ()=>{ shopState.tokenNo = 1; host.querySelector('#tqDisplay').textContent = '#001'; updateTokenPreview(); }); };// ---- Daily Collection Register ---- TOOL_RENDERERS['daily-register'] = function(host){ function render(){ const total = shopState.ledger.reduce((s,r)=>s+r.amount,0); host.innerHTML = `| # | Service | Amount | |
|---|---|---|---|
| ${i+1} | ${r.service} | ₹${r.amount.toFixed(2)} | |
| No entries yet today. | |||
This register lives only in this browser tab and clears when the page is closed — copy the total into your permanent register at day end.
`; host.querySelector('#drAdd').addEventListener('click', ()=>{ const service = host.querySelector('#drService').value.trim(); const amount = parseFloat(host.querySelector('#drAmount').value)||0; if(!service){ alert('Enter a service name.'); return; } shopState.ledger.push({date:new Date().toISOString().slice(0,10), service, amount}); render(); }); host.querySelectorAll('[data-idx]').forEach(b=>b.addEventListener('click', ()=>{ shopState.ledger.splice(parseInt(b.dataset.idx,10),1); render(); })); } render(); };// ---- Word & Character Counter ---- TOOL_RENDERERS['word-counter'] = function(host){ host.innerHTML = `UIDAI guidance is to show only the last 4 digits on printed photocopies. This masks the number for display/printing only — it does not verify the number with UIDAI.
`; host.querySelector('#amRun').addEventListener('click', ()=>{ const raw = host.querySelector('#amInput').value.replace(/\D/g,''); const wrap = host.querySelector('#amResultWrap'); if(raw.length!==12){ wrap.innerHTML = 'This only checks the 5-letters + 4-digits + 1-letter pattern — it does not verify the PAN with the Income Tax Department.
`; host.querySelector('#pcRun').addEventListener('click', ()=>{ const val = host.querySelector('#pcInput').value.trim().toUpperCase(); const ok = /^[A-Z]{5}[0-9]{4}[A-Z]$/.test(val); const wrap = host.querySelector('#pcResultWrap'); wrap.innerHTML = `