El stack con el que construimos, y para qué sirve cada parte
Cada tecnología aquí viene con una línea que dice dónde la usamos, porque un muro de logos no dice nada. Si falta algo de lo que dependes, pregúntanos. La lista de abajo es lo que aparece con suficiente frecuencia como para valer la pena escribirlo.
Principal
Lo usamos en nuestros propios productos y con clientes, todos los días.
Frecuente
Lo entregamos en proyectos de clientes cuando el trabajo lo pide.
Disponible
Lo tomamos, casi siempre para mantener o migrar algo que ya existe.
Móvil
Apps nativas y multiplataforma para iOS y Android.
Flutter
Nuestra opción por defecto multiplataforma. Una base de código, ambas tiendas.
React Native
Apps multiplataforma cuando el equipo ya trabaja en React.
Swift
iOS nativo cuando importan el rendimiento o el acceso profundo a la plataforma.
Kotlin
Android nativo, incluidas interfaces con Jetpack Compose.
iOS
Envío a la App Store, revisión y lanzamientos por etapas.
Android
Configuración de Play Console, canales de publicación y fragmentación de dispositivos.
Dart
El lenguaje detrás de nuestro trabajo en Flutter.
Expo
Entrega más rápida en React Native y actualizaciones over-the-air.
.NET MAUI
El sucesor con soporte de Xamarin para equipos .NET.
Ionic
Apps móviles con tecnología web cuando un equipo web ya mantiene el código.
Objective-C
Mantenimiento y migración de código iOS antiguo.
Front end web
Interfaces que siguen rápidas en dispositivos reales y legibles para los buscadores.
Next.js
Nuestro framework web por defecto. Este sitio funciona con él.
React
La capa de componentes debajo de casi todo lo que entregamos.
TypeScript
Tipos de punta a punta, para que un código grande siga siendo seguro de cambiar.
JavaScript
Donde no vale la pena un paso de compilación.
HTML5
Marcado semántico, que es sobre lo que descansa la accesibilidad.
CSS3
Maquetación moderna sin arrastrar un framework por costumbre.
Sass
En proyectos que ya lo tienen estandarizado.
Tailwind CSS
Estilos rápidos y consistentes cuando un equipo prefiere utilidades.
Vite
Herramientas de compilación para apps de una sola página tras un inicio de sesión.
Redux
Estado predecible en pantallas realmente complejas.
Angular
Mantener y ampliar front ends empresariales existentes.
Vue.js
Equipos que ya invirtieron en Vue.
Nuxt
Aplicaciones Vue renderizadas en servidor.
Svelte
Interfaces ligeras donde el tamaño del paquete es la restricción.
Astro
Sitios con mucho contenido que casi no deberían enviar JavaScript.
Webpack
Procesos de compilación heredados que aún requieren atención.
Back end y APIs
Los servicios detrás de la interfaz, y los lenguajes en que los escribimos.
Node.js
Un solo lenguaje entre la interfaz y la API.
Python
Trabajo con datos, automatización y servicios de IA.
Express
Servicios HTTP pequeños y directos.
NestJS
APIs estructuradas en TypeScript para equipos grandes.
FastAPI
Servicios Python tipados, sobre todo alrededor de modelos.
Django
Aplicaciones Python que necesitan un panel de administración de fábrica.
Flask
Servicios Python acotados y herramientas internas.
GraphQL
Cuando muchos clientes necesitan formas distintas de los mismos datos.
WebSockets
Tableros en vivo, chat y presencia.
PHP
Mantener y modernizar sistemas PHP existentes.
Laravel
Aplicaciones PHP con una estructura establecida.
Symfony
Código PHP empresarial.
.NET
Servicios en C#, a menudo junto a infraestructura Microsoft existente.
Spring
Servicios Java en entornos empresariales.
Go
Servicios pequeños y rápidos donde importa la concurrencia.
Rust
Componentes críticos en rendimiento.
Ruby on Rails
Heredar y mantener aplicaciones Rails.
Deno
Entornos edge y aislados.
Bun
Herramientas y runtimes de JavaScript más rápidos.
Datos y almacenamiento
Sistemas de registro, cachés, búsqueda y la capa que habla con ellos.
PostgreSQL
Nuestra base de datos por defecto, con seguridad a nivel de fila para aislar clientes.
Prisma
Acceso a datos tipado con migraciones revisables y reversibles.
SQLite
Almacenamiento embebido y en dispositivo, y cargas pequeñas en producción.
Firebase
Autenticación, push y sincronización en tiempo real en productos móviles.
MongoDB
Almacenamiento documental donde la forma varía de verdad.
MySQL
Sistemas existentes y la mayoría de plataformas con CMS.
Redis
Caché, límites de uso y colas de trabajo.
Supabase
Postgres con todo incluido, para arrancar rápido.
Elasticsearch
Búsqueda de texto completo en catálogos grandes.
Algolia
Búsqueda gestionada cuando lanzar rápido pesa más que el control.
Kafka
Streaming de eventos entre servicios a gran volumen.
RabbitMQ
Colas de mensajes y distribución de trabajos en segundo plano.
SQL Server
Plataformas de datos sobre stack Microsoft.
DynamoDB
Cargas clave-valor en AWS.
Nube, infraestructura y DevOps
Dónde corre el software, y cómo llega ahí sin dramas.
AWS
Hospedaje principal, más almacenamiento S3 y SES para correo transaccional.
Docker
Entornos idénticos desde una laptop hasta producción.
GitHub Actions
Compilar, probar y desplegar al fusionar. Nuestro propio CD corre sobre esto.
Nginx
Proxy inverso, terminación TLS y servido de estáticos.
Cloudflare
DNS, CDN, WAF y certificados de origen.
Ubuntu
El sistema operativo de servidor sobre el que desplegamos.
Git
Control de versiones en todo proyecto, en un repositorio tuyo.
Linux
Administración de servidores, endurecimiento y diagnóstico.
Vercel
Hospedaje gestionado para Next.js cuando un equipo no quiere operaciones.
Kubernetes
Orquestación donde la escala realmente lo justifica.
Terraform
Infraestructura como código, para que los entornos sean reproducibles.
Ansible
Gestión de configuración en conjuntos de servidores.
Google Cloud
Hospedaje y servicios gestionados en GCP.
Azure
Despliegues en la nube sobre stack Microsoft.
Jenkins
Procesos de CI existentes que heredamos y mantenemos.
GitLab
Repositorios y CI donde el cliente ya se estandarizó ahí.
Sentry
Seguimiento de errores, para enterarnos de fallos antes de que llame tu usuario.
IA y aprendizaje automático
Independiente del modelo a propósito, con evaluación y control de costos incluidos.
OpenAI API
Funciones de lenguaje detrás de una interfaz independiente del proveedor.
Anthropic Claude
Razonamiento con contexto largo y trabajo con documentos.
pgvector
Búsqueda vectorial dentro del Postgres que ya operas.
LangChain
Orquestar recuperación de información y uso de herramientas.
Hugging Face
Modelos abiertos, incluidos autoalojados cuando los datos no pueden salir.
PyTorch
Modelos propios y ajustados cuando de verdad se ganan su lugar.
TensorFlow
Procesos de aprendizaje automático existentes e inferencia en dispositivo.
OpenCV
Visión por computadora y procesamiento de imágenes.
pandas
Limpieza y análisis de datos, normalmente el trabajo real de un proyecto de IA.
NumPy
Trabajo numérico debajo del análisis.
Jupyter
Exploración y análisis compartido con tu equipo.
Pagos y servicios de plataforma
Los servicios de terceros de los que un producto real termina dependiendo.
Stripe
Suscripciones, prorrateo, reintentos y webhooks idempotentes.
Twilio
SMS, verificación telefónica y recordatorios.
Auth0
Identidad gestionada e inicio de sesión único cuando compras lo exige.
Mapbox
Mapas, geocodificación e interfaces de seguimiento en vivo.
LiveKit
Video en vivo y compartir pantalla. Nuestra función de reuniones funciona con esto.
WebRTC
Audio, video y datos entre pares.
CMS y comercio
Cuando una plataforma es la respuesta correcta y un desarrollo a la medida no.
WordPress
Sitios de contenido donde los editores deben trabajar sin nosotros.
Shopify
Tiendas, temas y aplicaciones a la medida.
WooCommerce
Comercio sobre una instalación WordPress existente.
Strapi
Contenido headless para una app y un sitio a la vez.
Sanity
Contenido estructurado con una buena experiencia de edición.
Contentful
CMS headless empresarial.
Drupal
Grandes conjuntos de contenido con permisos complejos.
Magento
Tiendas en Adobe Commerce.
Webflow
Sitios de marketing que el cliente quiere editar visualmente.
Squarespace
Sitios pequeños donde una plataforma le gana a un desarrollo.
Wix
Migraciones desde ahí, más seguido que hacia ahí.
Diseño y calidad
Cómo se diseña, y cómo sabemos que sigue funcionando.
Figma
Diseño, prototipos y entrega. Donde se decide la interfaz.
Framer
Estudios de movimiento y prototipos interactivos.
Sketch
Sistemas de diseño existentes que aún viven ahí.
Blender
3D y visuales de producto.
Jest
Pruebas unitarias sobre la lógica que dolería equivocar.
Cypress
Pruebas de extremo a extremo por la interfaz que el usuario realmente usa.
Selenium
Automatización de navegador en suites establecidas.
Storybook
Bibliotecas de componentes que el equipo del cliente puede explorar y reutilizar.
Preguntas sobre nuestro stack
¿Y si la tecnología que usamos no está en la lista?
Pregúntanos. La lista es lo que aparece con suficiente frecuencia como para escribirlo, no un límite. La mayoría de los stacks son variaciones sobre las mismas pocas ideas, y un equipo que conoce bien una base de datos relacional o un framework de componentes rara vez queda indefenso frente a otro. Cuando algo sí queda fuera de lo que podemos sostener con responsabilidad, te lo decimos en la primera llamada y no lo descubrimos con tu presupuesto.
¿Tenemos que usar el stack que ustedes prefieren?
No. Si ya tienes equipo, código existente o un estándar de empresa, la tecnología correcta suele ser la que tu gente pueda mantener cuando nosotros ya no estemos. Diremos cuándo creemos que una elección te va a costar más adelante, y luego construiremos con lo que elijas. La excepción es una decisión que sea genuinamente insegura y no simplemente distinta, y eso es lo bastante raro como para discutirlo en serio cuando pasa.
¿Cómo eligen con qué construir algo?
Partiendo de las restricciones y no de las preferencias. Quién lo mantiene después del lanzamiento, qué tan fácil es contratar para eso, si el trabajo es sobre todo de interfaz o sobre todo de datos, si algo funciona lejos de una red, y cuánto tiempo tiene que seguir funcionando. Esas respuestas normalmente lo reducen a dos opciones razonables, y en ese punto la diferencia entre ellas importa mucho menos que elegir una y ser consistente.
¿Qué significan principal, frecuente y disponible?
Registran cuánto de nuestro propio trabajo se apoya en cada tecnología, para que la amplitud nunca se confunda con profundidad pareja. Principal es lo que usamos a diario en nuestros productos y con clientes. Frecuente es lo que entregamos en proyectos cuando el trabajo lo pide. Disponible es trabajo que tomamos, casi siempre para mantener o migrar algo que ya existe. Las tres son reales. No son igual de profundas, y preferimos decirlo antes que insinuar lo contrario con cien logos.
Parte de nuestro stack es viejo. ¿Eso es un problema?
Depende de si es viejo o si está sin soporte, que son cosas distintas. Maduro y estable normalmente es bueno. Pasado su fin de vida es otra cosa: significa que los parches de seguridad se detuvieron, que las tiendas pueden terminar rechazando la aplicación y que cada año hay menos gente dispuesta a trabajar en ello. Si no sabes de qué lado estás, eso es justo lo que responde una auditoría de software.
¿Pueden trabajar junto a nuestros desarrolladores?
Muchas veces es el mejor arreglo. Podemos tomar un subsistema mientras tu equipo lleva el resto, acompañarlos en una parte del stack que no dominan, o construir algo y entregarlo para que ellos lo administren. Escribimos el código, la documentación y el proceso de despliegue asumiendo esa entrega, porque un software que tu propio equipo no puede mantener es un riesgo por bien que funcione hoy.
La lista importa menos que la elección
Cualquier agencia puede publicar cien logos. Lo que decide si tu proyecto sale bien es elegir el puñado correcto para tu problema y ser honesto sobre las concesiones, incluso cuando la respuesta es una plataforma que puedes comprar en vez de cualquier cosa de esta página. Esa conversación es gratis, y te damos una recomendación directa aunque nos cueste el trabajo.
Construyamos algo que valga la pena lanzar
Cuéntanos tu idea. Con un historial de proyectos exitosos y un compromiso real con la satisfacción del cliente, te ayudamos a darle vida a tu producto.