Commit
Unify subscription & marketing copy across screens
Commit details
Commit notes
Sources subscription/pricing/marketing copy from a single source of truth and fixes factual + plan-handling inconsistencies that drifted between the landing page, subscription drawer, dashboard, and library.
- Add frontend source of truth `frontend/src/lib/config/plans.ts` (typed, `as const`) for plan ids/names/prices/fees/storage/seats/savings/taglines + the competitor-comparison line, with a note to keep it in sync with backend config / PRICING.md. - Landing page (`routes/+page.svelte`) now consumes `plans.ts` instead of hardcoded tier literals; correct the competitor claim (was "Beatstars (12%)"; PRICING.md says BeatStars takes 30% commission) and reframe to the "lower fee + more storage" story. - Fix SubscriptionDrawer plan-name bug: `team_monthly`/`team_yearly` wrongly displayed as "Free". Introduce shared `formatPlanName` helper (covers Free, Pro, Team) and a current-plan fee summary; make cancel/expiry/upgrade copy plan-agnostic ("reduced fee and extra storage" rather than "Pro features"). - StorageUsage upgrade prices, savings, and storage allowance now read live from the subscription API instead of hardcoded €9/€89/€19/100GB. - Library upgrade toasts use `formatPlanName` + live storage quota and drop the inaccurate "100GB / all Pro features" wording (was wrong for Team plans). - Fix the inaccurate competitor comment in `backend/src/config/index.ts` (BeatStars 30% commission, per PRICING.md).
Co-Authored-By: Claude Opus 4.8 <[email redacted]>
- Files changed
- 7
- Lines added
- +164
- Lines removed
- −60