2.0 KiB
2.0 KiB
Task: Database-backed organization membership tiers
Feature Spec
docs/FEATURES/organizations.md
Goal
Move organization membership tiers and usage limits out of frontend/static logic and into the database so an organization owner can select a tier immediately, before payment-provider integration exists.
Scope
- Add a persisted membership tier model with seeded tiers and limits.
- Add an active membership tier relationship on
Organization. - Add backend APIs to list available tiers and change an organization's active tier.
- Let organization creation select an initial tier, defaulting to Free.
- Show the current tier and tier selector on organization usage settings.
- Regenerate OpenAPI contracts after backend changes.
Likely Files
backend/src/Socialize.Api/Modules/Organizations/Data/*backend/src/Socialize.Api/Modules/Organizations/Handlers/*backend/src/Socialize.Api/Migrations/*frontend/src/features/organizations/stores/organizationStore.jsfrontend/src/features/organizations/views/OrganizationOnboardingView.vuefrontend/src/features/organizations/views/OrganizationSettingsView.vuefrontend/src/locales/en.jsonfrontend/src/locales/fr.jsonshared/openapi/openapi.jsonfrontend/src/api/schema.d.ts
Validation
dotnet ef migrations add AddOrganizationMembershipTiers --project backend/src/Socialize.Api/Socialize.Api.csproj --startup-project backend/src/Socialize.Api/Socialize.Api.csproj
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
cd frontend && npm run build
./scripts/update-openapi.sh
Done When
- Membership tiers and limits are database-backed.
- Organizations persist their selected membership tier.
- Organization owners/billing managers can change tiers from the usage settings page.
- New organizations can choose an initial tier.
- Usage limits come from the selected tier, not organization name or frontend constants.
- EF migration is generated with
dotnet ef migrations add. - OpenAPI and frontend schema are regenerated.