Back to app

Dev guide

How to test Attend.

Three demo orgs, each with its own cast. Login is per-subdomain (ADR 0023) — sign in on the host shown on each card. The dev-tools modal (press Escape) scopes its quick-login list to the host you're on.

Seed users

Created by mix run priv/repo/seeds.exs (idempotent). Passwords are dev-only.

Supervisor

role: :supervisor

Log in
Email
supervisor@attend.test
Password
supervisor-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisor/dashboard

Cohort picker, cohort detail (weeks + attachments), and the global resource library. Enrolled as supervisor on both rehearsal-2026 and 2026-2027.

Second supervisor

role: :supervisor

Log in
Email
second-supervisor@attend.test
Password
second-supervisor-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisor/dashboard

Second supervisor enrolled on rehearsal-2026. Useful for verifying the director dashboard shows different supervisor names per pair when one of the trainees is assigned to a different supervisor.

Owner (Keith)

role: :owner

Log in
Email
keith@attend.test
Password
keith-pw-123456
Log in on
admin.attend-staging.com
Lands at
/owner

Platform owner — belongs to no org. Logs in on the admin host (admin.attend.test). Owner is admin-capable, so the /admin template tools and dev tools stay accessible.

Supervisee

role: :supervisee

Log in
Handle
moss-owl
Password
supervisee-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisee

Original trainee account, now keyed on its anonymous color-noun handle (no email on the user row). Not enrolled on any cohort — lands on the "Nothing this week" fallback. Sign in via the **Supervisee** tab on /users/log-in.

Rehearsal trainee

role: :supervisee

Log in
Handle
sage-fox
Password
rehearsal-trainee-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisee

Enrolled on the rehearsal-2026 cohort (30 weeks: fall + winter + spring; fall is in the past and its checkpoint already happened; today lands in winter week 5, four weeks past the fall checkpoint; spring sits entirely upcoming). Use this account to exercise the post-checkpoint trainee view — and sign in as the supervisor to see the fully populated side-by-side rating comparison at /supervisor/trainees/:id/rating/fall.

Live trainee

role: :supervisee

Log in
Handle
clay-heron
Password
live-trainee-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisee

Enrolled on the 2026-2027 cohort (30-week arc from Sep 28, 2026). Useful for eyeballing term rollover + break-week rendering on the supervisor cohort detail page.

Rehearsal trainee — idle pair

role: :supervisee

Log in
Handle
slate-wolf
Password
rehearsal-trainee-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisee

Second supervisee on rehearsal-2026. Seeded with no recent activity so the director dashboard surfaces the 14-day idle signal for this pair.

Rehearsal trainee — clean pair

role: :supervisee

Log in
Handle
ochre-hummingbird
Password
rehearsal-trainee-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/supervisee

Third supervisee on rehearsal-2026 — recent activity, fall checkpoint ratings submitted by both sides and awaiting director sign-off. The control case in the director's relationship panel.

Rehearsal director

role: :director

Log in
Email
rehearsal-director@attend.test
Password
rehearsal-director-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/director/dashboard

Program director enrolled on the rehearsal-2026 cohort. Lands on the cohort overview with one flagged action note awaiting acknowledgement, one active remediation plan, one idle pair, and a pending sign-off placeholder.

Second director

role: :director

Log in
Email
second-director@attend.test
Password
second-director-pw-123456
Log in on
sportal.attend-staging.com
Lands at
/director/dashboard

Second program director on the rehearsal-2026 cohort. Useful for verifying that the director surface supports more than one named acknowledger (per iteration-2 brief).

Birchwood supervisor

role: :supervisor

Log in
Email
birchwood-supervisor@attend.test
Password
birchwood-pw-123456
Log in on
birchwood.attend-staging.com
Lands at
/supervisor/dashboard

Supervisor at Birchwood University — a second :university org (sage branding). Log in on birchwood.attend.test to see the real app re-branded per host (white-labeling).

Birchwood director

role: :director

Log in
Email
birchwood-director@attend.test
Password
birchwood-pw-123456
Log in on
birchwood.attend-staging.com
Lands at
/director/dashboard

Program director at Birchwood University. Log in on birchwood.attend.test. Demonstrates the director surface re-branded per host (sage).

Birchwood trainee

role: :supervisee

Log in
Handle
fern-wren
Password
birchwood-trainee-pw-123456
Log in on
birchwood.attend-staging.com
Lands at
/supervisee

Anonymous trainee at Birchwood University, keyed on a color-noun handle (no email). Log in via the Supervisee tab on birchwood.attend.test. Not enrolled on a cohort yet — lands on the "Nothing this week" fallback, re-branded sage.

Willow supervisor (individual)

role: :supervisor

Log in
Email
willow-supervisor@attend.test
Password
willow-pw-123456
Log in on
willow.attend-staging.com
Lands at
/supervisor/dashboard

Solo supervisor at Willow Counseling — an :individual org (clay branding). Log in on willow.attend.test; the individual-track surface is the /individual stub.

Willow trainee

role: :supervisee

Log in
Handle
reed-finch
Password
willow-trainee-pw-123456
Log in on
willow.attend-staging.com
Lands at
/supervisee

Anonymous trainee at Willow Counseling (the individual org), keyed on a color-noun handle (no email). Log in via the Supervisee tab on willow.attend.test. Lands on the "Nothing this week" fallback, re-branded clay.

Route map

