FlutterFlow Git workflow CLI — manage feature branches, exports, staging and pushes.
Project description
fflow — FlutterFlow Dev Workflow Tool
Automates the FlutterFlow → VS Code → Git workflow for teams.
Designed for developers who export FlutterFlow code via CLI and push to GitLab.
Installation
Works on Windows, Mac, and Linux.
cd ~/Development/fflow
python install.py
This installs fflow as a global command and installs dependencies.
One-time Setup (per repository)
cd /path/to/your/git/repo
fflow setup
You will be asked for:
- Your FlutterFlow CLI export command (paste it once — token is stored securely)
- GitLab repository URL
- Parent branches (uat, migrated_uat, migrated_prod)
- Any hand-written custom files to protect from FF overwrites
Daily Usage
Every time you work — just run:
fflow
fflow reads your current git state and guides you through every step with y/n prompts:
- Creates your branch (
IABCP2-1234-uat) - Runs FlutterFlow 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 parent branch mid-work
- Safely syncs (rebases) without losing your work
- Commits with correct format (
IABCP2-1234 LoginPage changes) - Pushes to GitLab
Commands
| Command | When to use |
|---|---|
fflow |
Every time — main workflow |
fflow setup |
Once per repository |
fflow register <file> |
When you create a new hand-written file |
fflow unregister <file> |
Remove a file from custom registry |
fflow doctor |
When something looks broken |
fflow --abort |
Cancel a paused sync |
Branch & Commit Format
- Branch:
IABCP2-1234-uat - Commit:
IABCP2-1234 LoginPage, ProfilePage changes
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) |
How Custom File Protection Works
- You run
fflow register lib/utils/custom_helper.dart - Before every FF export, fflow backs up all registered files
- After export, fflow restores them — even if FF overwrote them
- Your hand-written code is never lost
How Mid-Process Sync Works
If someone pushes to the parent branch while you're working:
- fflow detects it automatically before every step
- Warns you with number of new commits
fflow→ syncs: stashes your changes → rebases → re-applies your changes → restores custom files- FF-generated file conflicts are auto-resolved
- Your file conflicts are shown clearly for manual resolution
- After resolving, run
fflowagain to continue
Requirements
- Python 3.7+
- Git
- FlutterFlow CLI installed and in PATH
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.0.tar.gz.
File metadata
- Download URL: fflow_cli-1.0.0.tar.gz
- Upload date:
- Size: 26.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 |
0b9ab87db73819aa7653ad468628c1d9b6108cebfaf916a1d99730d53cdd2059
|
|
| MD5 |
994f972f66a9e5c6474eae1be975d283
|
|
| BLAKE2b-256 |
850a75176f2c4aba0785213ec6ee7561420a10776657c1df128d8474918b5929
|
File details
Details for the file fflow_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: fflow_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 29.8 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 |
a5a9d8e8d92eeb250a181015c4d2e4c92c2653ce0f5fc4e747b0fff9e1b3e761
|
|
| MD5 |
f655eeb5ad159ea08b8f9d8988909222
|
|
| BLAKE2b-256 |
d580ae470a29b8a0893b08f9e4f3763b17011171ea3f3638006d12fc89384e1e
|