Skip to content

Add Open Heart Protocol for anonymous emoji reactions

jedmund requested to merge open-heart-protocol into main

Created by: jedmund

Summary

  • Add self-hosted Open Heart Protocol API endpoint using Redis INCR for atomic emoji counters, with per-IP rate limiting
  • Add reusable HeartButton component with SVG heart icon, localStorage persistence, and accessible markup
  • Place heart buttons on universe posts, individual photos (inside the metadata card), and album pages

Test plan

  • Click heart on a universe post — fills red, stays filled on refresh
  • Click heart on a photo — same behavior, button appears inside metadata card
  • Click heart on an album — same behavior
  • Heart stays filled after page navigation and return
  • Multiple rapid clicks don't send multiple requests (disabled after first click)
  • curl -X POST /api/heart/universe/test -d '❤️'200 "recorded"
  • curl /api/heart/universe/test{"❤️": 1}

Merge request reports

Loading