Skip to main content

Overview

Plant Together allows you to create collaborative workspaces called “rooms” where you and your team can work on PlantUML diagrams together in real-time. Rooms can be either public or private, depending on your collaboration needs.

Room Types

Public Rooms

Anyone with the room name can access and collaborate. Perfect for open-source projects or community collaboration.

Private Rooms

Access is controlled by the room owner. Participants need an invitation link with a signature to join.

Creating a Room

1

Navigate to the Landing Page

From the Plant Together homepage, you’ll see the main room creation interface.
2

Enter a Room Name

Type your desired room name in the input field. Room names must follow these rules:
Room names cannot contain:
  • Spaces (use hyphens or underscores instead)
  • Forward slashes (/)
  • Empty values
Use descriptive names like project-architecture or sprint-planning-diagrams to easily identify your rooms.
3

Choose Room Privacy

Toggle the Private switch to set your room visibility:
Leave the toggle off for a public room.Public Room Characteristics:
  • Accessible to anyone who knows the room name
  • URL format: https://planttogether.com/#/{roomName}
  • Cannot have duplicate public room names
  • Best for: Open collaboration, demos, public documentation
// Example: Creating a public room via API
await createRoomWithDocument('project-arch', false, 'Document1')
// URL: https://planttogether.com/#/project-arch
4

Submit to Create or Join

Click the Submit button or press Enter to proceed.
Plant Together will automatically:
  • Check if a room with that name already exists
  • Join the existing room if found
  • Create a new room if it doesn’t exist

Room Creation Behavior

First-time Creation

When you create a new room, Plant Together automatically:
  1. Creates the room with your specified privacy setting
  2. Generates a default document named “Document1”
  3. Redirects you to the collaboration interface
  4. Establishes WebSocket connection for real-time collaboration

Joining Existing Rooms

If a room already exists:
  • Public rooms: You’ll join immediately if you provide the correct name
  • Private rooms: You can only join if:
    • You are the owner, OR
    • You have been granted access via a signature link
// Source: landing.page.tsx:20-71
const handleGoToRoom = async () => {
  // Validation
  if (!roomName.trim() || roomName.includes(' ') || roomName.includes('/')) {
    setError(true)
    return
  }

  try {
    const roomToGoTo = isPrivate
      ? `private/${userContext?.context?.userId}/${roomName}`
      : roomName
    
    // Check if room exists
    const room = isPrivate
      ? await plantService.getPrivateRoom(
          userContext?.context?.userId!,
          roomName,
        )
      : await plantService.getPublicRoom(roomName)
    
    if (room?.documents) {
      // Room exists - join it
      navigate(`/${roomToGoTo}`)
      return
    }

    // Create new room
    await plantService.createRoomWithDocument(
      roomName,
      isPrivate,
      'Document1',
    )
    navigate(`/${roomToGoTo}`)
  } catch (error: any) {
    setError(true)
    setErrorMessage(error.message)
  }
}

Room Naming Best Practices

Choose names that clearly indicate the room’s purpose:✅ Good examples:
  • microservices-architecture
  • api-design-2024
  • database-schema-v2
❌ Avoid:
  • room1
  • test
  • asdf
Establish consistent patterns for your organization:
  • Project-based: {project}-{purpose}apollo-api-diagrams
  • Team-based: {team}-{topic}backend-architecture
  • Date-based: {topic}-{date}sprint-planning-2024-03
Since room names appear in URLs, keep them:
  • Lowercase (for consistency)
  • Short but descriptive
  • Using hyphens for word separation
  • Free of special characters

User Permissions

Guest Users

Guest users (not logged in) can:
  • Create and join public rooms
  • Create and join their own private rooms (session-based)
  • Cannot toggle room privacy
  • Assigned a quirky auto-generated username

Authenticated Users

Authenticated users get additional capabilities:
  • Create persistent private rooms
  • Toggle room privacy (owner only)
  • Share private rooms with signature-based links
  • Access room from multiple devices
  • Custom display name in collaboration

Switching Between Public and Private

Only the room owner can change room privacy settings.
Room owners can toggle privacy from the navigation bar:
  1. Look for the lock icon in the top-right corner
  2. Click the Private Room or Public Room button
  3. The room URL will update automatically
  4. All participants will be redirected
See Private Rooms for detailed information on privacy controls.

Common Errors and Solutions

Cause: You submitted without entering a room name.Solution: Enter a valid room name before submitting.
Cause: Your room name contains spaces.Solution: Replace spaces with hyphens (-) or underscores (_).Example: my projectmy-project
Cause: Your room name contains forward slashes.Solution: Remove or replace slashes with hyphens.Example: project/v2project-v2
Cause: A private room with this name already exists under your account.Solution:
  • Use a different room name, OR
  • Access your existing room from your room list, OR
  • Toggle to public if you want to access the public room instead

Next Steps

Start Collaborating

Learn how to work with others in real-time

Private Room Access

Understand private room security and sharing

Export Your Work

Export diagrams as SVG, PNG, or code

API Reference

Integrate room creation into your workflow

Build docs developers (and LLMs) love