Skip to content

feat(admin): organizations — logos, memberships, sponsorships #1959

@cdcore09

Description

@cdcore09

Summary

Admin surface for managing organizations: logo uploads, recurring org memberships, and per-event sponsorships. Schema already in place (organizations.logo_* columns, org_memberships, event_sponsorships); this issue is the UI + storage wiring.

Requirements

  • Brainstorming → spec under docs/superpowers/specs/.
  • Provision the usrse-organization-logos R2 bucket; uncomment the binding in wrangler.jsonc and fill in ORGANIZATION_LOGOS_PUBLIC_URL (the binding was deferred in commit d1140c8).
  • /admin/orgs — searchable list with active-membership and active-sponsorship facets.
  • /admin/orgs/:id — detail view: edit name / slug / shortName / url, upload primary + dark + mark logos with consent capture, manage org_memberships rows (tier + dates), manage event_sponsorships rows.
  • Logo upload flow: file or URL import to R2, persist logo_storage_key, gate display on logo_usage_consent truthiness.
  • Membership lifecycle: open / renew / close, with renewal_due_at for the dashboard tile.
  • Public surface follow-on: /about/sponsors page becomes data-driven from event_sponsorships once this lands.

Context

Foundation must ship first (#1956). Phase 2 schema (4a89a55) added all the relevant columns and tables; nothing is wired to UI yet.

Implementation Notes

  • Policy: canEditOrganization is staff+. Future: an org-rep role could earn scoped edit on their own org.
  • OrgLogo component already falls back to InitialsHex — once real logos start landing, the public surface picks them up automatically.
  • Sponsor tier enum: platinum / gold / silver / bronze / supporter / in_kind.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions