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

pip3 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

pip3 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.9.tar.gz (32.8 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.9-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fflow_cli-1.0.9.tar.gz
  • Upload date:
  • Size: 32.8 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.9.tar.gz
Algorithm Hash digest
SHA256 3d182e13f473f04f34d726e21de8fc19d183ac426a4b46a1f0302317bcf93990
MD5 7ec9451b61b8de5d55cbb79b661f8de1
BLAKE2b-256 148998a2dc8640971d6a909fe8d09bf1c4abed121616c6b2c3165cea6ed4e36d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fflow_cli-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 35.2 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 180a0bdb400e26cb35a12425c7bae58bc82beb367f57003d8028a238ab1faf89
MD5 24a19621b23f2f1902ae7497d74510fe
BLAKE2b-256 d27f760134f7479c0ee5ffc74a639509a5f5571c29319dff19d57cf1f90efb1c

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