AI-Powered Workflow Automation SaaS Platform
A complete multi-tenant SaaS system for building and executing automated workflows with AI integration, similar to Zapier, Make, Kissflow, and Pipefy.
- Multi-Tenant Architecture - Isolated data per tenant with subscription management
- Workflow Builder - Visual workflow creation with multiple step types
- AI Integration - OpenAI and local LLM support for intelligent automation
- Webhook Triggers - Unique webhook endpoints per workflow
- Schedule Triggers - Cron-like scheduling (hourly, daily, weekly, monthly)
- Approval System - Manual approval steps in workflows
- Integrations - Pre-built connectors (Slack, Gmail, WhatsApp, Google Sheets, REST API)
- Public API - RESTful API with authentication
- Real-time Execution - Background workflow processing
- Usage Tracking - Monitor API calls, flow runs, AI tokens, storage
- Subscription Plans - Free, Starter, Professional, Enterprise tiers
- Database Write - Insert/update records
- Send Email - Email notifications
- HTTP Request - Call external APIs
- Webhook Call - Send data to external webhooks
- Condition (IF) - Conditional branching
- Branching - True/false path routing
- Delay - Wait for specified time
- Approval - Manual approval gates
- AI Steps - Summarize, classify, extract entities, generate text
- RPA Steps - Simulated browser automation
- Integration API - Use pre-configured integrations
- Backend: PHP 7.0+ (no frameworks, custom MVC)
- Database: MySQL 5.7+ / MariaDB 10.2+
- Frontend: Vanilla JavaScript, HTML5, CSS3
- AI: OpenAI API or Local LLM (Ollama compatible)
- Security: Password hashing, CSRF protection, rate limiting, API keys
- PHP 7.0 or higher
- MySQL 5.7+ or MariaDB 10.2+
- Apache or Nginx web server
- Composer (optional, not required)
- OpenAI API key (optional, for AI features)
- PDO and pdo_mysql
- cURL
- OpenSSL
- JSON
- mbstring
git clone https://github.com/ahmedsaadawi13/SplashAIFlow.git cd SplashAIFlowcp .env.example .envEdit .env and configure:
- Database credentials
- AI provider settings (OpenAI or local LLM)
- App URL and timezone
mysql -u root -p CREATE DATABASE splashaiflow CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; exit;Import the schema:
mysql -u root -p splashaiflow < database.sqlchmod -R 755 storage/ chmod -R 755 storage/logs/ chmod -R 755 storage/uploads/Create a virtual host:
<VirtualHost *:80> ServerName splashaiflow.local DocumentRoot /path/to/SplashAIFlow/public <Directory /path/to/SplashAIFlow/public> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/splashaiflow_error.log CustomLog ${APACHE_LOG_DIR}/splashaiflow_access.log combined </VirtualHost>Enable mod_rewrite:
sudo a2enmod rewrite sudo systemctl restart apache2server { listen 80; server_name splashaiflow.local; root /path/to/SplashAIFlow/public; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }Add to crontab:
* * * * * cd /path/to/SplashAIFlow && php -r "require 'app/helpers/WorkflowScheduler.php'; WorkflowScheduler::run();" >> /dev/null 2>&1After installation, login with:
- Email: admin@splashaiflow.com
- Password: admin123
Important: Change this password immediately in production!
- Login to the dashboard
- Navigate to Workflows
- Click Create Workflow
- Add steps using the workflow builder
- Configure triggers (webhook, schedule, or event)
- Activate the workflow
Each workflow with a webhook trigger gets a unique URL:
POST https://your-domain.com/webhook/{tenant_key}/{workflow_key}/{secret} Send JSON payload to trigger the workflow:
curl -X POST https://your-domain.com/webhook/acmecorp/process_order/abc123... \ -H "Content-Type: application/json" \ -d '{"order_id": 12345, "customer": "John Doe"}'Login → Settings → API Keys → Generate New Key
List workflows:
curl -X GET https://your-domain.com/api/workflows \ -H "X-API-KEY: your_api_key_here"Run workflow:
curl -X POST https://your-domain.com/api/workflows/workflow_key/run \ -H "X-API-KEY: your_api_key_here" \ -H "Content-Type: application/json" \ -d '{"payload": {"key": "value"}}'Get flow run details:
curl -X GET https://your-domain.com/api/flow-runs/123 \ -H "X-API-KEY: your_api_key_here"Configure AI provider in .env:
OpenAI:
AI_PROVIDER=openai AI_API_KEY=sk-... AI_MODEL=gpt-3.5-turboLocal LLM (Ollama):
AI_PROVIDER=local AI_LOCAL_ENDPOINT=http://localhost:11434/api/generate AI_LOCAL_MODEL=llama2Use AI steps in workflows to:
- Summarize text
- Classify content
- Extract entities
- Generate responses
- Interpret data
Connect integrations:
- Navigate to Integrations
- Select integration (Slack, Gmail, etc.)
- Provide authentication details
- Use in workflow steps
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/workflows | List all workflows |
| GET | /api/workflows/{key}/schema | Get workflow schema |
| POST | /api/workflows/{key}/run | Run workflow |
| GET | /api/flow-runs | List flow runs |
| GET | /api/flow-runs/{id} | Get flow run details |
| Method | Endpoint | Description |
|---|---|---|
| POST/GET | /webhook/{tenant}/{workflow}/{secret} | Trigger workflow |
- Password hashing with bcrypt
- CSRF token protection
- SQL injection prevention (prepared statements)
- XSS protection (output escaping)
- Rate limiting (login, API, webhooks)
- API key authentication
- Webhook secret validation
- File upload validation
- Account lockout after failed attempts
- Audit logging
| Plan | Price | Workflows | Tasks/Month | AI Tokens | Features |
|---|---|---|---|---|---|
| Free | $0 | 3 | 100 | 10K | Basic triggers |
| Starter | $29 | 10 | 1K | 100K | Webhooks, AI |
| Professional | $99 | 50 | 10K | 500K | RPA, Advanced |
| Enterprise | $299 | 999 | 100K | 2M | Everything |
SplashAIFlow/ ├── app/ │ ├── controllers/ # Application controllers │ ├── models/ # Database models │ ├── views/ # HTML views │ ├── core/ # Core MVC classes │ └── helpers/ # Helper classes (AI, Security, etc.) ├── config/ # Configuration files ├── public/ # Public web root │ ├── assets/ # CSS, JS, images │ └── index.php # Application entry point ├── storage/ # Logs and uploads │ ├── logs/ │ └── uploads/ ├── tests/ # Unit tests ├── database.sql # Database schema ├── .env.example # Environment template └── README.md - Add step type to
WorkflowEngine::executeStepAction() - Create execution method (e.g.,
executeCustomStep()) - Add UI option in workflow builder
- Update documentation
- Insert into
integrationstable - Create integration handler in
WorkflowEngine::executeIntegration() - Add authentication UI
- Document API requirements
- Check cron job is running
- Verify database connection
- Check workflow is active
- Review error logs in
storage/logs/
- Verify API key in
.env - Check AI provider is accessible
- Review token quotas
- Check error logs
- Verify secret is correct
- Check rate limiting
- Ensure workflow is active
- Review webhook logs
- Enable PHP OPcache
- Use MySQL query caching
- Implement Redis for sessions
- Add CDN for static assets
- Enable gzip compression
- Optimize database indexes
- Use HTTPS in production
- Change default admin password
- Rotate API keys regularly
- Enable rate limiting
- Keep PHP and MySQL updated
- Use strong passwords
- Regular security audits
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open-source and available under the MIT License.
For issues and questions:
- GitHub Issues: https://github.com/ahmedsaadawi13/SplashAIFlow/issues
- Documentation: https://docs.splashaiflow.com
- Email: ahmed.sha3ban13@gmail.com
- Visual workflow builder UI
- More integrations (Salesforce, HubSpot, etc.)
- Workflow templates library
- Real-time execution monitoring
- Advanced analytics and reporting
- Multi-language support
- Mobile app
- Workflow versioning
- A/B testing for workflows
- Custom code steps (JavaScript sandbox)
Built with inspiration from:
- Zapier
- Make (Integromat)
- Kissflow
- Pipefy
- n8n
SplashAIFlow - Automate smarter, not harder.