You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9931f47
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: specs/behaviors/events.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ An event may carry an **agenda**: an ordered list of time slots within that one
76
76
77
77
## RSVP
78
78
79
-
An RSVP is a public statement by a signed-in member that they're coming. It is **binary**: an `EventRsvp` record exists (going) or it doesn't. There is no "maybe" and no stored "not going" — withdrawing an RSVP deletes the record. Meetup dropped "maybe" years ago for the same reason: it tells organizers nothing.
79
+
An RSVP is a public statement by a signed-in member that they're coming. It is **binary**: an `EventRsvp` record exists (going) or it doesn't. There is no "maybe" and no stored "not going" — withdrawing an RSVP deletes the record. Meetup dropped "maybe" years ago for the same reason: it tells organizers nothing. Someone unsure says yes, adds the event to their calendar, and cancels if plans change; cancelling is one visible button on the event page, and the event description asks people to cancel so the space goes to someone else.
80
80
81
81
### Who can RSVP
82
82
@@ -97,11 +97,11 @@ RSVP records live in the public data repo and the attendee list on the event pag
The answer can be changed any time while the RSVP window is open and never sends mail. The point is organizational, not gatekeeping: the attendee list groups going members by project (ordered by attendee count, then title), then **New to Code for Philly**, then **Looking for a project**, then **Not sure yet**. Organizers see at a glance who to welcome at the door and which tables will be full; newcomers see that they won't be the only new face. This is what laddr's check-in-by-project did well, with the newcomer case made explicit.
104
+
The answer can be changed any time while the RSVP window is open and never sends mail. The point is organizational, not gatekeeping: the attendee list shows going members who haven't answered first, directly under the "Going" heading with no subheading of their own, then groups the rest by project (ordered by attendee count, then title), then **New to Code for Philly**, then **No project yet**. Group names mirror the choice the member clicked; the unanswered get no label because any label ("Not sure yet", "Undecided") reads as doubt about attending, and listing them first keeps them from looking like members of the last labelled group. Organizers see at a glance who to welcome at the door and which tables will be full; newcomers see that they won't be the only new face. This is what laddr's check-in-by-project did well, with the newcomer case made explicit.
Copy file name to clipboardExpand all lines: specs/screens/event-detail.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ Across the top of the content area, before the title:
44
44
| ------------ | -------- |
45
45
| Anonymous, RSVPs open | Button "Sign in to RSVP" → `/login?return=/events/<slug>`; helper "Your name will appear on the attendee list." |
46
46
| Signed in, not going, RSVPs open | Primary button "I'm going"; same helper text |
47
-
| Signed in, going, RSVPs open | Success state "You're going ✓" with a quiet "Can't make it?" link that withdraws (confirm); below it the **follow-up** per [behaviors/events.md](../behaviors/events.md#the-follow-up-what-are-you-coming-to-do): the prompt "What are you coming to do? (optional)" with three choices — "I'm new to Code for Philly", "I don't have a project yet", "I'm coming to work on [Pick a project ▾]". The picker is a find-as-you-type combobox that never lists the whole catalog: opened with nothing typed, it offers two groups — "Your recent projects", the projects the member named on their own RSVPs to other events (`viewerRecentProjects`, newest first), then "Other active projects", the last ten distinct projects anyone named on any RSVP (`recentProjects`, newest first) — a project appearing once in the first group it belongs to, empty groups omitted, so a newcomer sees the teams that actually meet without searching; only when both are empty, nothing but the input's own hint "Type a project name"; once the member types, it searches projects by title and text (`GET /api/projects?q=`), showing at most eight in relevance order, or "No projects match". Arrow keys, Enter and Escape work as in any combobox. Selecting a choice saves immediately; the chosen one shows as selected with a "Change" affordance. Unanswered shows the three choices; never a blank. |
47
+
| Signed in, going, RSVPs open | Success state "You're going ✓" with an outline "Cancel RSVP" button beside it that withdraws (confirm dialog "Cancel your RSVP?" with "Keep my RSVP" and "Cancel RSVP"); below it the **follow-up** per [behaviors/events.md](../behaviors/events.md#the-follow-up-what-are-you-coming-to-do): the prompt "What are you coming to do? (optional)" with three choices — "I'm new to Code for Philly", "I don't have a project yet", "I'm coming to work on [Pick a project ▾]". The picker is a find-as-you-type combobox that never lists the whole catalog: opened with nothing typed, it offers two groups — "Your recent projects", the projects the member named on their own RSVPs to other events (`viewerRecentProjects`, newest first), then "Other active projects", the last ten distinct projects anyone named on any RSVP (`recentProjects`, newest first) — a project appearing once in the first group it belongs to, empty groups omitted, so a newcomer sees the teams that actually meet without searching; only when both are empty, nothing but the input's own hint "Type a project name"; once the member types, it searches projects by title and text (`GET /api/projects?q=`), showing at most eight in relevance order, or "No projects match". Arrow keys, Enter and Escape work as in any combobox. Selecting a choice saves immediately; the chosen one shows as selected with a "Change" affordance. Unanswered shows the three choices; never a blank. |
48
48
| RSVPs closed (cancelled, past) | No control; the count line still renders |
49
49
50
50
Under the control: "14 going" linked to the attendee list anchor. When `meetupUrl` is set, a small muted "Also listed on Meetup ↗" link sits *below* everything in this block, never beside the button.
@@ -63,7 +63,7 @@ Across the top of the content area, before the title:
63
63
64
64
1.**Attendees** (`id="attendees"`)
65
65
- Heading "Going (14)"
66
-
- Grouped per [behaviors/events.md](../behaviors/events.md#the-follow-up-what-are-you-coming-to-do): a subheading per project (linked to `/projects/<slug>`) with that group's avatars (48px, name on hover, linked to `/members/<slug>`), then "New to Code for Philly", "Looking for a project", and "Not sure yet", each only when non-empty. When nobody has answered the follow-up, no subheadings — just the avatar grid.
66
+
- Grouped per [behaviors/events.md](../behaviors/events.md#the-follow-up-what-are-you-coming-to-do): a subheading per project (linked to `/projects/<slug>`) with that group's avatars (48px, name on hover, linked to `/members/<slug>`), The members who haven't answered come first, as an avatar grid with no subheading directly under "Going (N)"; then a subheading per project (linked to `/projects/<slug>`) with that group's avatars (48px, name on hover, linked to `/members/<slug>`), then "New to Code for Philly" and "No project yet", each only when non-empty. When nobody has answered the follow-up, that first grid is the whole list.
67
67
- Empty: "Nobody has RSVP'd yet. Be the first!" (or "Nobody RSVP'd." on past events)
68
68
- For a cancelled event the heading reads "Had planned to go (14)"
69
69
@@ -80,7 +80,7 @@ Across the top of the content area, before the title:
0 commit comments