Skip to content

Epic: Node owner pathways #347

Open
Open

Description

@jlwaugh

Problem: node owners run their communities from City Node, but its two most important jobs are the hardest: getting people onboarded at events, and claiming rewards into their Node DAO. Events don't show, communities don't appear on the map, and the rewards card can work against them.
Goal: node administration that owners can do without walkthroughs, starting with its two most important jobs, onboarding and claiming, and protecting the attendee join flow owners already like.
Scope: owner-facing events, map, onboarding and claiming, plus measuring joins. Terms follow the glossary; "community" is the user-facing name for a node.

Decisions this epic depends on, with their owners and what they block, are in Decisions.

Track 1: Onboarding

Goal: a person finds an event, shows up, joins with one passkey prompt, and lands in the community, and owners set each step up without walkthroughs.

Step Issues
Finding an event #339, #340, #341
Showing up (the event's station) #345, #333
Joining #336, #342
Landing in the community #343
Measuring it #338, #348

Done when:

Measure: people who redeemed a code and new members, per community per month, on the admin overview (#338) and each community's Overview (#348); becomes "activated members" once wallet activation exists. Baseline: last month as #338 and the owner stats show it when they ship, from #338's backfilled rows; no manual numbers.

Track 2: Claiming

Goal: each community whose Node DAO owns a validating pool claims rewards into its DAO without walkthroughs, and never loses time to a restarted unlock.

Issues
#337, #344

Done when:

Measure: each community whose Node DAO owns a validating pool claims at least monthly, without walkthroughs (judged in owner interviews). A community counts when its Node DAO owns the pool and the pool is validating with staking not paused (#344's "Validating, owned by the DAO" state). Baseline: one of three city communities can claim today, and does so by hand in Trezu; the other two wait on pool decisions outside this epic. Counted by hand from DAO proposals until "Last claim" exists (Later).

Each outcome above is merged with its tests. Then close this epic; anything left, including #346, moves to a follow-up.

Pathways

Owner pathway Today What gets in the way Fixed by
Create an Onboarding Code and onboard people My community → the event's Onboarding → pick the event again → start → open station The button forgets the event; the Events tab starts a new station every time; Organization → Onboard points organizers to a page they can't open; several names for one thing #345, #333; names Later (#346)
Join at an event (attendee) Scan → one passkey prompt → joined Works; no link to the community; closed codes show "unavailable" to people who already joined; failures all say "ask for a new link" #336, #343, #342
Make my events show My community → Events, but visibility lives in Community settings One job across two pages; drafts look live #339, #340
Get my node on the map Community settings → Profile Overview doesn't show whether you're on the map #341
Claim rewards (payouts on Trezu) Overview → Team stake → propose → approve on Trezu Can restart the unlock; no reason shown when the pool can't claim #337, #344
Add social accounts and profile Community settings → Profile (moved there by #329, merged) Settings split between Community settings and Organization Later (settings merge); not counted in Done when
Decide what members and teams can do Organization → Teams The Teams tab doesn't explain what members can do Later (Teams tab explains areas); not counted in Done when

Sub-issues

# Issue Track Blocked by First cut PR Owner
#339 Make owners' events show publicly, and show why when they don't Onboarding #332 Yes #360 (draft)
#340 Tell owners what a Luma import did, and log why syncs fail Onboarding — Yes #360 (draft)
#341 Show owners whether their community is on the map Onboarding #332 (soft), #339 Yes —
#336 Prove the join flow end to end, and show "joined" after a code closes Onboarding — Yes #354
#342 Join flow: name the cause when joining fails, with one next step Onboarding #336 No —
#343 After joining, link new members to their community Onboarding #336 Yes —
#345 One onboarding path: the event's button opens its station Onboarding — Yes —
#333 Organizers start stations from the UI Onboarding — Yes —
#337 Stop the Team stake card from restarting the unlock Claiming — Yes #358
#344 Tell owners why their community can't claim yet Claiming #337 Yes —
#338 Show platform admins code redemptions and new members per community each month Onboarding — Yes #356
#348 Show owners their community's code redemptions and new members on Overview Onboarding #338 Yes —
#346 Use the same names everywhere owners look Later Product owner's names; #345 No —

Events and the map come first because they reach every community; claiming code helps one community today.

Labels: every sub-issue carries enhancement or bug as listed in it. Issues that ship with a PR (#339, #340, #336, #337, #338) get no ready-for-agent. Unbuilt issues (#341, #342, #343, #344, #345, #348) are posted with needs-triage and suggested for ready-for-agent at triage. #346 gets decision.

Merge-order hotspots

Several PRs and issues change the same files. Rows use PR numbers where a PR is open (#354 for #336, #356 for #338, #358 for #337, #360 for #339 and #340) and issue numbers otherwise. Each row lists the landing order; issues separated by commas can land in either order. Rebase the later ones.

File Order
ui/src/routes/_authenticated/_dashboard/dashboard/node/index.tsx (Overview) #352 → #358 → #360 → #345, #344, #341 → #348
ui/src/routes/_authenticated/_dashboard/dashboard/node/-community-header.tsx #358 → #341
ui/src/routes/_authenticated/_dashboard/dashboard/node.tsx #358 → #345
ui/src/components/discovery/activity-editor.tsx #332 → #360 → #345
ui/src/components/discovery/events-editor.tsx, ui/src/routes/_authenticated/_dashboard/nodes/$nodeId/content.tsx #332 → #360 → #341
ui/src/components/discovery/event-visibility.tsx (added by #360) #360 → #341
tests/regression/lib/seed-tenant.mjs #360 → #341
ui/src/components/team-stake-card.tsx #358 → #344
ui/src/components/layout/nav-items.ts and its test #350 → #358
ui/src/i18n/messages/: common.ts, public.ts common.ts: #352 → #360; public.ts: #332 → #353 → #358
plugins/auth/src/handlers/onboarding.ts #354 → #356 → #343 → #342 → #345
plugins/auth/src/contract.ts #356 → #343 → #342 → #345
plugins/auth/tests/integration/onboarding.test.ts #354 → #342 → #345
plugins/auth/ui/src/routes/_public/onboard.tsx, plugins/auth/ui/src/routes/_public/-onboard.test.tsx #354 → #343 → #342
tests/regression/browser/helpers/onboarding-seed.ts #354 → #356

#360 (#339, #340) is a draft until #332 merges, then rebases on it.

Decisions

Decision Owner Blocks
Final copy for #341, #342 and #344 Product owner Those issues' merge, not their build
Should imports from before #315 stay public? Maintainers Nothing in this epic
Pool ownership and validators for communities that can't claim yet (assumed: each city community gets a DAO-owned pool soon) Maintainers Claiming past one community; no issue in this epic
Names for onboarding, settings and profile pages, after interviews Product owner #346
Member permissions: what members and teams can see and do Maintainers Nothing in this epic
Merge community settings from Organization into Community settings Maintainers Nothing in this epic

Settled:

#333 ships in the first cut. Background: #81 and #190 (closed).

Risks

Supporting

CI doesn't run the UI, API or plugin test suites today, so each PR runs them locally and says so. The v2 platform migration (#357) replaces CI with the upstream consumer workflow, which runs every workspace's tests, including the auth plugin's; its timing-sensitive tests (device link, orphan sweep, passkey sign-up and session revocation, in plugins/auth/tests/integration/) may need fixing then.

Non-goals

Wallet activation (the next Build page epic), member pathways, the admin launch path, and community subdomains. Each is a separate epic or listed under Later.

Related

Later

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions