/* global React, ReactDOM */ const { useState, useEffect } = React; const { Icon, useReveal, Navbar, Footer, useSiteTweaks, SiteTweaks } = window; const SERVICES = [ { n: "01", icon: "code", title: "Desarrollo a medida", desc: "Aplicaciones web, móviles y de escritorio diseñadas exactamente para tu operativa, sin compromisos con plantillas ni soluciones genéricas.", long: "Partimos de cómo trabaja realmente tu equipo, no de un catálogo de funciones cerrado. El resultado es una herramienta que encaja con tus procesos actuales — y que puede crecer contigo, en vez de obligarte a adaptar tu negocio al software.", items: ["Web apps & PWA", "Backends & APIs", "Apps móviles Android/iOS", "Integraciones ERP/CRM", "Paneles de administración a medida", "Automatización de procesos internos"], stack: ["Python", "TypeScript", "React / Next.js", "FastAPI", "PostgreSQL", "Kotlin"] }, { n: "02", icon: "cpu", title: "Automatización con IA", desc: "Agentes y flujos inteligentes que clasifican, redactan, procesan documentos y conversan con tus clientes.", long: "Aplicamos modelos de lenguaje donde de verdad aportan valor: tareas repetitivas que hoy consumen horas de tu equipo. No vendemos IA por moda — la integramos con tus sistemas actuales para que el resultado sea directamente utilizable, con supervisión humana donde hace falta.", items: ["Agentes conversacionales", "Procesado de documentos", "Workflows con LLMs", "Análisis predictivo", "Clasificación y extracción de datos", "Integración con tus sistemas existentes"], stack: ["Claude · GPT · Llama", "Python", "FastAPI", "PostgreSQL"] }, { n: "03", icon: "refresh", title: "Modernización de sistemas", desc: "Migramos software heredado a stacks modernos, mantenibles y conectados, sin parar tu negocio.", long: "Antes de tocar una línea de código, auditamos lo que ya tienes: qué funciona, qué es frágil y qué depende de una sola persona o de tecnología obsoleta. La migración se hace por fases, con el sistema antiguo siempre operativo hasta que el nuevo está validado.", items: ["Migración legacy", "Refactor & cloud", "Auditoría técnica", "Soporte continuo", "Documentación técnica", "Planes de migración por fases"], stack: ["Docker", "Azure / AWS", "PowerShell", "PostgreSQL"] } ]; const FAQ = [ { q: "¿Trabajáis con presupuesto cerrado?", a: "Sí. Tras la fase de Descubrimiento te entregamos una propuesta con alcance, plazos y precio cerrado — sin sorpresas en la factura." }, { q: "¿Puedo empezar con algo pequeño y crecer después?", a: "Sí, es habitual. Muchos proyectos arrancan como un MVP o una automatización puntual y se amplían según los resultados." }, { q: "¿Trabajáis con empresas fuera de España?", a: "Sí, trabajamos en remoto para toda la Unión Europea." }, { q: "¿Qué pasa si ya tengo un sistema antiguo en producción?", a: "Lo auditamos primero y migramos por fases, manteniendo tu sistema actual funcionando hasta que el nuevo esté validado." } ]; const ServiceBlock = ({ s }) => (
{s.n} / Servicio

{s.title}

{s.desc}

{s.long}

{s.items.map(i => (
{i}
))}
{s.stack.map(t => {t})}
); const FaqItem = ({ q, a }) => (
{q}

{a}

); const ServicesPage = () => { const [t, setTweak] = useSiteTweaks(); const [contactInfo, setContactInfo] = useState({}); useReveal(1); useEffect(() => { fetch("api/settings.php?action=get_public") .then(r => r.json()) .then(d => { if (d.ok && d.settings) setContactInfo(d.settings); }) .catch(() => {}); }, []); const onScroll = (id) => { if (id === "top") { window.scrollTo({ top: 0, behavior: "smooth" }); return; } window.location.href = `index.html#${id}`; }; return ( <> setTweak("theme", t.theme === "dark" ? "light" : "dark")} onScroll={onScroll}/>

Tres áreas, un único objetivo.

Tres líneas de trabajo y un único objetivo: que tu empresa funcione mejor con software hecho a su medida. Aquí tienes el detalle de cada una — qué incluye, cómo trabajamos y con qué tecnología.

{SERVICES.map(s => )}
Stack completo: Python· TypeScript· React / Next.js· FastAPI· PostgreSQL· Docker· Kotlin· PowerShell· Azure / AWS· Claude · GPT · Llama
Preguntas frecuentes

Lo que más nos preguntan.

{FAQ.map(f => )}
¿Cuál de estas áreas encaja con lo que necesitas?

Cuéntanos tu caso, una llamada inicial es gratuita y sin compromiso.

Hablemos