Allow visitors to vouch for / show support for pending events #14

Open
opened 2026-05-05 18:13:26 +00:00 by padreug · 0 comments
Owner

When a non-admin proposes an event, it lands in status = "proposed" and the public GET /api/v1/events/{id} route surfaces it with a "Pending approval" banner on static/js/display.vue (rather than 404'ing). Right now the banner is purely informational — the visitor sees "this event is awaiting admin review" and can't do anything.

Idea: let visitors signal interest / vouch for a pending event so admins have a stronger signal than just "someone proposed this":

  • Banner on display.vue shows a vouch count + a "Vouch for this event" button (when event.status === 'proposed').
  • Admin pending-approvals UI in static/js/index.vue shows the vouch count next to each proposed event so the queue can be triaged by community interest.
  • Backend: a new endpoint (POST /api/v1/events/{id}/vouch?) that records a vouch from the caller. Open question whether vouches are anonymous (single increment, dedupe by IP / fingerprint, abuseable) or identified (require login, dedupe by user_id, more meaningful but cuts off anonymous visitors).

NIP-52 / Nostr considerations:

  • Could surface vouches as a Nostr event kind (custom or co-opt NIP-25 reaction on the kind-31922 calendar event). That would let vouches federate the same way the events themselves already do.
  • Would need to mirror inbound reactions/vouches into the local DB the same way nostr_sync.py mirrors calendar events.

Out of scope:

  • Replacing the admin approval workflow with pure vote-based promotion. Admins still gate publication; vouches are advisory.
  • Implementing this before the v1.3.0+aio.1 rebase has been validated in production.

Pre-reqs: rebase/v1.3.0 branch merged and proven stable.

When a non-admin proposes an event, it lands in `status = "proposed"` and the public `GET /api/v1/events/{id}` route surfaces it with a "Pending approval" banner on `static/js/display.vue` (rather than 404'ing). Right now the banner is purely informational — the visitor sees "this event is awaiting admin review" and can't do anything. Idea: let visitors signal interest / vouch for a pending event so admins have a stronger signal than just "someone proposed this": - Banner on `display.vue` shows a vouch count + a "Vouch for this event" button (when `event.status === 'proposed'`). - Admin pending-approvals UI in `static/js/index.vue` shows the vouch count next to each proposed event so the queue can be triaged by community interest. - Backend: a new endpoint (`POST /api/v1/events/{id}/vouch`?) that records a vouch from the caller. Open question whether vouches are anonymous (single increment, dedupe by IP / fingerprint, abuseable) or identified (require login, dedupe by user_id, more meaningful but cuts off anonymous visitors). NIP-52 / Nostr considerations: - Could surface vouches as a Nostr event kind (custom or co-opt NIP-25 reaction on the kind-31922 calendar event). That would let vouches federate the same way the events themselves already do. - Would need to mirror inbound reactions/vouches into the local DB the same way `nostr_sync.py` mirrors calendar events. Out of scope: - Replacing the admin approval workflow with pure vote-based promotion. Admins still gate publication; vouches are advisory. - Implementing this before the v1.3.0+aio.1 rebase has been validated in production. Pre-reqs: rebase/v1.3.0 branch merged and proven stable.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/events#14
No description provided.