Dashboard flow

The dashboard is where a speaker’s day starts, before a single attendee has opened a link. It’s a different LiveView, and a different part of the workflow, than Analytics: the dashboard is about setting a talk up, analytics is about reviewing it afterward.

Reaching /dashboard requires a signed-in user, using the same login covered in Authentication: a magic link or an OAuth provider, no separate password.

Creating a talk

A speaker enters a title, and the slug auto-generates from it. The talk is scoped to the logged-in user through Talks.create_talk(scope, attrs), which sets the owning user id from the current scope rather than from anything client-supplied, the same Scope pattern covered in Authentication.

Getting a QR code

Each talk gets a QR code, meant for display on the speaker’s first slide so attendees can scan it and land straight on the talk’s page. The QRCode module wraps the EQRCode library to produce a PNG encoded as a base64 data URI, ready to drop into an <img> tag or offer as a download.

qr_code.ex
url = SpeechwaveWeb.Endpoint.url() <> "/t/#{talk.slug}"
# e.g. https://speechwave.live/t/my-talk

Where the code lives


This site uses Just the Docs, a documentation theme for Jekyll.