Ficha 02 · Low-code avançado
Exercício 1 · n8n self-host
Instala n8n localmente via Docker. Verifica que abre na porta 5678 e cria utilizador admin. Tira screenshot da tela inicial.
Resposta:
# Pré-requisito: Docker instalado
docker run -d --restart unless-stopped \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
Verificar:
docker ps | grep n8n
Abrir http://localhost:5678 → criar conta admin (local, fica num ficheiro).
Screenshot: dashboard vazio com botão "Create new workflow".
Alternativa sem Docker:
npm install -g n8n
n8n start
Exercício 2 · Workflow webhook → Slack
No n8n cria workflow: - Trigger: Webhook node (POST, copia URL). - Action: Slack (ou Discord, ou email) → envia mensagem com o conteúdo do payload.
Testa com curl ou Postman.
Resposta:
- New workflow → adicionar Webhook node:
- HTTP Method: POST.
- Path:
meu-test. -
Copy "Test URL".
-
Adicionar Discord (mais fácil que Slack para teste):
- Criar Discord webhook num canal (Settings → Integrations → Webhooks → New → copy URL).
- No node Discord do n8n: HTTP Request com a webhook URL.
-
Body JSON:
{"content": "Novo evento: {{$json["mensagem"]}}"}. -
Activate workflow.
-
Testar:
curl -X POST https://n8n.minha.url/webhook/meu-test \
-H "Content-Type: application/json" \
-d '{"mensagem":"olá mundo do n8n!"}'
Mensagem aparece no Discord.
Exercício 3 · Workflow Schedule → email diário
Cria workflow n8n que: - Trigger: cada dia às 9h (cron node). - Action: HTTP GET a uma API qualquer (ex: weatherapi para Lisboa). - Action: envia email com a temperatura.
Resposta:
- Schedule Trigger:
- Mode: Custom.
-
Cron expression:
0 9 * * *(9h todos os dias). -
HTTP Request:
- Method: GET.
- URL:
https://wttr.in/Lisbon?format=j1(sem auth). -
Response Format: JSON.
-
Email Send:
- SMTP credentials (Gmail app password ou outro).
- To: o teu email.
- Subject:
Tempo hoje em Lisboa. -
Body:
Temperatura: {{$json.current_condition[0].temp_C}}°C. -
Activate.
Resultado: emails diários automáticos com tempo.
Exercício 4 · n8n: Airtable → Slack notification
Workflow que dispara quando record é adicionado a Airtable e envia notificação ao Slack.
Resposta:
- Airtable Trigger node:
- Resource: Record.
- Event: When a record is created.
- Credentials: Airtable API key.
- Base ID + Table.
-
Polls every X minutes.
-
Slack node (ou Discord):
- Channel: #leads.
-
Text:
🆕 Novo record: {{$json.fields.Name}}. -
Activate.
Alternativa Airtable: usar automações nativas Airtable → trigger "When record created" → action "Run script" ou "Send Slack message" (paid plan).
Exercício 5 · Zapier alternativo
Equivalente do exercício 4 mas em Zapier (free tier). Configura zap entre Airtable e Gmail.
Resposta:
- zapier.com → sign up free.
- Create Zap.
- Trigger: Airtable → New Record in View → conectar conta → escolher base + table + view.
- Action: Gmail → Send Email →
- To: o teu email.
- Subject:
Novo lead. - Body:
Nome: {{name}}, Email: {{email}}.
Test → Publish.
Free tier: 100 tarefas/mês, 2-step zaps. Para produção: $20+/mês.
Comparação: - Zapier: mais fácil, UI mais polida, free tier muito limitado. - n8n: self-host gratuito, mais técnico, sem limites.
Exercício 6 · Bubble app + Stripe pagamento
Adiciona à app Bubble um botão "Comprar Premium €10". Integra Stripe (test mode) e demonstra pagamento de teste com cartão 4242 4242 4242 4242.
Resposta:
- Stripe: stripe.com → criar conta test mode.
-
Dashboard → Developers → API keys → copy test publishable + secret keys.
-
Bubble:
- Plugins → Add → Stripe (oficial).
-
Configurar com test keys.
-
Página:
- Adicionar Button "Comprar Premium - 10€".
-
Workflow no click:
- Plugins → Stripe → Charge user (sem subscription) ou redirect to Checkout.
- Amount: 1000 (cêntimos = 10€).
- Description: "Premium plan".
-
Test:
- Cartão: 4242 4242 4242 4242.
- Expiry: qualquer futura.
- CVC: qualquer 3 dígitos.
-
Pagamento processa em test mode.
-
Webhook (opcional):
- Stripe webhook URL apontar para Bubble API workflow.
- Quando "payment_intent.succeeded" → marcar utilizador como premium na BD.
Exercício 7 · Power Apps + SharePoint
Se tiveres conta Microsoft 365 (ou trial), cria Power App canvas conectada a SharePoint list (cria uma list "Tasks" com Title + Status). Auto-gera app com 3 screens (browse, detail, edit).
Resposta:
Sem M365: trial em powerapps.microsoft.com.
- SharePoint (sharepoint.com da tua tenant):
- Site → New list → "Tasks".
- Columns: Title (default), Status (Choice: Todo/Doing/Done).
-
Adicionar 3-5 records.
-
Power Apps (make.powerapps.com):
- Apps → New app → Canvas.
- Start from data → SharePoint → escolher list.
-
Auto-gera Browse/Detail/Edit screens.
-
Customizar visualmente.
-
Save → Publish → Share com colegas (mesma org).
-
App acessível no browser ou app móvel Power Apps.
Vantagem killer M365: SSO automático, permissões SharePoint herdadas.
Exercício 8 · Mini-projecto integração total
Constrói sistema completo com: - Airtable: BD de leads. - Bubble (ou Webflow): landing page com form que escreve para Airtable. - n8n / Zapier: workflow que ao novo lead → email de boas-vindas + notificação Slack.
Demonstra todo o fluxo end-to-end.
Resposta:
Stack:
-
Airtable "Leads": Nome, Email, Empresa, Mensagem, Data, Estado (New/Contacted/Won).
-
Bubble:
- Página index com hero + form (Nome, Email, Empresa, Mensagem).
- On submit:
- Opção A: API call directo a Airtable (POST /v0/BASE/Leads).
- Opção B: Bubble grava em Bubble DB; n8n vê por polling.
-
Show "Obrigado!" message.
-
n8n workflow:
- Trigger: Airtable trigger (poll cada 5 min) - new record.
- Action 1: SendGrid / SMTP → email de boas-vindas ao Lead.
- Subject: "Obrigado pelo contacto!"
- Body: HTML personalizado.
-
Action 2: Slack → mensagem no #sales.
- "🆕 Novo lead: {{name}} ({{empresa}}) — {{mensagem}}"
-
Test:
- Submeter form no Bubble.
- Verificar record entra em Airtable.
- Verificar email chega.
- Verificar mensagem no Slack.
Sistema completo (CRM + landing + automação) em 4-8 horas. Sem código tradicional.
Esta arquitectura é muito comum em startups early-stage e empresas pequenas sem dev dedicado.