52 lines
2.0 KiB
Markdown
52 lines
2.0 KiB
Markdown
# 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.js`
|
|
- `frontend/src/features/organizations/views/OrganizationOnboardingView.vue`
|
|
- `frontend/src/features/organizations/views/OrganizationSettingsView.vue`
|
|
- `frontend/src/locales/en.json`
|
|
- `frontend/src/locales/fr.json`
|
|
- `shared/openapi/openapi.json`
|
|
- `frontend/src/api/schema.d.ts`
|
|
|
|
## Validation
|
|
|
|
```bash
|
|
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
|
|
|
|
- [x] Membership tiers and limits are database-backed.
|
|
- [x] Organizations persist their selected membership tier.
|
|
- [x] Organization owners/billing managers can change tiers from the usage settings page.
|
|
- [x] New organizations can choose an initial tier.
|
|
- [x] Usage limits come from the selected tier, not organization name or frontend constants.
|
|
- [x] EF migration is generated with `dotnet ef migrations add`.
|
|
- [x] OpenAPI and frontend schema are regenerated.
|