Annotate + Sync: Real-Time Visual Feedback for Your Web Projects
If you’re a developer, web designer, or a vibe-coder-à-la-crème working on a web page you own or built, getting structured feedback from non-technical stakeholders can be a pain. Especially when that stakeholder happens to be your billion-dollar, VC-funded client who needs to drop notes straight onto the live preview without jumping through sign-up hoops.
I created annotate-sync to solve exactly that. It's a fork of reviewjs/annotate with built-in backend syncing capabilities.
Why this setup?
- Zero core pollution: The original
annotate.jsis kept untouched to track the original repo directly. The newannotate-sync.jsadds the hooks, syncing logic, and plugin system without modifying upstream core code. - Google Sheets backend: Your clients or reviewers can drop pins, draw boxes, highlight text, and leave comments directly on your live site. Annotations instantly populate as rows in a shared Google Sheet via Apps Script—no login or account required on their end.
- Hono backend: Prefer hosting your own data? Sync annotations directly to a lightweight Hono server as JSON files.
- Automatic load & pull: Loads annotations automatically on
DOMContentLoadedand locks script configuration viadata-attributes so setup is set-and-forget.
Quick setup
Add these before </body> on any site you build to sync directly to Google Sheets:
<script src="./annotate-sync.js" data-google-sheet="<YOUR_APPS_SCRIPT_URL>" defer></script>
<script src="./sync-engine.js" defer></script>
<script src="./sync-google-sheet.js" defer></script>Check out the code on GitHub or play with the live demo.