Annotate anything

Freedback feedback targets are just URIs. Here it attaches stars, thumbs, comments and tags to real external resources that host no feedback UI of their own β€” and that this project does not control.

The point: the target site is never involved. Feedback lives on a Freedback server keyed by the target URI, and anyone pointing a widget at the same URI sees the same aggregate. The three resources below are real external URIs the project does not control β€” the feedback you see on them is real, shared feedback left by other visitors of this page. That is the whole point.

A law β€” GDPR (Regulation (EU) 2016/679)

http://data.europa.eu/eli/reg/2016/679/oj

The EU publishes the GDPR at a stable ELI (European Legislation Identifier) URI. There is no comment box on eur-lex.europa.eu β€” yet we can still rate how clear the regulation is and leave comments against that exact identifier. The legislation site is never contacted.

How clear is this regulation?

A Wikipedia article β€” β€œWeb annotation”

https://en.wikipedia.org/wiki/Web_annotation

Wikipedia has its own talk pages, but nothing that lets an outside protocol attach typed ratings or tags. Freedback treats the article URL as a target and aggregates stars and folksonomy tags against it, independently of MediaWiki.

Rate this article:

An arbitrary web page β€” W3C Web Annotation Data Model

https://www.w3.org/TR/annotation-model/

A W3C Recommendation is just a published page. With no feedback UI of its own, it can still collect a thumbs verdict and comments keyed to its URL β€” exactly the way Freedback would let you annotate any blog post or specification.

Useful spec?

How this works

Each widget is a single custom element whose data-target is the external URI verbatim β€” no rewriting, no proxy. For example, the GDPR stars widget is literally:

<freedback-stars
  data-target="http://data.europa.eu/eli/reg/2016/679/oj"
  data-read="https://freedback-demo.fly.dev/annotations/"
  data-publish="https://freedback-demo.fly.dev/annotations/"
  data-sign
  data-license="https://creativecommons.org/licenses/by/4.0/"></freedback-stars>

data-read and data-publish both point at the live demo feedback server's /annotations/ endpoint (reads by target, signed writes), and data-sign selects the portable, self-signed P-256 identity. The target site appears nowhere in that configuration. Comment and tag widgets use a #fragment on the same resource so their counts never mix with the rating widget's.