Skip to main content

Teams

Teams allow players to organize together for tournaments and competitive matches. Create your own team, join existing teams, and compete together.

Team Overview

Teams in 5Stack provide:

Organized Play

Compete in team-based tournaments and matches

Team Identity

Custom team names, tags, and branding

Roster Management

Add, remove, and manage team members

Statistics

Track team performance across matches

Creating a Team

Any authenticated player can create a team.
1

Navigate to Teams

Go to the Teams page from the main navigation
2

Click Create Team

Click the Create Team button in the top right
3

Fill Team Details

Enter your team name and short tag
4

Submit

Click Create to establish your team

Team Creation Form

The team creation form requires:
<!-- From TeamForm.vue:10-78 -->
<form @submit.prevent="updateCreateTeam" class="grid gap-6">
  <FormField v-slot="{ componentField }" name="team_name">
    <FormItem>
      <FormLabel>{{ $t("team.form.name") }}</FormLabel>
      <FormControl>
        <Input
          v-bind="componentField"
          :placeholder="$t('team.form.name_placeholder')"
        />
      </FormControl>
      <FormMessage />
    </FormItem>
  </FormField>
  
  <FormField v-slot="{ componentField }" name="short_name">
    <FormItem>
      <FormLabel>{{ $t("team.form.short_name") }}</FormLabel>
      <FormControl>
        <Input
          v-bind="componentField"
          :placeholder="$t('team.form.short_name_placeholder')"
          maxlength="5"
        />
      </FormControl>
      <FormMessage />
    </FormItem>
  </FormField>
</form>

Team Properties

Team Name is the full name of your team.Requirements:
  • Minimum 1 character
  • Must be unique
  • Can include spaces and special characters
Examples:
  • “Elite Gaming Squad”
  • “Counter Strike Legends”
  • “Team Phoenix”

Team Validation

// From TeamForm.vue:99-106
form: useForm({
  validationSchema: toTypedSchema(
    z.object({
      team_name: z.string().min(1),
      short_name: z.string().min(1).max(5),
    })
  ),
})

Browsing Teams

The Teams page displays all teams on the platform.

Search and Filters

// From teams/index.vue:182-215
teams: {
  query: function() {
    return generateQuery({
      teams: [
        {
          limit: $limit,
          offset: $offset,
          order_by: [{ name: order_by.asc }],
          ...(this.form.values.teamQuery?.length >= 3
            ? {
                where: {
                  name: {
                    _ilike: $teamQuery
                  }
                }
              }
            : {})
        },
        {
          id: true,
          name: true,
          roster: [{ player: playerFields }]
        }
      ]
    });
  },
  variables: function() {
    return {
      teamQuery: `%${this.form.values.teamQuery}%`,
      limit: this.perPage,
      offset: (this.page - 1) * this.perPage
    };
  }
}

Team List Display

Each team card shows:
  • Team name and tag
  • Roster count
  • Team members with avatars
  • Link to team details page

Team Details Page

Click any team to view its detail page with:
  • Full team name
  • Team tag/short name
  • Creation date
  • Owner/captain

Team Management

Team Ownership

The player who creates a team becomes its owner. Owners have full control over:
  • Team settings and information
  • Roster management
  • Tournament registration
  • Team disbandment

Adding Members

1

Navigate to Team Page

Go to your team’s detail page
2

Click Add Member

Click the Invite Player button
3

Search for Player

Search by player name or Steam ID
4

Send Invite

Player receives invitation to join
5

Accept Invite

Player must accept to join roster

Removing Members

Team owners can remove members:
  1. Navigate to team roster
  2. Click the Remove button next to a member
  3. Confirm the removal
  4. Member is removed from team
Removed players lose access to team features and cannot participate in the team’s tournaments.

Transferring Ownership

Owners can transfer ownership to another roster member:
<!-- From TeamForm.vue:41-67 -->
<FormField
  v-if="team && canUpdateOwner"
  v-slot="{ componentField }"
  name="owner_steam_id"
>
  <FormItem>
    <FormLabel>{{ $t("team.form.owner") }}</FormLabel>
    <Select v-bind="componentField">
      <FormControl>
        <SelectTrigger>
          <SelectValue :placeholder="$t('team.form.select_owner')" />
        </SelectTrigger>
      </FormControl>
      <SelectContent>
        <SelectGroup>
          <SelectItem
            v-for="{ player } in team.roster"
            :key="player.steam_id"
            :value="player.steam_id"
          >
            <PlayerDisplay :player="player" />
          </SelectItem>
        </SelectGroup>
      </SelectContent>
    </Select>
    <FormMessage />
  </FormItem>
</FormField>
Only the current owner or Tournament Organizers can transfer team ownership.

Editing Team Information

To update team name or tag:
1

Access Team Settings

Navigate to your team page and click Edit Team
2

Modify Fields

Update team name or short name
3

Save Changes

