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
-
Git — git-scm.com
Verify:git --version -
Flutter SDK (includes Dart) — flutter.dev/docs/get-started/install
Verify:flutter --version
Required to install the FlutterFlow CLI viadart 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:
- FlutterFlow CLI export command — paste the full command from FlutterFlow (token stored securely, never in git)
- GitLab repository URL — e.g.
git@gitlab.example.com:group/repo.git - Parent branches — e.g.
uat,migrated_uat,migrated_prod - Custom files — any hand-written files to protect from FF export overwrites
Run
fflow setupagain 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:
- Creates your feature branch (
PROJ-123-uat) - Runs FlutterFlow CLI export
- Restores your custom code files automatically
- Asks which pages/folders you worked on
- Shows exact file list before staging
- Detects if someone pushed to the parent branch mid-work
- Safely syncs (rebases) without losing your work
- Commits with the correct format (
PROJ-123 LoginPage, ProfilePage changes) - 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:
- Detects it automatically before every step
- Warns you with the number of new commits
- Stashes your changes → rebases → re-applies → restores custom files
- Auto-resolves FF-generated file conflicts
- Pauses for manual resolution on your files
- Run
fflowagain 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d182e13f473f04f34d726e21de8fc19d183ac426a4b46a1f0302317bcf93990
|
|
| MD5 |
7ec9451b61b8de5d55cbb79b661f8de1
|
|
| BLAKE2b-256 |
148998a2dc8640971d6a909fe8d09bf1c4abed121616c6b2c3165cea6ed4e36d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
180a0bdb400e26cb35a12425c7bae58bc82beb367f57003d8028a238ab1faf89
|
|
| MD5 |
24a19621b23f2f1902ae7497d74510fe
|
|
| BLAKE2b-256 |
d27f760134f7479c0ee5ffc74a639509a5f5571c29319dff19d57cf1f90efb1c
|