- docs
 - FlowFuse User Manuals
 - Using FlowFuse
 - Getting Started
 - Static asset service
 - Bill of Materials
 - FlowFuse Concepts
 - Changing the Stack
 - Custom Hostnames
 - Custom Node Packages
 - Device Groups
 - DevOps Pipelines
 - Environment Variables
 - FlowFuse Assistant
 - FlowFuse File Nodes
 - FlowFuse MQTT Nodes
 - FlowFuse Project Nodes
 - FlowFuse Tables
 - High Availability mode
 - HTTP Access Tokens
 - Instance Settings
 - Logging
 - persistent-context
 - Shared Team Library
 - Snapshots
 - Team Broker
 - Teams
 - User Settings
 - FlowFuse API
 - Migrating a Node-RED project to FlowFuse
 - Device Agent
 - Device Agent
 - FlowFuse Device Agent Introduction
 - Installation
 - Quick Start
 - Register your Remote Instance
 - Running the Agent
 - Deploying your Flows
 - Hardware Guides
 - FlowFuse Cloud
 - FlowFuse Cloud
 - FlowFuse Self-Hosted
 - Quick Start
 - Installing FlowFuse
 - Overview
 - Configuring FlowFuse
 - DNS Setup
 - Docker install
 - Docker from AWS Market Place
 - Docker on Digital Ocean
 - Add Project Stacks on Docker
 - Docker Engine on Windows
 - Email configuration
 - First Run Setup
 - FlowFuse File Storage
 - Install FlowFuse on Kubernetes
 - Upgrading FlowFuse
 - Administering FlowFuse
 - Administering FlowFuse
 - Configuring Single Sign-On (SSO)
 - Licensing
 - Monitoring
 - Telemetry
 - User Management
 - Support
 - Community Support
 - Premium Support
 - Debugging Node-RED issues
 - Contributing
 - Contributing to FlowFuse
 - Introduction
 - Adding Template Settings
 - API Design
 - Creating debug stack containers
 - Database migrations
 - FlowFuse Architecture
 - Local Install
 - State Flows
 - Device Editor
 - Invite External Users
 - User Login Flows
 - Reset Password Flow
 - Project Creation
 - Instance states
 - User Sign up Flow
 - Team creation Flow
 - Team Broker
 - Working with Feature Flags
 
Sequence For Project Creation
sequenceDiagram
autonumber
participant User
participant Ui
participant Runtime
participant ContainerDriver
participant DB
participant Stripe
User->>Ui: Clicks Create Project
User->>Ui: Enters Project Name
Ui->>Runtime: POST /projects
alt billing enabled
  Runtime->DB: Team has Subscription
  DB->>Runtime: Subscription
  alt Valid Subscription
    Runtime->>Stripe: Add Project to Subscription
    Runtime->>ContainerDriver: create()
    Runtime->>ContainerDriver: start()
    Runtime->>Ui: { status: "okay" }
    Ui->>Ui: Show Project Overview
    alt success
      Stripe->>Runtime: POST /ee/billing/callback
    else failure
      Stripe->>Runtime: POST /ee/billing/callback
      Runtime->>ContainerDriver: stop()
      Runtime->>ContainerDriver: disable()
      Runtime->>User: email message
    end
  else no Subscription
    Runtime->>Ui: Failed to create project, no Billing info
  end
else no billing
  Runtime->>Ui: { status: "okay" }
  Ui->>Ui: Show Project Overview
end
Updated: 4 Nov, 2025