Click Update to save
// Update team mutation from TeamForm.vue:142-161
await this.$apollo.mutate({
  mutation: generateMutation({
    update_teams_by_pk: [
      {
        pk_columns: {
          id: this.team.id,
        },
        _set: {
          name: this.form.values.team_name,
          short_name: this.form.values.short_name,
          owner_steam_id: this.form.values.owner_steam_id,
        },
      },
      {
        __typename: true,
      },
    ],
  }),
});

Team Subscriptions

5Stack tracks your team memberships in real-time:
// From teams/index.vue:256-282
myTeams: {
  query: function() {
    return typedGql("subscription")({
      players: [
        {
          where: {
            steam_id: {
              _eq: useAuthStore().me?.steam_id
            }
          }
        },
        {
          teams: [
            {},
            {
              id: true,
              name: true,
              roster: [
                {},
                {
                  player: playerFields
                }
              ]
            }
          ]
        }
      ]
    });
  }
}
Team updates appear instantly:
  • New member joins
  • Roster changes
  • Team information updates
  • Match results

Playing as a Team

Tournament Registration

Teams can register for tournaments:
  1. Navigate to Tournaments page
  2. Find a tournament with open registration
  3. Click Register Team
  4. Select your team from the dropdown
  5. Confirm registration
All team members must be online during tournament matches. Missing players may result in forfeit.

Team Matches

Some custom matches can be configured as team matches:
  • Both teams must have sufficient roster
  • Match results affect team statistics
  • Individual player stats also recorded

Team Roles and Permissions

Team members can have different roles:

Owner

Full team management permissions

Captain

Can manage roster during matches

Member

Can participate in team activities

Permission Levels

  • Edit team information
  • Add/remove members
  • Transfer ownership
  • Register for tournaments
  • Disband team

Team Statistics

Team pages display aggregated statistics:

Win/Loss Record

Overall team performance across all matches

Match History

Chronological list of team matches

Tournament Results

Placements and achievements in tournaments

Player Contributions

Individual member statistics within team

Leaving a Team

To leave a team you’re a member of:
1

Go to Team Page

Navigate to the team’s detail page
2

Click Leave Team

Find and click the Leave Team button
3

Confirm

Confirm you want to leave
Leaving a team while registered for active tournaments may result in tournament disqualification for the team.

Disbanding a Team

Team owners can permanently disband teams:
  1. Navigate to team settings
  2. Click Disband Team
  3. Type team name to confirm
  4. Click Confirm Disbandment
Team disbandment is permanent and cannot be undone.
  • All roster members are removed
  • Team match history is preserved
  • Team name becomes available again
  • Tournament registrations are cancelled

Team Display on Profiles

Your team affiliations appear on your player profile:
<!-- From players/[id].vue:71-98 -->
<div
  v-if="player?.teams && player.teams.length > 0"
  class="flex flex-wrap gap-2 mt-2"
>
  <NuxtLink
    v-for="(team, index) in player.teams"
    :key="team.id"
    :to="`/teams/${team.id}`"
    :style="{ animationDelay: `${index * 50}ms` }"
    class="team-badge"
  >
    <div class="flex items-center gap-2">
      <div class="w-2 h-2 rounded-full bg-primary"></div>
      <span class="font-medium text-sm">{{ team.name }}</span>
      <span
        v-if="team.short_name"
        class="text-xs bg-muted-foreground/10 px-1.5 py-0.5 rounded"
      >
        {{ team.short_name }}
      </span>
    </div>
  </NuxtLink>
</div>
Team badges show:
  • Team name
  • Team tag
  • Link to team page
  • Animated hover effects

Best Practices

  • Recruit players with complementary skills
  • Practice together regularly
  • Communicate effectively
  • Establish team roles and strategies
  • Set clear expectations for participation
  • Use team chat for coordination
  • Set up external voice chat (Discord, TeamSpeak)
  • Schedule practice sessions
  • Discuss strategies before tournaments
  • Ensure all members are available
  • Review tournament rules
  • Practice on tournament maps
  • Develop game plans for opponents

Team Administration

For Tournament Organizers

Tournament Organizers have additional team management capabilities:
  • View all teams
  • Modify team information
  • Force ownership transfers
  • Remove problematic teams
  • Review team statistics
// Permission check from TeamForm.vue:126-131
canUpdateOwner() {
  return (
    this.team.owner_steam_id === this.me?.steam_id ||
    this.me?.role === e_player_roles_enum.tournament_organizer
  );
}

Troubleshooting

  • Ensure you’re logged in with Steam
  • Check that team name is unique
  • Verify short name is 1-5 characters
  • Contact support if issue persists
  • Check that player name is correct
  • Verify player is online
  • Ask them to check notifications
  • Try resending the invite
  • Verify you’re the team owner
  • Check your permissions
  • Refresh the page
  • Contact team owner or admin

Next Steps

Tournaments

Register your team for tournaments

Match Lobbies

Learn about team match coordination

Statistics

Track your team’s performance

Build docs developers (and LLMs) love