Skip to content

RFC: Redesign membership model for indefinite memberships#195

Open
MikaelSiidorow wants to merge 1 commit intomainfrom
indefinite-membership-model
Open

RFC: Redesign membership model for indefinite memberships#195
MikaelSiidorow wants to merge 1 commit intomainfrom
indefinite-membership-model

Conversation

@MikaelSiidorow
Copy link
Copy Markdown
Collaborator

Summary

Membership in Finnish associations is legally indefinite ("toistaiseksi") with periodic payment obligations. Our current data model (inherited from kide.app) treats each year as a separate membership period, which doesn't match reality and causes confusing UI states like "resigned" on renewals.

This RFC proposes restructuring the model:

  • member becomes the ongoing relationship (user x type), not a per-period record
  • payment (new) tracks individual payments linked to membership periods
  • membershipPeriod (renamed from membership) stays as admin-created yearly periods with due dates and Stripe prices
  • Active members just pay dues — no re-approval needed. Only new/re-joining members go through board approval.

Critical design decisions

  • Import compatibility preserved: kide.app CSV import still works, now simplified to just year instead of full dates. Import is idempotent and order-independent — re-derives member rows from payment history on each run.
  • No automatic status changes: all resignations (voluntary, non-payment, expulsion) are manual admin actions, matching how boards actually operate.
  • Mixed source protection: import never modifies member rows that have Stripe or manual payments. Conflict detection blocks import if admin-modified imported rows would be overwritten.
  • Auto-approval removed: unnecessary in the new model since active members don't need approval to pay dues.
  • One active membership per user enforced via partial unique index.

Full spec in docs/superpowers/specs/2026-04-03-membership-model-redesign.md.

🤖 Generated with Claude Code

Proposes restructuring the membership data model to align with Finnish
association law where membership is indefinite with periodic payment
obligations, replacing the current kide.app-inspired periodic model.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant