Skip to content
This branch is 36 commits ahead of hackclub-community/rsvp:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5505fcd · · Aug 2, 2026

History

70 Commits
Jul 30, 2026
Aug 1, 2026
Aug 2, 2026
Aug 1, 2026
Aug 2, 2026
Mar 15, 2026
Jul 30, 2026
Jul 30, 2026
Jul 30, 2026
Jul 28, 2026
Jul 30, 2026
Jul 30, 2026
Jul 30, 2026
Jul 28, 2026
Jul 30, 2026
Jul 30, 2026
Jul 30, 2026
Jul 30, 2026
Jul 28, 2026
Jul 28, 2026
Jul 28, 2026

Repository files navigation

RSVP

One-click RSVPs for YSWSes! This currently has over 300 users, with some events seeing as high as 80 verified RSVPs! Join them now: https://rsvp.hackclub.community or https://rsvp.soon.it.

Form customizations automatically appear in Slack when posting a link, along with an inline button to RSVP without leaving Slack. Event hosts can require YSWS eligibility for RSVPs from the event's RSVP preferences.

View RSVP counts of any YSWS at /api/stats, e.g. rsvp.soon.it/fraud at rsvp.soon.it/api/stats?slug=fraud. Responses are in the form: {"count": 42}.

Dev

npm install
npm run dev       # web app on http://localhost:4321
npm run bot       # Slack socket-mode worker, separate terminal
npm  test         # domain unit tests

Run

Requires a .env (see .env.example). SESSION_SECRET and PUBLIC_URL must be set — the app refuses to start in production without them..

npm ci
npm run migrate          # apply database migrations (deploy step, not on every restart)
npm run build
pm2 start ecosystem.config.cjs
pm2 saveave

This starts two processes: rsvp-web (Next.js on 0.0.0.0:4321) and rsvp-bot (Slack socket-mode client and durable queue worker). Logs: pm2 logs rsvp-web / pm2 logs rsvp-bot.

The Slack app needs chat:write, im:write, links:read, links:write, users:read, and the channel-type-specific join/invite scopes. In the Slack app settings::

  1. Enable Socket Mode and interactivity.
  2. Under Event Subscriptions, subscribe to the link_shared bot event.
  3. Under App unfurl domains, register every hostname in PUBLIC_URL without the protocol (for example, rsvp.alexradu.co).
  4. Reinstall the app to the workspace after changing scopes or unfurl domains.

Slack only sends link_shared events for registered domains. The rsvp-bot process must also be running for the event link to receive the inline RSVP button. Channel access is granted only after a fresh Hack Club Auth verification check.ck.

Location autocomplete uses the server-only GEOAPIFY_API_KEY. Autocomplete UI must retain the Geoapify/OpenStreetMap attribution. Manual location entry remains available when the provider is disabled or unavailable.e.

Queue health and an explicit single-delivery retry:

npm run queue:status
npm run queue:retry --  delivery-id>gt;

These commands intentionally do not print message text or attendee identity.

Before a migration deploy, stop writes briefly and back up SQLite:

sqlite3 data/rsvp.db ".backup 'data/rsvp-before-phase2.db'"
npm ci
npm run migrate
npm run build
pm2 reload ecosystem.config.cjs
npm run queue:statustatus

Verify both web and worker are online after reload. Code rollback is safe only to a version that tolerates the additive schema; do not reverse live migrations. Restore the backup only for migration corruption.n.

Feedback links are signed with a domain-separated key derived from SESSION_SECRET. Rotating that secret invalidates outstanding feedback links, so do not rotate it while a feedback form is open unless campaigns will be intentionally reissued. Logs and analytics must never record feedback URLs, answers, OAuth/Slack tokens, or raw location-provider responses.es.

Contributing

PRs are welcome! Please message on Slack first if it's a non-trivial change.

Credits

This project is a fork of the Hack Club rsvp tool. The original Astro implementation and its design are the work of the upstream authors; this fork ports it to Next.js and builds on it..

AI Usage

This project contains significant AI usage with interface design and bugfixing.

About

Quick & simple RSVPs for Events and Meetups, auto-embeddableable

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Contributors

No contributors

Languages

  • TypeScript99.7%
  • Other0.3%