FixPin

Developers

FixPin is two repositories:

  • fixpin: the app (pwa/), the Cloudflare Worker (worker/) and this website (website/).
  • fixpin-extension: the browser extension.

The API#

Method Path What it does
POST /api/reports Create a report. Returns id, ownerToken, expiresAt.
GET /api/reports/:id Read a report. Send the X-Passcode header if it has one.
DELETE /api/reports/:id Delete early. Needs the X-Owner-Token header.

A report is JSON: url, title, note, ua, viewport (w, h, dpr), spots (x, y, w, h as fractions 0 to 1 of the screenshot, plus selector and note), errors (type, msg), screenshot (a PNG, JPEG or WebP data URL), days (1, 7 or 30) and an optional passcode.

The server keeps only the fields it knows, at sane sizes, and only accepts images as screenshots. CORS is open, so any tool can create reports.

Storage#

Cloudflare KV with a time-to-live equal to the expiry, so deletion needs no job. The owner token and passcode are stored only as SHA-256 hashes.

Develop#

npm install
npm test
npm run dev

Still stuck? Check the FAQ, or ask on GitHub.