User Interface medium complexity mobile
2
Dependencies
0
Dependents
2
Entities
0
Integrations

Description

Single-tap sign-up and cancellation widget rendered on the event detail screen. Displays current participant count and the user's own registration status, then dispatches an optimistic mutation for immediate UI feedback while queuing the API call in the Drift mutation outbox when offline. Carries a descriptive accessible label naming the specific event and meets the WCAG 2.2 AA 24×24 CSS pixel touch target requirement.

Feature: Event Sign-up

event-sign-up-flow

Sources & reasoning

Primary UI entry point for the feature. Optimistic mutation with offline outbox queuing is the core UX contract; the WCAG 2.2 AA accessible label and touch target size are hard requirements called out in both the implementation notes and source documentation.

No source references — this artifact was included based on reasoning alone (see above).

Responsibilities

  • Render sign-up and cancel buttons with accessible labels referencing the specific event name
  • Apply optimistic state update on tap and roll back on confirmed API failure
  • Display live participant count updated after any sign-up or cancellation action
  • Support coordinator proxy mode - allow adding or removing a selected peer mentor as attendee on their behalf

Interfaces

signUp(eventId: String) -> Future<void>
cancelSignUp(eventId: String) -> Future<void>
proxySignUp(eventId: String, targetUserId: String) -> Future<void>
proxyCancel(eventId: String, targetUserId: String) -> Future<void>
observeParticipantStatus(eventId: String, userId: String) -> Stream<bool>
observeParticipantCount(eventId: String) -> Stream<int>

Relationships

Dependencies (2)

Components this component depends on

Related Data Entities (2)

Data entities managed by this component