Jan So7o: I, then, defy.

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.js is kept untouched to track the original repo directly. The new annotate-sync.js adds 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 DOMContentLoaded and locks script configuration via data- 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.