Skip to main content

Overview

Lawn uses a two-level organization system: Teams contain Projects, and Projects contain Videos. This structure enables clear organization and role-based access control for video collaboration.

Teams

Teams are the top-level organizational unit in Lawn:

Workspace

Each team functions as an independent workspace with its own members, projects, and billing

Unique Slug

Teams are identified by a URL-friendly slug generated from the team name

Subscription

Each team has its own subscription plan and billing status

Multiple Teams

Users can belong to multiple teams with different roles in each

Creating Teams

Any authenticated user can create a new team:
1

Name Your Team

Provide a descriptive name for your team workspace
2

Auto-Generated Slug

A URL-friendly slug is created automatically, with uniqueness guaranteed
3

Owner Role

The creator is automatically assigned as team owner
4

Basic Plan

New teams start on the basic plan with default quotas

Slug Generation

Team slugs are generated automatically:
  • Convert name to lowercase
  • Replace non-alphanumeric characters with hyphens
  • Remove leading/trailing hyphens
  • Truncate to 50 characters
  • Append counter if slug already exists (e.g., my-team-2)

Team Roles

Lawn uses a hierarchical role system with four levels:
Full Control
  • All admin permissions
  • Delete the team
  • Manage billing and subscriptions
  • Transfer ownership
  • Cannot be removed
Each team has exactly one owner.
Role permissions cascade down - each role includes all permissions from roles below it.

Team Members

Team membership is managed through the team settings:

Member Information

Each team member record includes:
  • User ID: Clerk authentication identifier
  • Email: Normalized and lowercased for consistency
  • Name: Display name from user profile
  • Avatar: Profile picture URL
  • Role: Current role in the team

Managing Members

Invite by Email

Admins can send invitations to new members via email address

Role Assignment

Choose admin, member, or viewer role when inviting

Remove Members

Admins can remove any member except the owner

Change Roles

Admins can promote or demote members at any time

Team Invitations

The invitation system enables controlled team growth:

Sending Invitations

// Invitation flow
1. Admin provides email and desired role
2. System checks for existing membership
3. Generate unique invitation token
4. Set 7-day expiration
5. Send invitation email (or share token)

Accepting Invitations

Users accept invitations through a dedicated flow:
  • Must be authenticated with Clerk
  • Email must match invitation recipient
  • Invitation must not be expired
  • User cannot already be a team member
  • Automatically creates team membership
  • Invitation is deleted after acceptance
Invitations expire after 7 days. Expired invitations must be resent by a team admin.

Invitation Management

Admins can view and manage pending invitations:
  • See all active invitations
  • View expiration dates
  • Delete pending invitations
  • Resend by creating new invitation

Projects

Projects organize videos within a team:

Video Container

Projects group related videos for easy organization

Team Scoped

Each project belongs to exactly one team

Shared Access

All team members can access all projects in their team

Flexible Structure

Create projects for clients, campaigns, products, or any organizational scheme

Creating Projects

Team members (not viewers) can create projects:
1

Name the Project

Provide a descriptive project name
2

Add Description

Optional description for project context
3

Active Subscription Required

Team must have an active subscription to create projects
Projects require an active team subscription. Free plans may have project limits.

Project Management

Project Details

Each project includes:
  • Name: Primary identifier
  • Description: Optional context and notes
  • Team ID: Parent team reference
  • Video Count: Automatically calculated
  • Creation Date: When project was created

Updating Projects

Members and above can modify projects:
  • Update project name
  • Change or add description
  • Changes reflect immediately for all team members

Deleting Projects

Only admins and owners can delete projects:
Deleting a project permanently removes:
  • All videos in the project
  • All comments on those videos
  • All share links for those videos
  • All access grants for those share links
This action cannot be undone.

Upload Targets

The system provides a list of available upload targets:
// Upload target structure
{
  projectId: "project-id",
  projectName: "Spring Campaign",
  teamId: "team-id",
  teamName: "Creative Agency",
  teamSlug: "creative-agency",
  role: "member"
}
Upload targets include:
  • All projects in teams where user is member or higher
  • Sorted alphabetically by team name, then project name
  • Can be filtered by team slug
  • Used for upload destination selection

Team Navigation

Teams and projects support efficient navigation:

Team List View

Users see all teams they belong to:
  • Ordered by name
  • Shows current role in each team
  • Indicates active subscription status
  • Links to team dashboard

Team with Projects View

Expanded view includes project information:
  • All projects within each team
  • Video count per project
  • Quick access to recent videos
  • Upload shortcuts
Getting from homepage to the latest video should take fewer than 4 clicks, following Lawn’s convenience philosophy.

Leaving Teams

Members can leave teams voluntarily:
  • Available to all roles except owner
  • Removes access to all team projects
  • Cannot be undone (must be re-invited)
  • Owner must transfer ownership before leaving

Deleting Teams

Only team owners can delete teams:

Deletion Requirements

1

Cancel Subscription

Active subscriptions must be cancelled first
2

Confirm Deletion

Owner must confirm they understand data will be permanently deleted
3

Cascade Delete

All associated data is removed

What Gets Deleted

Team deletion removes:
  • All team members
  • All pending invitations
  • All projects
  • All videos in all projects
  • All comments on all videos
  • All share links and access grants
Team deletion is permanent and cannot be undone. All data is immediately and irreversibly deleted.

Billing Integration

Teams integrate with Stripe for subscription management. Only team owners can manage billing.

Subscription Plans

Lawn offers two subscription tiers:
PlanPriceStorageBest For
Basic$5/month100 GBSmall teams and individual creators
Pro$25/month1 TB (1024 GB)Growing teams with higher storage needs
Both plans include:
  • Unlimited team members
  • Unlimited projects and videos
  • Timestamped comments with threading
  • Workflow status tracking (review/rework/done)
  • Password-protected share links
  • Real-time collaboration and presence
  • Mux-powered adaptive streaming
For detailed billing API documentation, see Billing API.

Storage Quotas

Storage limits are enforced per team across all projects:
  • Basic: 100 GB total storage
  • Pro: 1 TB (1024 GB) total storage
Storage validation:
  • Checked before video upload begins
  • Enforced when upload completes
  • Includes all videos across all team projects
  • Immediate feedback if quota exceeded
When a team approaches its storage limit, owners see warnings in the dashboard and can upgrade their plan through the Stripe Customer Portal.

Billing Metadata

Each team tracks:
  • Stripe customer ID
  • Stripe subscription ID
  • Stripe price ID (links to Basic or Pro plan)
  • Billing status (active, trialing, past_due, etc.)
  • Current period end date
Storage quota checks happen before upload begins to provide immediate feedback, following Lawn’s philosophy of minimal friction.

Multi-Team Support

Users can participate in multiple teams:
  • No limit on team count
  • Independent roles per team
  • Separate context for each team
  • Easy team switching in navigation
  • Personal uploads stay isolated
Use separate teams for different clients or business units to maintain clear organizational boundaries and billing separation.

Build docs developers (and LLMs) love