Role boundary

Operators manage meetings, attendance, corrections, excuses, reports, kiosk status, and can view the roster. Admins can also modify the roster, grant Admin/Operator credentials, and manage organization, security, integrations, privacy, updates, and destructive configuration.

Start on Dashboard

Dashboard is the unified place to schedule meetings and open their attendance workspaces. It replaces the retired Home, Meetings, and Attendance sections. Choose Calendar to browse a rolling five-week schedule or Table to search and manage the full meeting list. Use the Meeting picker, a calendar event, or a table row to open one meeting.

The remaining primary areas are Reports, Roster, and Kiosks. Admins also have Settings. To manage dashboard accounts and their roster links, use Settings → Access, not Roster. After setup, an Admin can reopen the shared checklist through Settings → Guided Setup → Open guided setup.

Schedule and run a meeting

  1. On Dashboard, choose Add meeting. Enter the title, date, start time, end time, optional notes, attendance weight, and whether attendance is required. For a recurring schedule, choose daily, weekly, every two weeks, or monthly and enter a series end date. The schedule is saved only when the dialog reports that the meeting or series was created.
  2. Open the meeting from Dashboard. Its workspace shows the meeting lifecycle, schedule, attendance requirement, weight, recurrence, notes, and the attendance table. Choose Edit, Duplicate, or Delete there when needed. For a recurring meeting, edit or delete either this occurrence or this and future occurrences. Deletion returns to Dashboard with a temporary Undo option; preserved attendance history remains available for audit.
  3. Each attendee scans on arrival and departure. The physical kiosk resolves the eligible meeting from the scan time, so attendees do not choose a meeting. One scan is Active · not checked out; a completed arrival and departure is Present. After the meeting end plus the organization-wide late-scan allowance, an incomplete pair becomes absent unless a correction or excuse overrides it.
  4. Use Refresh attendance to reload the current table when needed. Operators and Admins can mark an attendee present, excused, or absent. Excusing or marking absent requires a reason; marking present accepts an optional note. Admins can also use Clear to remove recorded attendance for that attendee and meeting. These changes retain their audit history.
  5. Open Kiosks to review pairing, reader, network, pending queue, last successful sync, installed release, and heartbeat. Admins can use the available maintenance and recovery actions there. A browser simulator is not evidence of physical kiosk operation.
  6. Open Reports to filter attendance or choose Download attendance CSV. The default report uses the configured reporting baseline, or all preserved completed history when no baseline is set.

Import a roster safely

Upload or paste CSV on Roster, select Preview roster, and inspect the parsed table. Choose Add or update to retain people not in the file, or Replace active roster to deactivate omitted people. Replacement preserves historical attendance and dashboard credentials. No roster write occurs until the confirmation button is selected.

Optional communication workflows

G

Google Calendar

An Admin connects a writable calendar in Settings → Integrations. In a meeting workspace, choose Sync configured calendars to send that meeting's title, notes as the description, and times and review the provider result.

R

Resend

Send one idempotent missed-meeting email or an individual attendance report to the email stored in the roster.

D

Discord attendance

Linked members can privately run /attendance-report. Every five minutes, eligible meetings can also notify only linked absent members after scanning closes. A signed recipient button opens a contest; an Operator reviews it with a required note before attendance can change.

K

Discord status/calendar

Upsert meeting calendar events. Authenticated heartbeats maintain one persistent kiosk-status message, and a five-minute reconciliation marks stale kiosks offline without blocking attendance.

Sanitized LancerLogin Admin integrations screen showing encrypted saved values and rotate, test, and remove controls.
1

Check status, not secrets

Configured status is visible, while saved credential values remain hidden.

2

Verify before relying on it

Each provider must complete its real Google, email-code, or signed Discord proof.

3

Rotate in place

Replacement values overwrite the encrypted configuration without exposing the previous one.

Configure an optional integration

Open Settings → Integrations as an Admin. Open Google OAuth, Resend, or Discord for an official console link, exact callback value, required access, and guided verification. Fields appear immediately after the copy step that uses them. Saved secret values remain hidden, and a provider shows Configured only after end-to-end verification.

Enable the Discord member commands

In Settings → Integrations, save the bot token, Application ID, public key, Server ID, and attendance channel ID, then choose Send Discord verification. LancerLogin validates that the bot token belongs to the saved application and server and creates or updates exactly the guild-scoped /pair and /attendance-report commands. No manual HTTP request or command payload is required.

Guild scope keeps both commands out of direct messages and every other server. Rerunning verification or replacing credentials reconciles the same two commands without duplicates. If Discord rejects the credential, identifiers, permissions, command update, or verification message, LancerLogin remains in Verification required state and shows safe retry guidance.

Keep the exact Interactions Endpoint URL from LancerLogin in Discord's General Information page. Install the bot with only the access listed in the Integrations guide and restrict it to the attendance channel. Both commands return ephemeral responses; /attendance-report works only for the invoking Discord account's single active roster link and never accepts another member ID.

Review an available update

An Admin-only notice appears when a newer public release is available. Open Settings → Updates. In the Dashboard card, choose Back up and begin update, review the pinned release notes, download the entire-installation backup, save it securely, and confirm that it was saved. Then choose Start update to vMAJOR.MINOR.PATCH once. Refreshing resumes progress without starting again. Review required environment approval through the displayed GitHub link, and choose Reload updated dashboard only after verified completion. Diagnostics and manual recovery contains the recovery link. If it reports recovery required, stop and obtain authorized recovery assistance. Never automatically restore D1.

The Physical kiosk card updates the Pi separately. Choose Update to latest stable only when the kiosk is online and a newer compatible stable release is shown, then wait for it to return online with an updated installed-release status. If the release lookup is unavailable or the card does not show completion, treat the result as unconfirmed rather than retrying blindly. Use the Administrator's available on-device or remote access method, such as Raspberry Pi Connect or SSH, for an approved recovery procedure.

Back up, restore, delete, or reset

Settings → Data has independent backup, restore, and delete controls for Meetings and attendance, Roster, and Entire installation. Files restore only to their matching category. Entire-installation backups contain sensitive hashes and encrypted secrets, so protect them like administrator credentials. Reset onboarding clears only checklist progress. Attendance CSV protects spreadsheet formula markers as text. For files over 10 MiB or infrastructure recovery, use the repository’s token-neutral D1 helpers documented in docs/BACKUP-RESTORE.md.