Skip to main content

FlutterFlow Git workflow CLI — manage feature branches, exports, staging and pushes.

Project description

fflow — FlutterFlow Git Workflow CLI

Automates the FlutterFlow → Git workflow for teams.
Designed for developers who export FlutterFlow code via CLI and push to GitLab.


Requirements

Before installing, make sure you have:

  • Python 3.9+python.org/downloads

  • Gitgit-scm.com
    Verify: git --version

  • Flutter SDK (includes Dart) — flutter.dev/docs/get-started/install
    Verify: flutter --version
    Required to install the FlutterFlow CLI via dart pub global.

  • FlutterFlow CLI — install via:

    dart pub global activate flutterflow_cli
    

    Add Dart's pub global bin to PATH if not already:

    # Mac/Linux (bash)
    echo 'export PATH="$PATH:$HOME/.pub-cache/bin"' >> ~/.bashrc && source ~/.bashrc
    
    # Mac (zsh)
    echo 'export PATH="$PATH:$HOME/.pub-cache/bin"' >> ~/.zshrc && source ~/.zshrc
    

    Verify: flutterflow --version

  • GitLab SSH access — fflow pushes via SSH. Set up your SSH key:

    ssh-keygen -t ed25519 -C "your@email.com"
    cat ~/.ssh/id_ed25519.pub
    

    Copy the output and add it to GitLab under Profile → SSH Keys.
    Verify: ssh -T git@gitlab.com

  • A GitLab repository with your FlutterFlow project connected

  • A FlutterFlow export CLI command — get it from your FlutterFlow project settings under Developer Settings → Export Code CLI


Installation

1. Install pip (if not already installed)

Mac / Linux:

python3 -m ensurepip --upgrade

Or using the get-pip script:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py

Windows: pip comes bundled with Python. If missing:

python -m ensurepip --upgrade

Verify pip is installed:

pip3 --version

2. Add pip's bin directory to PATH

After installing pip packages, the fflow command needs to be on your PATH.

Mac / Linux (bash):

echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Mac (zsh — default on macOS Catalina+):

echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

Windows:
Python's user scripts folder is usually %APPDATA%\Python\PythonXX\Scripts.
Add it to PATH via System Properties → Environment Variables → Path → Edit.

Verify:

echo $PATH

3. Install fflow-cli

pip install fflow-cli

Verify the install:

fflow --help

One-time Setup (per repository)

Run this inside your Flutter project's git repo:

cd /path/to/your/flutter/repo
fflow setup

You will be asked for:

  1. FlutterFlow CLI export command — paste the full command from FlutterFlow (token stored securely, never in git)
  2. GitLab repository URL — e.g. git@gitlab.example.com:group/repo.git
  3. Parent branches — e.g. uat, migrated_uat, migrated_prod
  4. Custom files — any hand-written files to protect from FF export overwrites

Run fflow setup again anytime to update individual settings.


Daily Usage

Every time you work — just run:

fflow

fflow reads your current git state and guides you through every step interactively:

  1. Creates your feature branch (PROJ-123-uat)
  2. Runs FlutterFlow CLI export
  3. Restores your custom code files automatically
  4. Asks which pages/folders you worked on
  5. Shows exact file list before staging
  6. Detects if someone pushed to the parent branch mid-work
  7. Safely syncs (rebases) without losing your work
  8. Commits with the correct format (PROJ-123 LoginPage, ProfilePage changes)
  9. Pushes to GitLab

Commands

Command When to use
fflow Every time — runs the main workflow
fflow setup Once per repo, or to update settings
fflow doctor When something looks broken
fflow status Check current task phase and branch

Branch & Commit Format

  • Branch: PROJ-123-uat
  • Commit: PROJ-123 LoginPage, ProfilePage changes

Custom File Protection

Protect hand-written files that would otherwise be overwritten by FlutterFlow export:

fflow setup  # → choose "Custom files" to add/remove entries

Before every FF export, fflow backs up all registered files and restores them after — your code is never lost.


Mid-Work Sync

If someone pushes to the parent branch while you're working, fflow:

  1. Detects it automatically before every step
  2. Warns you with the number of new commits
  3. Stashes your changes → rebases → re-applies → restores custom files
  4. Auto-resolves FF-generated file conflicts
  5. Pauses for manual resolution on your files
  6. Run fflow again after resolving to continue

Files Created in Your Repo

File Purpose Git-tracked?
.fflow.json Project config (branches, endpoint, project ID) ✔ Yes
.fflow.env Your FF token (secret) ✖ No (gitignored)
.fflow_registry.json List of your custom files ✔ Yes
.fflow_state.json Current task session state ✖ No (gitignored)
.fflow_custom_backup/ Backup of custom files before FF export ✖ No (gitignored)

Upgrading

pip install --upgrade fflow-cli

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fflow_cli-1.0.3.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fflow_cli-1.0.3-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

File details

Details for the file fflow_cli-1.0.3.tar.gz.

File metadata

  • Download URL: fflow_cli-1.0.3.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for fflow_cli-1.0.3.tar.gz
Algorithm Hash digest
SHA256 a63e3ac74a89b80d2661b63860a77af1a557fe035503aa9911e5e983738d6707
MD5 3b02cb3ea7a708573f4999970ab71f75
BLAKE2b-256 ade45f0af506a79839c6ae27ccd5a8b8f23d218c155b062f3cd3164d12e0777c

See more details on using hashes here.

File details

Details for the file fflow_cli-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: fflow_cli-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 30.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for fflow_cli-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 00ca94388995c121a56d68859c46b07e17802cf8046bd459916721eda2fa320d
MD5 5edb58aaf6185bc14844c1f1cfd2c629
BLAKE2b-256 5448f2621b38d1ff744e9dbad9944d6f2d46b3ddd876b9ebd9b1f72867bed295

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page