Plans
Plans live in the database. New users get the Free plan. Limits control concurrent participants and max room duration.
Default catalog
Inserted by migration (admins can edit later). Current seed defaults:
| Plan | Slug | Max participants | Max duration |
|---|---|---|---|
| Free | free | 5 | 60 minutes |
| Starter | starter | 10 | 120 minutes |
| Pro | pro | 25 | 240 minutes |
| Business | business | 50 | Unlimited within the app technical ceiling |
Prices are stored as price_amount in IRR rials. A later migration set active plan prices to 0 so checkout still runs but fulfills without a gateway while amounts show as 0. Admins can change prices again in the admin panel.
Where limits apply
- Creating/editing a room: duration must fit the plan’s max (Business uses the app ceiling when duration is null).
- Joining: room
maxParticipantsis set from the host plan / room config; soft occupancy check before token issue. - Platform hard cap remains 50 concurrent participants per room at the SFU.
Admin
Admins can create/edit plans, assign a plan to a user, and review orders. Bootstrap trusted emails with ADMIN_EMAILS.