Scopes are wired with role gates; feature LiveViews populate them later.

  • / — public landing.
  • /users/log-in — email + password + magic link. Google sign-in gated on :google_login_enabled (dev: on; prod: off).
  • /users/settings — logged-in users only. 15-minute inactivity timeout applies.
  • /supervisor/dashboard — Dashboard composition (TermRiver + WeeklyOverview + per-week Resources + URL-addressable modals). Lands here on log-in as supervisor; cohort gate via dropdown when no cohort is selected. All URL state in query params: ?cohort_id=N, ?supervisee_id=N (selected trainee — adds goals card, shared agenda inline, real engagement / submission state), ?week=ID, ?panel=…, ?modal=….
  • /supervisor/cohorts/:slug — terms + weeks grid with per-week resource attachment.
  • /supervisor/cohorts/:slug/edit — term editor: add/remove Fall/Winter/Spring terms with date ranges. Saving a term auto-generates its CohortWeek rows from the date range. Reached after submitting the cohort-create modal (?modal=new-cohort on the dashboard).
  • /supervisor/trainees/new — provision an anonymous trainee. Generates a color-noun handle + one-time password and emails both to the supplied delivery address. Success page previews the handle (no password). Reached via the "+ Add trainee" affordance in the picker row.
  • /supervisor/resources — global resource library + "add resource" inline form.
  • /supervisee — trainee weekly home (current week + attachments + forms to fill).
  • /supervisee/forms/:slug — fill + submit a form. Slice 1 seeds boundary-vignettes.
  • /supervisee/rating/:term_kind — checkpoint rating (trainee side). Nine CSWE 2022 EPAS competencies seeded with 1–5 named levels (ADR 0010; #4 and #5 carry contextual notes). Reachable any time by URL; a card on /supervisee surfaces it during checkpoint weeks.
  • /supervisor/trainees/:id/rating/:term_kind — checkpoint rating (supervisor side). Respects cohort blind_before_submit + rating_reveal_policy; renders a discrepancy summary once both sides have rated.
  • /admin/forms — admin-only form-template index + metadata editor. Section + field authoring stays in seeds for now.
  • /director/dashboard — program-director cohort overview: 30-week ribbon scoped to the cohort + relationship status panel (one row per supervisor↔trainee pair, with idle / flagged-note / remediation / sign-off / next-checkpoint signals). Lands here on log-in as :director; ?cohort_id=N, ?drawer=flagged_notes&membership_id=N, and ?drawer=remediation&plan_id=N are the URL state. Director can ack a flagged note inline; no reply (per program-director-view brief). Evaluation sign-off ships in a follow-up slice.
  • /owner, /individual, /hours, /director/curriculum, /feedback — work-in-progress stub areas (inert "coming soon"). Compiled into every build but gated at runtime by Attend.Features (:owner_panel, :individual_orgs, :hour_logging, :curriculum_builder, :feedback_system): all on in staging/dev, all off in production. /owner also requires the :owner role; /director/curriculum the :director role.
  • /healthz — returns ok for Render's health check.
  • /dev/* — gated by dev_routes config flag (plus admin role in prod): kitchen sink (now tabbed — Design, Components, Email with side-by-side previews), guide (this page), mockups, LiveDashboard, mailbox.

What's not built yet

Slice 1 landed the cohort spine, resource library, form engine, first worksheet, session policy, and a free-now HIPAA posture. Everything below is queued for Slices 2–5 (see docs/spec.md and NEXT_STEPS.md).

  • Dashboard-as-SPA cutover (in progress). The new /supervisor/dashboard (with ?supervisee_id=N query param for trainee selection) renders the new composition (TermRiver + WeeklyOverview + per-week Resources LC + SharedAgenda LC + URL-addressable modals). Trainee landing (/supervisee) still on the old HomeLive until engagement-tier filtering + reflection-bridge-to-agenda + cadence-gated forms are ported into the modal LC. Self-rating / supervisor-rating modals are kitchen-sink-only for v1; checkpoint affordance chips render visual-only.
  • Weekly reflection (7 optional prompts, engagement-tier gated) + agenda builder + Alliance Check-In rollout + link-preview worker + in-portal notifications (Slice 2).
  • Supervisor admin UI for per-week ethics principle editor (cohort_weeks.ethics_principle_ref — schema in place per ADR 0012; the inline editor on /supervisor/cohorts/:slug is pending) (Slice 3).
  • Per-submit blind/visible toggle on the supervisor rating surface (overrides the cohort-level blind_before_submit default via competency_ratings.metadata.blind_override — schema in place per ADR 0010; the UI toggle is pending) (Slice 3).
  • Admin per-question wording editor for Alliance Check-In, Feedback Orientation Check-In, Weekly Reflection, and competency anchors (form_templates.current_version bumps on edit and stamps form_submissions.template_version_at_submit — the template-metadata editor lives at /admin/forms today; field-level editing is still deferred) (Slice 4).
  • Section + field editing inside a template (metadata lives at /admin/forms now; authoring still via seeds) (Slice 3+).
  • Progress dashboard + exports + deletion tooling + offboarding workflow + satisfaction survey + PHI-read audit + 50–100 item import (Slice 4).
  • Admin UI for editing form templates + form-template CRUD (Slice 3).
  • Invite-acceptance UX (supervisors currently provision via seeds).
  • Google OAuth end-to-end (button hidden via :google_login_enabled = false in prod; dev needs real credentials in config/dev.secret.exs to exercise).