Speaker Dashboard
A personalised view of upcoming engagements, deadlines, past event history, profile, and company info
Implemented β Epic 6.4 (QA score 98/100), Cognito auth refactor in Epic 11.E.3, company self-service in Epic 11.G.1
Last Updated: 2026-06-13
Overview
The Speaker Dashboard is the personal hub for invited and confirmed speakers. It shows all upcoming BATbern events the speaker is involved in, highlights approaching deadlines, gives access to past event history and presentation materials, and lets the speaker manage their profile and their companyβs public footprint.
Access is via the speakerβs AWS Cognito session β the same account used across the BATbern app. After signing in (email + password, or βContinue with Googleβ) the speaker lands on /speaker-portal/dashboard. There is no separate speaker login and no magic-link token.
Accessing the Dashboard
Speakers reach the dashboard by signing in to BATbern at www.batbern.ch:
- The invitation email delivers the login link + temporary password (first sign-in forces a password change).
- The acceptance confirmation email and deadline reminder emails (Tier 1, 2, 3) link to the same login page.
- Once signed in, the dashboard is the default landing page for the SPEAKER role and is always reachable from the navigation menu.
The dashboard route is simply:
https://www.batbern.ch/speaker-portal/dashboard
No token is appended to the URL. Per-event actions use the eventβs eventCode in the path (e.g. /speaker-portal/events/{eventCode}/content).
Dashboard Layout
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BATbern Speaker Portal β
β β
β π€ Hans MΓΌller β
β Senior Architect, MΓΌller Architekten AG β
β Profile: ββββββββββ 80% complete [Update Profile] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β UPCOMING EVENTS β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β BATbern 57 β 15 March 2026 β β
β β π Bern, Switzerland β β
β β β β
β β Session: Digital Transformation in Practice β β
β β Status: π‘ Content Submission Needed β β
β β β β
β β β οΈ Content deadline: 1 Mar 2026 (12 days away) β β
β β β β
β β Organiser: Sarah Keller sarah.keller@batbern.ch β β
β β β β
β β [ Submit Content ] [ Update Profile ] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PAST EVENTS β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β BATbern 56 β 12 September 2025 β β
β β Session: Sustainable Urban Planning β β
β β Materials: β
Available [Download] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The dashboard lists every event the authenticated speaker is associated with β the backend resolves them from the speakerβs Cognito username (no eventCode needed for the dashboard itself).
Upcoming Events Section
Shows all events where the speaker is in an active state (invited, accepted, content submitted, quality reviewed).
Each event card displays:
| Field | Description |
|---|---|
| Event name & date | BATbern event name and full date |
| Location | Venue/city |
| Session title | Assigned session (if set) |
| Status | Current workflow state (see below) |
| Deadlines | Response and/or content deadline with urgency colour |
| Organiser | Name and email address (click to send email) |
| Quick actions | Contextual buttons based on current status |
Events are sorted by date ascending (soonest first).
Workflow Status Labels (8-state model, ADR-009)
| Status Shown | Internal State | Meaning |
|---|---|---|
| Invitation Pending | INVITED | Speaker hasnβt responded yet |
| Accepted | ACCEPTED | Response received, content not yet submitted |
| Content Submission Needed | ACCEPTED + content not submitted | Prompt to submit |
| Content Under Review | CONTENT_SUBMITTED | Moderator is reviewing |
| Revision Requested | CONTENT_SUBMITTED + revision flag | Speaker must resubmit |
| Content Approved | QUALITY_REVIEWED | Approved, awaiting slot |
| Confirmed / Publishable | QUALITY_REVIEWED + slot assigned | Content reviewed AND a slot is assigned (is_publishable) |
| Declined | DECLINED | Terminal βnot happeningβ state |
The legacy
CONFIRMEDstate was removed in Epic 11. βConfirmed / Publishableβ is now the derived conditionQUALITY_REVIEWED β§ slot assigned.
Deadline Urgency Colours
Deadlines are colour-coded based on how much time remains:
| Colour | Time Remaining | Meaning |
|---|---|---|
| π’ Green | More than 14 days | On track |
| π‘ Amber | 7 β 14 days | Action soon |
| π΄ Red | Under 7 days | Urgent |
Quick-Action Buttons
The dashboard shows contextual action buttons based on the speakerβs current status:
| Status | Button(s) Shown |
|---|---|
| INVITED | Respond to Invitation |
| ACCEPTED (no content) | Submit Content, Update Profile |
| CONTENT_SUBMITTED | View Submission, Update Profile |
| CONTENT_SUBMITTED + revision flag | Revise and Resubmit |
| QUALITY_REVIEWED | View Submission, Update Profile |
Each button navigates to the event-scoped page (/speaker-portal/events/{eventCode}/...) under the same Cognito session β no re-authentication.
Past Events Section
Shows all events where:
- The event date is in the past, and
- The speaker reached
ACCEPTEDor later
Each past event card shows:
- Event name and date
- Session title and topic
- Presentation materials availability
- Download link (if materials are published)
Events are sorted by date descending (most recent first).
Profile Section
The dashboard header shows:
- Speaker photo (if uploaded)
- Name and company
- Profile completeness percentage β encourages speakers to fill in missing fields
Clicking Update Profile opens the profile page (/speaker-portal/profile), which reads and writes the speakerβs identity via the standard CUMS /users/me endpoints (not per-event token endpoints). Speakers can edit:
- Bio (optional)
- Expertise areas
- LinkedIn URL
- Upload a professional photo (presigned-S3 upload)
- Upload a CV
My Company Section (Speaker Company Self-Service)
Implemented β Story 11.G.1
Speakers whose company logo, display name, and website appear on the public site beside their session can keep that footprint current themselves β without emailing an organizer. A βMy Companyβ section on the profile page (/speaker-portal/profile) lets the speaker propose changes to three fields, with an organizer reviewing the change before it goes live.
How it works:
- The section appears only when the speaker is linked to a company (
user.companyNameis set). - With no pending change, the speaker sees an inline edit form with exactly three fields β Display name, Website, and Company logo (uploaded via the existing presigned-S3 flow). At least one field must change to submit.
- Submitting sends the change as a proposal (status
PENDING) β it does not update the live company immediately. An organizer review task is created. - While a proposal is pending, the form is replaced by an amber banner (βYou have a company-info update awaiting organizer reviewβ) plus an expandable βView what I submittedβ diff (current β proposed). No resubmit is possible until the current one is decided (one pending proposal per company).
- An organizer reviews the proposal on
/organizer/companies(a βPending updatesβ badge + filter chip + side-by-side review panel). On Approve, the live company fields update; on Reject, the company is untouched and the speaker receives a notification email (DE/EN) with the reason and a link back to/speaker-portal/profile#my-companyto resubmit.
This keeps speakers self-sufficient for their public company footprint while preserving an organizer sign-off gate.
Accessibility
The Speaker Dashboard is built to WCAG 2.1 AA standards (unchanged through the Epic 11 refactor):
- β All interactive elements have ARIA labels
- β Full keyboard navigation (Tab, Enter, Escape)
- β Semantic HTML (header, nav, section, article)
- β Minimum 44px touch targets on mobile
- β Visible focus states on all focusable elements
- β Colour contrast ratios verified
- β Screen reader compatible (tested with VoiceOver & NVDA)
Multi-Role Navigation
A speaker who is also an organizer or partner uses a single Cognito session. The navigation menu renders grouped sections β a βSpeakerβ section (dashboard, content, profile) and an βOrganizerβ (or βPartnerβ) section β separated by dividers. Switching between portals is a normal nav click; there is no re-authentication and no separate per-role login.
Language Support
All dashboard text and status labels are localised in all 10 supported locales; the speaker emails are authored in German and English (with English fallback). The language is determined by the speakerβs locale preference or the browserβs Accept-Language header.
Troubleshooting
βI canβt sign inβ
Use the standard BATbern login page. If the temporary password from the invitation email has expired or was never used, ask the organizer to resend the invitation (issues a fresh temporary password), or use Cognitoβs self-service βForgot passwordβ flow. βContinue with Googleβ works if the Google account matches the invited email.
βMy upcoming event is not showingβ
Check that:
- The speaker was promoted to at least
READY(which provisions the account) and thenINVITEDβ not just left atIDENTIFIEDorCONTACTED - The event is in the future
- The speaker is signed in with the correct account (the email the invitation was sent to)
βI canβt see the Submit Content buttonβ
The Submit Content button only appears when:
- The speakerβs status is
ACCEPTED, and - A session has been assigned (content cannot be submitted without a session)
Ask the organiser to confirm that a session has been linked in Phase D: Slot Assignment.
βI donβt see the My Company sectionβ
The section is hidden when the speaker isnβt linked to a company. Ask an organizer to set your company assignment first.
Related
- Invitation & Response β β Accepting or declining an invitation
- Content Submission β β Submitting presentation title, abstract, and file
- Phase B: Outreach β β Organiser management of speaker pipeline
- Phase C: Quality Review β β How content is reviewed after submission