# v2.0 Research: Feature Expectations

**Date:** 2026-05-15

## Authentication

Table stakes:
- User can choose Google or Apple from the login/signup page.
- OAuth callbacks validate state/nonce and provider identity before issuing a local Xtablo session.
- Existing email/password accounts still work.
- If a provider identity has a verified email matching an existing account, the flow links to that account after explicit or safe same-session handling.
- User can later see linked providers in account settings.

Differentiators for later:
- Provider unlinking.
- Multiple emails per user.
- Account merge conflict UI.

## Chat / Messaging

Table stakes:
- Each tablo has one discussion stream.
- Authenticated tablo owner can post a text message.
- Messages persist in Postgres with author, body, created timestamp, edited/deleted markers.
- Other open browsers on that tablo receive new messages without manual refresh.
- Reloading the page shows message history.

Differentiators for later:
- Mentions, reactions, typing indicators, file previews, threads, read receipts, moderation.

## Etapes

Table stakes:
- User can create an etape inside a tablo.
- User can edit/delete/reorder etapes.
- A task can belong to zero or one etape.
- An etape cannot belong to another etape.
- The tasks UI can filter or group by etape while preserving the existing kanban status model.

Differentiators for later:
- Etape progress rollups, due dates, dependencies, templates.

## Events and Individual Planning

Table stakes:
- User can create a scheduled event attached to a tablo.
- Event has title, start time, optional end time, optional description/location.
- User can edit/delete events.
- Tablo detail page shows its events.
- Individual planning page shows the authenticated user's scheduled events across tablos.
- Events are authorized through tablo ownership/membership rules.

Differentiators for later:
- Recurrence, reminders, ICS import/export, external calendar sync, multi-person assignments.

## Scope Boundary

This milestone should deliver working behavior with plain UI. Visual polish is intentionally deferred because the user will provide a beautiful UI later.
