ProFlow is a comprehensive internal tool designed for organizations to create, manage, and visualize business processes. It features version control and role-based access.
Preview.mp4
- Process Modeling: Visual diagram editor to create steps, decisions, and connections.
- Version Control: Draft and Published states with version history.
- Role-Based Access Control (RBAC):
- Admins: Full system access, user management, and configuration.
- Editors: Create and edit processes and catalogs.
- Viewers: Read-only access to published processes.
- Catalogs Management: Centralized management for Departments, Roles, and Process Categories.
- Authentication: Support for Google Sign-In and Email/Password authentication via Firebase.
- Custom Branding: Configurable company logo, colors, and legal text.
- Frontend: React 19, TypeScript, Vite
- Styling: Tailwind CSS, Lucide React (Icons)
- Backend / DB: Firebase v12 (Auth, Firestore)
- Node.js: v18 or higher.
- Firebase Project: A project created in the Firebase Console.
git clone <repository-url>
cd proflow-process-manager
npm installThe application supports separate configurations for Development and Production.
- Create a Firebase project.
- Enable Authentication (Google Provider and Email/Password Provider).
- Enable Firestore Database (Create in test mode or set appropriate rules).
- Copy your web app configuration from Project Settings.
- Open
firebaseParams.tsand paste your configuration intodevConfig(andprodConfigfor deployment).
To run initialization scripts (like creating the first Admin user) locally:
- Go to Firebase Console > Project Settings > Service Accounts.
- Click Generate new private key.
- Option A (File): Save the downloaded file as
service-account.jsonin the root directory of this project. - Option B (Env): Alternatively, you can set the
SERVICE_ACCOUNT_JSONenvironment variable with the contents of the JSON file (useful for CI/CD).
npm startRuns the app in development mode.
- Note: If
firebaseParams.tsis empty or invalid, the app will automatically fall back to Mock Mode, using in-memory data for testing.
To set up the database with initial schemas and create the first Admin user:
Prerequisites:
- You must have created/provisioned the Cloud Firestore database in the Firebase Console before running this script.
- You must have your credentials service configured on the root (
service-account.json) or have theSERVICE_ACCOUNT_JSONenvironment variable loaded with the JSON content.
npm run db:init -- --email=your-email@example.com --samples--: This separator is required when usingnpm runto pass arguments to the underlying script.--email: Sets this email as the system ADMIN.--samples: (Optional) Populates the DB with sample departments, roles, and a process.
- Google Login: Standard popup authentication.
- Email/Password: Requires the user to be pre-created by an Admin or through the signup process (if enabled).
The central hub showing all processes.
- Filters: Filter by category using the top bar.
- Drafts: Only Editors and Admins can see Draft versions.
- Delete Drafts: Orphaned drafts (drafts with no published history) can be deleted directly from the dashboard card.
- Add Node: Click the "+" button in the top left.
- Connect: Hold
Shift+ Click a node to start a connection, then click the target node. - Edit Node: Click a node to open the side panel to edit title, description, and role assignment.
- Versions: Use the "Commit" button to save a version. You can publish drafts to make them visible to Viewers.
Manage reusable data entities.
- Departments: Organizational units (e.g., IT, HR).
- Roles: Job titles linked to departments (e.g., HR Manager).
- Categories: Grouping for processes (e.g., Onboarding, Security).
Protection Rules:
- Categories: Cannot be deleted if used by any Process.
- Roles: Cannot be deleted if assigned to any Process Node.
- Departments: Cannot be deleted if they contain Roles.
Scripts are included to backup Firestore data to a local JSON file.
-
Export Data:
npm run db:export
Saves entire database to
backup-data.json. -
Import Data:
npm run db:import
Restores data from
backup-data.json.
MIT License. Copyright (c) 2026 Abraham Fraydé.