A modern, full-featured SaaS platform for automating cloud infrastructure workflows using n8n and Supabase.
- User Authentication - Secure signup/login with Supabase Auth
- Dashboard - Real-time stats and execution monitoring
- Workflow Management - Create, edit, run, and delete workflows
- Template Marketplace - Browse and import pre-built workflow templates
- Credentials Management - Secure encrypted storage for cloud credentials (AWS, GCP, Azure)
- Execution History - Timeline view of all workflow executions
- User Settings - Profile management and password changes
- Multi-Cloud Support - AWS, GCP, Azure, and Kubernetes
- AES-256-GCM encryption for credentials
- Row-Level Security (RLS) in Supabase
- JWT-based authentication
- Secure credential injection into workflows
- Environment-based configuration
- Real-time execution statistics
- Interactive workflow cards
- Searchable and filterable views
- Modal-based forms
- Toast notifications
- Timeline execution history
- Responsive design
- Node.js 18+ installed
- Supabase account
- n8n instance (local or cloud)
- Clone the repository
cd cloudpilot-complete- Install dependencies
npm install- Setup environment variables
# Copy the example env file
cp .env.example .env
# Generate encryption key
npm run generate-key
# Edit .env and add:
# - Generated encryption key
# - Supabase credentials
# - N8N URL and API key- Setup database
# Go to Supabase SQL Editor
# Run the script: scripts/schema.sql- Start the server
npm start
# or for development with auto-reload:
npm run dev- Open the application
http://localhost:4000
cloudpilot-complete/
βββ public/
β βββ index.html # Main HTML file with UI
β βββ app.js # Frontend JavaScript
βββ routes/
β βββ credentials.js # Credential management APIs
β βββ settings.js # User settings APIs
β βββ executions.js # Execution tracking APIs
βββ utils/
β βββ auth.js # Authentication middleware
β βββ encryption.js # Encryption utilities
βββ scripts/
β βββ schema.sql # Database schema
βββ server.js # Main Express server
βββ package.json
βββ .env.example
βββ README.md
| Variable | Description | Required |
|---|---|---|
PORT |
Server port (default: 4000) | No |
SUPABASE_URL |
Your Supabase project URL | Yes |
SUPABASE_ANON_KEY |
Supabase anonymous key | Yes |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key | Yes |
N8N_URL |
N8N instance URL | Yes |
N8N_API_KEY |
N8N API key | Yes |
ENCRYPTION_KEY |
64-char hex encryption key | Yes |
npm run generate-keyCopy the output to your .env file under ENCRYPTION_KEY.
All API routes (except /api/config and /api/health) require Bearer token authentication.
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}GET /api/credentials- List user credentialsPOST /api/credentials- Add new credentialGET /api/credentials/:id- Get credential detailsPUT /api/credentials/:id- Update credentialDELETE /api/credentials/:id- Delete credentialPOST /api/credentials/:id/test- Test credential connection
GET /api/settings/profile- Get user profilePOST /api/settings/profile- Update profilePOST /api/settings/password- Change passwordPOST /api/settings/email- Update emailPOST /api/settings/notifications- Update notification preferences
POST /api/executions- Create execution recordGET /api/executions/recent- Get recent executionsGET /api/executions/stats- Get execution statisticsGET /api/executions/:id- Get execution detailsDELETE /api/executions/:id- Delete executionPOST /api/executions/:id/retry- Retry failed executionGET /api/workflows/:id/history- Get workflow execution history
GET /api/workflows- List workflowsPOST /api/workflows- Create workflowGET /api/workflows/:id- Get workflow detailsPATCH /api/workflows/:id- Update workflowDELETE /api/workflows/:id- Delete workflowPOST /api/workflows/:id/run- Execute workflow
POST /api/templates/import- Import template
- Execution statistics cards
- Recent executions table
- Quick action buttons
- Workflow cards with actions
- Search and filter
- Run, view details, and delete options
- Template marketplace
- Category filtering
- One-click import
- Secure credential management
- Provider-specific forms (AWS, GCP, Azure)
- Test connection feature
- Timeline view of executions
- Status badges (success, failed, running)
- Duration tracking
- Error messages
- Profile management
- Password change
- Notification preferences
- AES-256-GCM encryption
- Unique IV per credential
- Authentication tags for integrity
- Keys stored in environment variables
- Row-Level Security (RLS) enabled
- Users can only access their own data
- Service role key for backend operations only
- JWT token validation
- Database indexes on frequently queried columns
- Pagination for large datasets
- Caching of static data
- Lazy loading of execution history
- Optimistic UI updates
Issue: "ENCRYPTION_KEY must be 64 hex characters"
# Generate a new key
npm run generate-key
# Copy to .env fileIssue: "Failed to fetch configuration"
- Check SUPABASE_URL and SUPABASE_ANON_KEY in .env
- Ensure server is running on correct port
Issue: "Authentication failed"
- Verify Supabase credentials
- Check if user is logged in
- Ensure token is not expired
Issue: "Failed to connect to n8n"
- Verify N8N_URL is correct
- Check N8N_API_KEY is valid
- Ensure n8n instance is running
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For support, please:
- Open an issue on GitHub
- Check existing documentation
- Review troubleshooting section
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Backend: Node.js, Express
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Workflow Engine: n8n
- Encryption: Node.js Crypto (AES-256-GCM)
- Page load: < 2s
- API response: < 500ms
- Encryption/Decryption: < 100ms
- Database queries: < 200ms
- 99.9% uptime target
Built with β€οΈ by the CloudPilot Team