GRINDCTRL dashboard foundations, now on Next.js.
The UI shell now lives in this repo, uses real Clerk auth, reads the existing Supabase dashboard contracts, and keeps the public widget runtime separate.
Install contract
<script>
window.GrindctrlSupport = window.GrindctrlSupport || [];
window.GrindctrlSupport.push({ embedKey: 'gc_live_xxxxx' });
</script>
<script async src="https://cdn.grindctrl.com/widget/v1/loader.js"></script>Real dashboard routes
Overview, install, branding, intents, domains, and leads now have dedicated routes.
Runtime preserved
The widget loader/runtime remains external to React and keeps the current production contract.