Documentación
Los 85 documentos Markdown del repositorio, publicados como páginas HTML.
Ningún enlace de este sitio devuelve un .md: cada referencia entre
documentos se reescribe a su página equivalente al generar el sitio.
Empezar
Del clon al primer caso levantado.
- 🚀 Social Bot Scheduler
README.mdLaboratorio de integración industrial multi-lenguaje y multi-servicio. El Social Bot Scheduler actúa como una Matriz Tecnológica donde n8n orquesta la comuni… - 📦 Guía de Instalación — Social Bot Scheduler
docs/INSTALL.mdEsta guía describe el despliegue del laboratorio en sus diferentes modalidades. El sistema está diseñado para ser Local-First y Secure-by-Default. - 💻 Requisitos del Sistema — Social Bot Scheduler
docs/REQUIREMENTS.mdEste documento detalla las especificaciones mínimas y recomendadas de hardware y software para garantizar la ejecución fluida del laboratorio políglota. - 🎓 Manual Paso a Paso: Guía de Instalación y Ejecución
docs/BEGINNERS_GUIDE.mdEste documento está diseñado para llevarte de cero a operativo en el universo de Social Bot Scheduler. No asume conocimientos previos. - 📖 Manual de Usuario
docs/USER_MANUAL.mdEl Social Bot Scheduler lee las publicaciones desde un archivo JSON local. Esta guía explica cómo gestionar ese contenido. - 🚀 HUB Maestro de Orquestación
docs/HUB.mdEl Social Bot Scheduler incluye dos capas de control complementarias: - 🔧 Guía de Solución de Problemas (Troubleshooting)
docs/TROUBLESHOOTING.mdSi encuentras dificultades al orquestar los contenedores o ejecutar los bots políglotas, consulta esta guía técnica. Hemos consolidado las soluciones a los p…
Arquitectura y contratos
Cómo está hecho y qué promete cada pieza.
- 🏗️ Arquitectura del Social Bot Scheduler
docs/ARCHITECTURE.mdEl Social Bot Scheduler ha evolucionado hacia una infraestructura de Matriz Tecnológica. No es un solo producto, sino un ecosistema modular donde puedes inte… - 🔌 Referencia de API (Webhook) — Contract Documentation
docs/API.mdEsta guía documenta el contrato de comunicación asíncrona entre los motores de origen (bots políglotas) y el orquestador central (n8n). El cumplimiento de es… - Indice de la Matriz Tecnologica
docs/CASES_INDEX.mdDescubre por que hemos elegido estas combinaciones y que beneficios aporta cada una a tu flujo de trabajo. - 📜 Catálogo de Funcionalidades
docs/SYSTEMS_CATALOG.mdEste documento detalla todas las capacidades actuales del bot y su impacto técnico. - 🔌 Asignación de Puertos — Regla Canónica
docs/PORTS.mdEste documento es el single source of truth de los puertos del laboratorio. La regla es una fórmula determinista + un validador en CI que hace imposible que … - 🗺️ Mapa Completo del Sistema — Archivo por Archivo
docs/FILE_MAP.mdCada caso sigue la misma estructura de 3 carpetas: - ☁️ Migración a AWS — Social Bot Scheduler
docs/AWS_MIGRATION.md- 🎯 Objetivos de la Migración - 🧭 Estado Actual vs. Estado Objetivo - 🏛️ Estrategias de Migración (6 R's) - 🧩 Servicios AWS Candidatos - 🏗️ Arquitecturas de …
Resiliencia y verificación
Lo que evita que un caso se rompa en silencio.
- 🛡️ n8n Guardrails: Resiliencia y Seguridad
docs/GUARDRAILS.mdEsta guía detalla los Guardrails (mecanismos de protección) implementados en la capa del Bridge (n8n). Estos patrones aseguran que el ecosistema sea resisten… - 🛡️ Guía Completa de Resiliencia
docs/RESILIENCE_GUIDE.mdEsta guía detalla la implementación completa de resiliencia en el Social Bot Scheduler. - 🚦 Guía de Verificación — Social Bot Scheduler
docs/VERIFICATION_GUIDE.mdEsta guía detalla los procedimientos para validar la integridad, seguridad y funcionalidad del laboratorio tras cualquier cambio en el entorno de runtime. - 🏥 Diagnóstico del HUB (Comando Doctor)
docs/HEALTH_CHECK.mdLa herramienta hub.py incluye un comando doctor diseñado para verificar la salud del sistema y asegurar que todos los componentes necesarios estén operativos. - 🔍 Auditoría Docker end-to-end — v4.9.0
docs/AUDIT_v4.9.0.mdCada caso se probó con su contrato REST homogéneo (/health, /webhook, /logs, /errors, /) y con confirmación directa en el motor: - 📊 Reporte de Recursos Docker
docs/DOCKER_REPORT.mdEste documento detalla el estado actual y el uso de disco de los procesos, imágenes y volúmenes de Docker en el entorno de desarrollo. - 🐳 Análisis de Recursos Docker (Total vs. Actual)
docs/DOCKER_RESOURCES.mdEste documento detalla el consumo de recursos (Disco y RAM) del proyecto Social Bot Scheduler. Se ha ajustado para reflejar la diferencia entre el estado ac… - ⚠️ Limitaciones y Consideraciones Técnicas
docs/LIMITATIONS.mdEste proyecto es un laboratorio de ingeniería y, como tal, tiene ciertas decisiones de diseño (trade-offs) que debes conocer.
Seguridad y cumplimiento
Modelo de amenaza, aislamiento y límites de uso.
- Security Policy — Social Bot Scheduler
SECURITY.mdEste repositorio es un laboratorio de ingeniería políglota. La postura de seguridad se enfoca en reducir el riesgo operativo mediante Hardening por Defecto y… - 🛡️ Runtime Security Model — Social Bot Scheduler
docs/RUNTIME_SECURITY.mdEsta guía documenta el modelo operativo y de seguridad aplicado al ecosistema de Social Bot Scheduler. Nuestro objetivo es mantener un equilibrio entre el va… - ⚖️ Cumplimiento y Ética
docs/COMPLIANCE.md- APIs Oficiales: Utilizar únicamente métodos de acceso públicos y documentados por las plataformas de destino. - Respeto a Límites (Rate Limiting): El siste… - Guardrails Anti-Abuso (killed.md)
killed.mdEste documento detalla las medidas de seguridad y límites implementados para prevenir el abuso y garantizar la estabilidad del sistema.
Proyecto
Historia, plan y cómo participar.
- 📜 Changelog — Social Bot Scheduler
CHANGELOG.mdTodos los cambios notables en este proyecto se documentan sistemáticamente en este archivo. Seguimos los principios de Keep a Changelog y el versionado semán… - 🛣️ Roadmap — Social Bot Scheduler
ROADMAP.mdEste documento describe la evolución técnica y los objetivos estratégicos del proyecto. Seguimos un enfoque de mejora continua en seguridad y observabilidad. - 🚧 Casos Planificados (v5.0+)
docs/PLANNED_CASES.mdLos casos 01–18 y 20 están plenamente operativos (todos menos el 19) — ver CASESINDEX.md. El único caso reservado como roadmap arquitectónico que no se levan… - 🤝 Guía de Contribución
CONTRIBUTING.md¡Gracias por tu interés en fortalecer el Social Bot Scheduler! Este proyecto es un laboratorio de ingeniería y agradecemos cualquier mejora que ayude a la co… - 📜 Código de Conducta
CODE_OF_CONDUCT.mdEn el interés de fomentar un entorno abierto, técnico y acogedor, nosotros como contribuyentes y administradores nos comprometemos a hacer de la participació… - 🧑💻 Guía de Mantenedores
docs/MAINTAINERS.mdInformación crítica para el mantenimiento y evolución del Social Bot Scheduler. - 💡 Visión y Desafíos Técnicos — Social Bot Scheduler
docs/INSIGHTS.mdEste documento detalla la filosofía de ingeniería detrás del proyecto y el valor estratégico que aporta como laboratorio de experimentación políglota. - 👔 Guía para Reclutadores Técnicos — Perfil de Ingeniería
docs/RECRUITER.mdSocial Bot Scheduler es un laboratorio de ingeniería de software que demuestra interoperabilidad multi-lenguaje y persistencia políglota a escala industrial. - 🚀 Construí un Ecosistema con 19 Lenguajes, 18 Bases de Datos y 11 Patrones Arquitectónicos. Esto es lo que aprendí.
articulo/LINKEDIN_ARTICLE.mdEn el mundo real, los sistemas no hablan un solo idioma. 🌐
Workflows de n8n
Importar, activar y mantener los workflows del puente.
- n8n Auto-Configuration
n8n/README.mdEsta carpeta contiene la configuracion necesaria para que n8n se auto-configure al arrancar con Docker Compose. - 📥 Guía de Importación Manual (n8n v2.7+)
IMPORT_WORKFLOWS.mdDebido a los recientes cambios en la API de n8n, la importación automática de flujos puede requerir una intervención manual de 2 minutos. Esta guía es el "Fa… - 🔧 Activación de Workflows en n8n — Guía Maestro
COMO_ACTIVAR_WORKFLOWS.mdEsta guía detalla el proceso de activación manual de los flujos de orquestación en el núcleo de n8n. Sigue estos pasos para poner en marcha la inteligencia d… - 🛡️ Guardrails Implementados
docs/templates/guardrails_section.mdEste caso incluye mecanismos de resiliencia en la capa de n8n:
Wiki
Las páginas que se sincronizan con la wiki de GitHub.
- 🏠 Wiki del Social Bot Scheduler
docs/wiki/Home.mdBienvenidos al centro de conocimiento del Social Bot Scheduler. Este laboratorio de ingeniería políglota está diseñado para demostrar la integración masiva d… - 🧩 Índice de la Matriz Tecnológica
docs/wiki/Cases-Index.mdBienvenidos a la cartografía del Social Bot Scheduler. Este laboratorio se compone de 19 ejes de integración implementados y 1 caso planificado adicional (ve… - 📖 Guía de Operación y Uso — Social Bot Scheduler
docs/wiki/Usage-Guide.mdEsta guía proporciona las instrucciones operativas para interactuar con el laboratorio de ingeniería, desde la ejecución de bots individuales hasta la orques… - 🛡️ Guía Maestra de Resiliencia Industrial
docs/wiki/Resilience.mdEsta guía detalla la implementación de los mecanismos de defensa y recuperación post-fallo integrados en la matriz del Social Bot Scheduler. Nuestra arquitec… - 🛡️ Hardening de Seguridad — Social Bot Scheduler
docs/wiki/Security-Hardening.mdEsta guía documenta los estándares de endurecimiento (Hardening) aplicados al laboratorio para garantizar un entorno de ejecución industrial, resiliente y li…
Documentación por caso
41 documentos, entre guías y fichas de arquitectura, uno por carpeta de caso.
- 📐 Arquitectura — Caso 01: 🐍 Python → 🌉 n8n → 🐘 PHP
cases/01-python-to-php/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - Prueba de Idempotencia - Caso 01
cases/01-python-to-php/IDEMPOTENCY_TEST.mdArchivo: cases/01-python-to-php/n8n/processedfingerprints.json json { "test-idempotency-001twitter": "2026-02-11T13:00:00.123456" } → Fingerprint registra… - 🧩 Caso 01: 🐍 Python -> 🌉 n8n -> 🐘 PHP
cases/01-python-to-php/README.mdEste eje tecnológico demuestra la integración fluida entre un script de automatización moderno en Python y un receptor web tradicional en PHP, orquestados po… - 📐 Arquitectura — Caso 02: 🐍 Python → 🌉 n8n → 🐹 Go
cases/02-python-to-go/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 02: 🐍 Python -> 🌉 n8n -> 🐹 Go
cases/02-python-to-go/README.mdEste eje tecnológico integra la versatilidad de Python para el scripting de automatización con la extrema eficiencia de un receptor compilado en Go, enfocado… - 📐 Arquitectura — Caso 03: 🐹 Go → 🌉 n8n → 🟢 Node.js
cases/03-go-to-node/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 03: 🐹 Go -> 🌉 n8n -> 🟢 Node.js
cases/03-go-to-node/README.mdEste eje tecnológico muestra la potencia de un emisor concurrente escrito en Go comunicándose con un ecosistema flexible y asíncrono basado en Node.js (Expre… - 📐 Arquitectura — Caso 04: 🟢 Node.js → 🌉 n8n → ⚡ FastAPI
cases/04-node-to-fastapi/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 04: 🟢 Node.js -> 🌉 n8n -> ⚡ FastAPI
cases/04-node-to-fastapi/README.mdEste eje tecnológico muestra la integración entre un ecosistema de JavaScript asíncrono y un servidor de alto rendimiento en Python utilizando FastAPI. - 📐 Arquitectura — Caso 05: 🎼 Laravel → 🌉 n8n → ⚛️ React
cases/05-laravel-to-react/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 05: 🐘 Laravel -> 🌉 n8n -> ⚛️ React
cases/05-laravel-to-react/README.mdEste eje tecnológico demuestra la convergencia entre el backend empresarial tradicional (Laravel) y el desarrollo de interfaces de usuario modernas y reactiv… - 📐 Arquitectura — Caso 06: 🐹 Go → 🌉 n8n → 🎵 Symfony
cases/06-go-to-symfony/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 06: 🐹 Go -> 🌉 n8n -> 🎼 Symfony
cases/06-go-to-symfony/README.mdEste eje tecnológico muestra la integración entre un emisor de alta velocidad en Go y un potente backend empresarial basado en Symfony, utilizando Redis como… - 📐 Arquitectura — Caso 07: 🦀 Rust → 🌉 n8n → 💎 Ruby
cases/07-rust-to-ruby/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 07: 🦀 Rust -> 🌉 n8n -> 💎 Ruby
cases/07-rust-to-ruby/README.mdEste eje tecnológico combina la robustez y el rendimiento de Rust con la elegancia sintáctica de Ruby, integrando un emisor fuertemente tipado con un recepto… - 📐 Arquitectura — Caso 08: 🟣 C# (.NET) → 🌉 n8n → 🌶️ Flask
cases/08-csharp-to-flask/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 08: 🔷 C# (.NET) -> 🌉 n8n -> 🌶️ Flask
cases/08-csharp-to-flask/README.mdEste eje tecnológico integra la robustez del ecosistema empresarial de Microsoft .NET con la agilidad y ligereza de un receptor basado en Python/Flask. - 📐 Arquitectura — Caso 09: 🐍 Python → 🌉 n8n → ⚡ FastAPI Gateway
cases/09-python-to-gateway/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia (fingerprint)"} IDEM -->|duplicado| DISCARD["200 OK - desc… - 🧩 Caso 09: 🐍 Python -> 🌉 n8n -> ⚡ FastAPI Gateway
cases/09-python-to-gateway/README.mdEste eje tecnológico representa la cúspide de la integración del laboratorio: un emisor en Python publica hacia n8n, el cual aplica guardrails avanzados y re… - 📐 Arquitectura — Caso 10: ☕ Java (Spring Boot) → 🌉 n8n → 🟣 Kotlin (Ktor) + PostgreSQL
cases/10-java-to-kotlin/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 10: ☕ Java (Spring Boot) → 🌉 n8n → 🟣 Kotlin (Ktor) + PostgreSQL
cases/10-java-to-kotlin/README.mdCobertura del ecosistema JVM — el hueco más grande de la matriz original. Contrasta el stack enterprise bloqueante (Spring Boot MVC) con el moderno no-bloque… - 📐 Arquitectura — Caso 11: 💧 Elixir → 🌉 n8n → 🔴 Erlang (Cowboy) + Mnesia
cases/11-elixir-to-erlang/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> CB{"Circuit breaker"} CB -->|abierto| STOP["Descarta"] CB -->|cerrado… - 🧩 Caso 11: 💧 Elixir → 🌉 n8n → 🔴 Erlang (Cowboy) + Mnesia
cases/11-elixir-to-erlang/README.mdDemuestra el modelo de concurrencia por actores sobre la BEAM VM — un paradigma que ningún caso 01–09 cubre. Emisor Elixir y receptor Erlang/Cowboy con persi… - 📐 Arquitectura — Caso 12: 🧠 Python (LLM) → 🌉 n8n → ⚡ FastAPI RAG + pgvector
cases/12-python-to-rag/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 12: 🧠 Python (LLM) → 🌉 n8n → ⚡ FastAPI RAG + pgvector
cases/12-python-to-rag/README.mdPipeline RAG (Retrieval-Augmented Generation) a nivel de infraestructura: cada post se convierte en un embedding y se indexa en pgvector; el endpoint /search… - 📐 Arquitectura — Caso 13: 🟢 Node+Kafka → 🌉 n8n → 🐹 Go → 📊 ClickHouse
cases/13-node-to-go-kafka/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 13: 🟢 Node.js + Kafka → 🌉 n8n → 🐹 Go consumer → 📊 ClickHouse
cases/13-node-to-go-kafka/README.mdEvent streaming real con Kafka (modo KRaft, sin Zookeeper) y sink columnar ClickHouse. Patrón CQRS: los posts entran como eventos a un topic y un consumer Go… - 📐 Arquitectura — Caso 14: ▲ Next.js → 🌉 n8n → ⚡ Supabase (Postgres + RLS)
cases/14-nextjs-to-supabase/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 14: ▲ Next.js 15 → 🌉 n8n → ⚡ Supabase (Postgres + RLS)
cases/14-nextjs-to-supabase/README.mdPrimer caso BaaS de la matriz. Reproduce el núcleo de Supabase — Postgres + PostgREST + Row Level Security (RLS) — sin la suite completa: Next.js emite y el … - 📐 Arquitectura — Caso 15: 🐹 Go (gRPC) → 🌉 n8n → 🐍 Python (gRPC) + CockroachDB
cases/15-grpc-go-to-python/ARCHITECTURE.mdsubgraph DEST["DESTINO - Python (cliente gRPC)"] FWD --> PY["main.py (FastAPI)"] PY -->|gRPC Publish| GO["server.go (gRPC)"] GO --> D… - 🧩 Caso 15: 🐹 Go (gRPC server) → 🌉 n8n → 🐍 Python (gRPC client) + CockroachDB
cases/15-grpc-go-to-python/README.mdProtocolo binario gRPC entre un servidor Go y un cliente Python, con persistencia en CockroachDB (SQL distribuido con consenso Raft, wire-compatible con Post… - 📐 Arquitectura — Caso 16: 🚀 Apollo GraphQL → 🌉 n8n → 🟦 Hasura → 📈 TimescaleDB
cases/16-graphql-to-hasura/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> CB{"Circuit breaker"} CB -->|abierto| STOP["Descarta"] CB -->|cerrado… - 🧩 Caso 16: 🚀 Apollo GraphQL → 🌉 n8n → 🟦 Hasura → 📈 TimescaleDB
cases/16-graphql-to-hasura/README.mdDemuestra dos enfoques GraphQL contrastados en un mismo flujo: schema-first (Apollo Server, resolvers escritos a mano) en el origen vs DB-first (Hasura auto-… - 📐 Arquitectura — Caso 17: 🦀 Rust (MQTT) → 🌉 n8n → 🟢 Node → 📊 InfluxDB
cases/17-mqtt-rust-to-node/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 17: 🦀 Rust (MQTT) → 🌉 n8n → 🟢 Node (subscriber) → 📊 InfluxDB
cases/17-mqtt-rust-to-node/README.mdPatrón pub/sub IoT: un emisor Rust publica en un broker Mosquitto (MQTT) y un subscriber Node persiste en InfluxDB (series temporales). Mosquitto actúa como … - 📐 Arquitectura — Caso 18: ⚡ Zig → 🌉 n8n → 💎 Crystal (Kemal) + Neo4j
cases/18-zig-to-crystal/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 18: ⚡ Zig → 🌉 n8n → 💎 Crystal (Kemal) + Neo4j
cases/18-zig-to-crystal/README.mdCobertura de lenguajes emergentes: Zig (lenguaje de sistemas sin recolector de basura) como emisor y Crystal (sintaxis tipo Ruby, rendimiento compilado LLVM)… - 📐 Arquitectura — Caso 19: #️⃣ F# (.NET) → 🌉 n8n → 🍀 Clojure (Ring) + XTDB
cases/19-fsharp-to-clojure/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 19: #️⃣ F# (.NET) → 🌉 n8n → 🍀 Clojure (Ring) + XTDB
cases/19-fsharp-to-clojure/README.mdParadigma funcional puro multi-runtime: emisor F (.NET, funcional-first) y receptor Clojure (Lisp sobre la JVM) con Ring, persistiendo en XTDB — una base de … - 📐 Arquitectura — Caso 20: 🍎 Swift → 🌉 n8n → 🎯 Dart (Shelf) + 🔥 Firestore emulator
cases/20-swift-to-dart/ARCHITECTURE.mdsubgraph BRIDGE["PUENTE - n8n + Guardrails"] C(["Webhook"]) --> IDEM{"Idempotencia + circuit breaker"} IDEM -->|nuevo| FWD["HTTP forward + re… - 🧩 Caso 20: 🍎 Swift → 🌉 n8n → 🎯 Dart (Shelf) + 🔥 Firestore emulator
cases/20-swift-to-dart/README.mdStack mobile-backend con lenguajes server-side: emisor Swift (en Linux) y receptor Dart con Shelf, persistiendo en el emulador de Firestore de la Firebase Em…