Low-Code / No-Code Platforms - Guía de Entorno¶
Guía completa para trabajar con plataformas low-code y automatización con Claude Code.
Capacidades de Claude Code¶
| Plataforma | Capacidades |
|---|---|
| n8n | Workflows JSON, custom nodes |
| Zapier | Apps, Zaps CLI |
| Make (Integromat) | Scenarios, módulos |
| Power Automate | Flows, expresiones |
| Retool | Queries, JS, componentes |
| Appsmith | Widgets, JS, APIs |
| Supabase | SQL, Edge Functions |
n8n (Self-hosted automation)¶
Instalación¶
# Docker (recomendado)
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
# npm (desarrollo)
npm install -g n8n
n8n start
# UI: http://localhost:5678
CLI¶
# Exportar workflows
n8n export:workflow --all --output=./workflows/
# Importar workflows
n8n import:workflow --input=./workflows/
# Ejecutar workflow
n8n execute --id=<workflow-id>
# Crear custom node
npx n8n-node-dev new
Workflow JSON¶
{
"name": "My Workflow",
"nodes": [
{
"parameters": {
"url": "https://api.example.com/data",
"options": {}
},
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [250, 300]
},
{
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json.status}}",
"operation": "equal",
"value2": 200
}
]
}
},
"name": "IF",
"type": "n8n-nodes-base.if",
"position": [450, 300]
}
],
"connections": {
"HTTP Request": {
"main": [[{"node": "IF", "type": "main", "index": 0}]]
}
}
}
Custom Node Development¶
# Crear proyecto
mkdir my-n8n-nodes
cd my-n8n-nodes
npm init -y
npm install n8n-core n8n-workflow
# Estructura
my-n8n-nodes/
├── nodes/
│ └── MyNode/
│ ├── MyNode.node.ts
│ └── mynode.svg
├── credentials/
│ └── MyApi.credentials.ts
└── package.json
Zapier¶
Zapier CLI¶
# Instalar
npm install -g zapier-platform-cli
# Login
zapier login
# Crear app
zapier init my-app
cd my-app
# Estructura
my-app/
├── authentication.js
├── creates/
├── triggers/
├── searches/
├── index.js
└── package.json
# Comandos
zapier test # Tests locales
zapier push # Deploy
zapier promote # Promover versión
zapier logs # Ver logs
Trigger Example¶
// triggers/new_item.js
const perform = async (z, bundle) => {
const response = await z.request({
url: 'https://api.example.com/items',
params: {
since: bundle.meta.page ? bundle.meta.page : undefined
}
});
return response.data;
};
module.exports = {
key: 'new_item',
noun: 'Item',
display: {
label: 'New Item',
description: 'Triggers when a new item is created.'
},
operation: {
perform,
sample: {
id: 1,
name: 'Sample Item'
}
}
};
Power Automate¶
Power Platform CLI¶
# Instalar
dotnet tool install --global Microsoft.PowerApps.CLI.Tool
# Login
pac auth create
# Exportar flows
pac solution export --path ./solution.zip
# Cloud flows están en solutions
Expresiones comunes¶
// Obtener fecha actual
utcNow()
// Formatear fecha
formatDateTime(utcNow(), 'yyyy-MM-dd')
// Condicional
if(equals(triggerBody()?['status'], 'active'), 'Yes', 'No')
// Obtener valor de array
first(body('Get_items')?['value'])?['name']
// String manipulation
concat('Hello ', triggerBody()?['name'])
substring(variables('myString'), 0, 10)
// JSON
json(body('HTTP'))
string(variables('myObject'))
Retool¶
Desarrollo Local¶
# Retool CLI (beta)
npm install -g @retool/cli
# Login
retool login
# Pull app
retool pull --app "My App"
# Estructura exportada
my-app/
├── queries/
│ ├── getUsers.sql
│ └── createUser.sql
├── components/
└── app.json
# Push cambios
retool push
JavaScript en Retool¶
// Transformers
const data = {{ getUsers.data }};
return data.map(user => ({
...user,
fullName: `${user.firstName} ${user.lastName}`
}));
// Event handlers
await getUsers.trigger();
utils.showNotification({ title: "Success", description: "Data loaded" });
// State management
{{ state1.value }}
state1.setValue(newValue);
// Conditional visibility
{{ currentUser.role === 'admin' }}
Appsmith¶
Self-hosted¶
# Docker
docker run -d --name appsmith -p 80:80 -v "$PWD/stacks:/appsmith-stacks" appsmith/appsmith-ce
# Docker Compose
curl -L https://bit.ly/docker-compose-appsmith -o docker-compose.yml
docker compose up -d
Git Sync¶
# Appsmith soporta Git nativo
# Conectar repo desde UI: Settings > Git Connection
# Estructura en Git
.appsmith/
├── pages/
│ └── Page1/
│ ├── Page1.json
│ └── queries/
│ └── Query1.json
├── datasources/
└── theme.json
JavaScript en Appsmith¶
// API calls
await Api1.run();
const data = Api1.data;
// Store values
storeValue('userId', selectedRow.id);
appsmith.store.userId;
// Navigation
navigateTo('Page2', { id: selectedRow.id });
// Alerts
showAlert('Success!', 'success');
// Modals
showModal('Modal1');
closeModal('Modal1');
Supabase¶
CLI¶
# Instalar
npm install -g supabase
# Login
supabase login
# Iniciar proyecto local
supabase init
supabase start
# Migraciones
supabase migration new create_users
supabase db push
# Edge Functions
supabase functions new my-function
supabase functions serve my-function
supabase functions deploy my-function
# Generar tipos TypeScript
supabase gen types typescript --local > types/supabase.ts
Edge Functions¶
// supabase/functions/my-function/index.ts
import { serve } from "https://deno.land/std@0.168.0/http/server.ts"
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
serve(async (req) => {
const supabase = createClient(
Deno.env.get('SUPABASE_URL')!,
Deno.env.get('SUPABASE_ANON_KEY')!
)
const { data, error } = await supabase
.from('users')
.select('*')
return new Response(
JSON.stringify({ data, error }),
{ headers: { "Content-Type": "application/json" } }
)
})
Directus¶
Instalación¶
# npm
npm init directus-project my-project
# Docker
docker run -d \
-p 8055:8055 \
-e KEY=<random-key> \
-e SECRET=<random-secret> \
directus/directus
# CLI
npx directus database migrate:latest
npx directus roles create --name admin --admin
Extensions¶
# Crear extension
npx create-directus-extension@latest
# Tipos
# - interface (UI components)
# - display (column display)
# - endpoint (custom API)
# - hook (event listeners)
# - operation (flows)
# Build
npm run build
# Deploy
cp -r dist extensions/
Budibase¶
Instalación¶
# Docker
docker run -d \
-p 10000:80 \
-v budibase_data:/data \
budibase/budibase
# CLI
npm install -g @budibase/cli
budi hosting --init
budi hosting --start
Comandos que Claude Code Ejecutará¶
# n8n
n8n export:workflow --all
n8n import:workflow --input=workflow.json
n8n execute --id=123
# Zapier
zapier test
zapier push
zapier logs
# Retool
retool pull --app "MyApp"
retool push
# Supabase
supabase migration new name
supabase db push
supabase functions deploy
# Directus
npx directus database migrate:latest
Verificación del Entorno¶
#!/bin/bash
echo "=== Verificación Entorno Low-Code ==="
echo -e "\n--- n8n ---"
n8n --version 2>/dev/null || echo "n8n no instalado"
echo -e "\n--- Zapier CLI ---"
zapier --version 2>/dev/null || echo "Zapier CLI no instalado"
echo -e "\n--- Supabase ---"
supabase --version 2>/dev/null || echo "Supabase CLI no instalado"
echo -e "\n--- Retool ---"
retool --version 2>/dev/null || echo "Retool CLI no instalado"
echo -e "\n--- Docker (para self-hosted) ---"
docker --version
echo -e "\n=== Verificación Completa ==="