{{ toast }}

{{ boardEmptyTitle }}

{{ boardEmptyBody }}

{{ silo.name }}
{{ silo.description }}
{{ silo.matchedCount }} candidates touching this silo
{{ silo.filledCount }} filled·{{ silo.assignedCount }} assigned·{{ silo.openCount }} open
{{ role.orderBadge }} {{ role.title }} {{ role.assignedName }} {{ role.statusLabel }} {{ role.matchCount }} matches
+ Add New Role
Add silo
{{ selectedRole.orderBadge }} {{ selectedRole.siloName }}

{{ selectedRole.title }}

FILLED
{{ selectedRole.navPosition }}
{{ selectedRole.lockLabel }}

{{ selectedRole.description }}

{{ cf.label }} — {{ cf.value }}
{{ selectedRole.slotsSummaryLabel }}
{{ selectedRole.assignHelp }}
Matched to this role
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
No candidates matched yet.
Recommended in Previous Roles
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
Other candidates
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ selectedRole.othersEmptyLabel }}
Selection order
{{ row.orderBadge }}
{{ row.siloName }} {{ row.title }}
{{ row.description }} {{ row.detailLine }}
{{ row.assignedName }} {{ row.statusLabel }}
Nothing matches yet. Drop a filter and try again.

All {{ viewAll.candidateLabel }}

{{ viewAll.countLabel }}
Show
Search these fields
Ranges
{{ viewAll.openRange.label }} {{ viewAll.openRange.rangeHint }}
to
{{ row.initials }}
{{ it.nameText }} {{ it.tagText }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ viewAll.moreRowsLabel }}
Nothing matches yet. Drop a filter and try again.
{{ candidateModal.heading }}
{{ candidateModal.initials }}
{{ candidateModal.photoNote }}
Recommend for roles
{{ candidateModal.selectedRoleCount }}
Nothing matches. Clear the search to see every role.
{{ grp.name }}
Export to Excel
{{ exporter.subtitle }}
Perspective
{{ p.title }}
{{ p.desc }}
Scope
{{ exporter.siloLabel }}
{{ s.label }}({{ s.count }})
Status to include
{{ s.label }}({{ s.count }})
Sheet layout
Columns
Click to toggle · drag to reorder
{{ c.label }}
Formatting
File name
Summary
{{ s.value }}{{ s.label }}
Sheets to generate
{{ n }}
{{ exporter.warning }}
Roster Board

Sign in

{{ loginScreen.resolvedUrl }}hosting@eventroster.app
Signing in as database superuser: {{ loginScreen.suEmailShown }}
{{ loginScreen.error }}
{{ loginScreen.status }}
{{ loginScreen.methodToggleLabel }}

Enter your code

If an account exists for {{ loginScreen.suEmailShown }}, a 6-digit code was sent. Nothing arrives for an address that has no account on this board.

{{ loginScreen.error }}
Start over {{ loginScreen.resendLabel }}
{{ st.num }} {{ st.label }}

Configure email

Optional here, and changeable later in Settings → Email. Without SMTP no one can log in — OTP codes have nowhere to send.

This server already has SMTP configured — {{ wizardScreen.smtpExistingSummary }}. Send a test message to confirm it still works, or continue to the next step.
Only needed if your provider rejects the default.
Sending…
{{ wizardScreen.wizardError }}
{{ warn }}
No SMTP configured — nobody can log in until you set it up in Settings → Email.
{{ wizardScreen.testSentLabel }}

Build the board

Creating collections is a schema change, so it needs the database superuser once. Held in memory only.
Checking…
{{ wizardScreen.wizardError }}
Creates any collection the board still needs, and adds missing fields to the ones already there. Safe to run again.
Creating collections…
Superuser verified
{{ col }}
{{ wizardScreen.yamlFileName }} — {{ wizardScreen.yamlCounts.fields }} candidate fields, {{ wizardScreen.yamlCounts.roleFields }} role fields, {{ wizardScreen.yamlCounts.silos }} silos, {{ wizardScreen.yamlCounts.roles }} roles
{{ wizardScreen.yamlFileName }} failed validation:
{{ err }}
Use the sample structure file instead
Import from CSV

Optional. Everything below can also be typed in by hand.

{{ row.label }} {{ row.status }}
Silos
{{ s.name }}
{{ s.description }}
Roles
{{ f.typeLabel }} Built in

Add a silo above before adding roles.

{{ r.siloName }} {{ r.title }}
Candidates
{{ f.typeLabel }} Built in
{{ c.full_name }} {{ c.summary }}

Finish

The superuser account you verified — {{ wizardScreen.suEmailForAdmin }} — becomes the board's first admin. No separate admin account is created.

The superuser account you verify on the previous step becomes the board's first admin. No separate admin account is created.

{{ wizardScreen.wizardError }}
Import {{ csvImportModal.kindLabel }} — {{ csvImportModal.fileName }}

Map each column to a field. Unmapped columns are ignored.

{{ col.header }}
{{ csvImportModal.toCreate }} to create{{ csvImportModal.toUpdate }} to update{{ csvImportModal.toSkip }} to skip
{{ row.rowIndex }} {{ row.summary }} {{ row.action }} {{ row.reason }}

{{ csvImportModal.result.created }} created, {{ csvImportModal.result.updated }} updated, {{ csvImportModal.result.skipped }} skipped.

Row {{ err.row }}: {{ err.reason }}
{{ candidateDetailModal.initials }}

{{ candidateDetailModal.name }}

{{ f.label }} {{ f.value }}
Roles
{{ line.tag }}{{ line.label }}
{{ t.label }}
General
Labels
{{ row.key }}
Fields
Adding or removing a field changes the database schema. Sign in as a database superuser to apply changes live.
{{ settingsModal.suError }}
Signed in as database superuser.
{{ settingsModal.candidateFieldsHeading }}
{{ f.label }} {{ f.type }}
{{ settingsModal.roleFieldsHeading }}
{{ af.label }}
{{ f.label }} {{ f.type }}
Candidate card

Drag a field into a zone to place it, or into Hidden to drop it. This layout applies to every user's board.

Start from
{{ z.title }} {{ z.note }}
{{ it.label }}
Drop a field here
Photo
Text size {{ settingsModal.cardDesigner.textScaleLabel }}
Preview
{{ settingsModal.cardDesigner.sample.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ it.text }}
{{ it.text }}
{{ line.tag }} {{ line.label }}
Users
{{ u.email }}
Columns: email, admin
Email

Sign-in codes are sent from here. Changing mail settings is a server change, so it needs the database superuser.

{{ settingsModal.suError }}
Reading current mail settings…
Only needed if your provider rejects the default.
{{ settingsModal.email.status }}
{{ settingsModal.email.error }}
Security
Backend

Point this board at a real PocketBase instance. Same-origin (via the Caddy proxy in the deploy files) needs no extra config — just /api.

Connected — live data
{{ settingsModal.pbError }}
Import
{{ row.label }}
Export

One CSV per collection, in the same column shape Import expects — a plain backup of the whole database. For a formatted candidate spreadsheet use Export to Excel from the top bar.

{{ row.label }} · {{ row.count }}
Reset board

Deletes all silos, roles, candidates, matches, and decisions. Board name and field definitions are kept. Type the board name to confirm.

Silo properties
Add Role — {{ addRoleModal.siloName }}
Edit role
Add Silo
Remove field?
Remove "{{ fieldDeleteConfirm.label }}" from the candidate profile? It will no longer appear on the candidate form or card. This can't be undone.