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.5.tar.gz (32.4 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.5-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fflow_cli-1.0.5.tar.gz
  • Upload date:
  • Size: 32.4 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.5.tar.gz
Algorithm Hash digest
SHA256 7ec8a252128cec56fea2d37ad71fe48f7c1db4e3de1016e3b44bc86cd6474f82
MD5 6f9a36be3167d3a94c77712c960df9d9
BLAKE2b-256 39735010f54c3342423be783aa12c94ef449c572e8a5c3a1cd9ccc206b4ccf0c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fflow_cli-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 34.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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fc30da25895c34b8247838639c1ab5031117a7a48b5881308749fa6dea373c64
MD5 97bec5a3995faa13fe8fc22f34b39804
BLAKE2b-256 580851e427bb1553fc430b42a5461ebff477a02c50c486f03118052e6b357d79

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