What
Creators schedule time-boxed themed group chat events in their town — e.g., "Roast Battle Fri 7pm", "Poetry Night Sat 9pm" — and their friends get an invite / reminder.
Why
Solves the empty-town-at-wrong-time problem. Town's best moments happen when humans + NPCs are together in a group chat, but there's no way today to say "let's all be here at 7pm." Events turn a town from a place you might wander into into a place with a reason to show up. Fits the cozy-multiplayer social ritual.
Flows
- Create — creator schedules an event: title, description, town, building (optional), start time, duration.
- Invite — friends roster gets an in-app invite / reminder.
- RSVP — one-click "I'll be there".
- Live — at start time, a themed group chat room opens (auto-created topic); attendees get a "join now" prompt.
- End — after the window, the room becomes read-only; a highlight postcard can be shared.
Rough scope
- Extend `GroupTopic` model with `scheduledFor` + `durationMinutes` + `invitedKeys[]`
- `POST /api/towns/[slug]/events` — schedule
- `GET /api/towns/[slug]/events` — list upcoming
- Notification pipeline (in-app + optional email) for invites + reminders
- Auto-open the Centrifugo room at start time; close after duration
- Event card on `/explore` — surface public events
Dependencies
Notes
- Timezone handling: store UTC, render local.
- Grace window (open 5 min early, soft close 10 min late) for late arrivals.
What
Creators schedule time-boxed themed group chat events in their town — e.g., "Roast Battle Fri 7pm", "Poetry Night Sat 9pm" — and their friends get an invite / reminder.
Why
Solves the empty-town-at-wrong-time problem. Town's best moments happen when humans + NPCs are together in a group chat, but there's no way today to say "let's all be here at 7pm." Events turn a town from a place you might wander into into a place with a reason to show up. Fits the cozy-multiplayer social ritual.
Flows
Rough scope
Dependencies
Notes