Cuando se empieza en el desarollo de aplicaciones web o movil, se puede llegar a creer que todo un proyecto tiene que ser creado desde cero, es decir desarrollas tu API de Backend, administras la base de datos, y creas tu frontend o app movil; que suena simple, pero de hecho hay mucho mas que se debe tener en cuenta al momento de crear un proyecto como subida de archivos, migraciones de base de datos, validaciones, metodos de pagos, y sumados a que tienes que ofrece un buen diseño de interfaces (UI) y una buena experiencia de Usuario (UX), esto parece mucho más trabajo. Y si sumamos a que aparte de desarrollar el codigo tienes que crear el contenido, el producto o servicio, y ocuparte de hacerlo conocido, esto se vuelve mucho más dificil aun.
Es por esto que los Content Management Systems o abrevido CMS, y en español Sistemas Administradores de contenido, son muy usados en la web, porque permite a muchas personas tener una web creada muy rapidamente y enfocarse en ofrecer un servicio, vender productos o tener una idea llevada a cabo muy rapidamente, siendo el CMS mas conocido Wordpress, que tipicamente se usa para crear blogs, tiendas virtuales y proyectos similares, aunque no es el unico, de hecho hay una lista mas extensa donde se pueden encontrar a:
- WordPress
- Drupal
- Joomla!
- Magento
- Shopify
- Squarespace
- Wix
- Weebly
- PrestaShop
- TYPO3
- Umbraco
- Craft CMS
- ExpressionEngine
- Silverstripe CMS
- Bolt CMS
Aunque esto es solo usado para un Algunos tipos de proyectos muy especificos, porque a medida que este tipo de aplicaciones van creciendo se nota mucho mas la carga que da un CMS. Y es que el ofrecer tanto el backend como el Frontend en un mismo paquete se nota sus limitaciones a mas funcionalidades quieras ofrecer, es por esto que a pesar que los CMS lleven existiendo muchos años, muchos proyectos serios aun se desarrollan desde cero, con el fin de tener mas control, mas personalizacion o la posiblidad de tener solo el codigo que es necesario, de hecho las interfaces que muchos CMS ofrecen tienden a ser algo lentas, sobrecargadas y llevan codigo que dificilmente es optimizable debido a que forman parte del funcionamiento interno del CMS.
Entonces esto nos deja al final con 2 opciones muy comunes:
- desarrollar proyecto desde cero
- usar una solucion como un CMS.
Pero que tal si no nos vamos a los extremos y usamos un termino intermedio, es decir que tal si usamos un CMS, para manejar toda la logica del backend, como la autenticacion, la subida de archivos, la conexion a la base de datos, la administracion del usuario y demas, pero el frontend lo desarrollamos nosotros mismos, quizas usando algun Framework de Frontend (como React, Vue, Angular o Svelte), para que este ofrezca una experiencia de usuario rapida, sea mas interactivo y facil de mantener.
Haciendo que tengamos un proyecto Backend y Frontend, pero el backend ya estaria creado casi en su mayoria. Bueno, esta es la idea de los Headless CMS.
¿Qué es un Headless CMS?
Piensa los Headless CMS como solo el panel de administracion de una web, es decir solo tienes las interfaces para administrar tu sitio que te permiten desde crear el contenido, crear usuarios, y demas, pero falta la parte frontal que usaran tus usuarios. Esto te da la libertad de usar tu propio frontend, y el backend ya proporciona autenticacion de usuarios, subida de archivos, creacion de tablas usando interfaces, administracion del contenido, y mucho mas.
Y esto en la practica es posible porque tu Backend permite comunicarse con aplicaciones cliente (web, movil, desktop) a través de una API (API REST o GraphQL), separando completamente el back (gestión de contenidos) del front (presentación y diseño). Y al no estar este ultimo vinculado a una tecnología de frontend específica, un Headless CMS permite a los desarrolladores utilizar cualquier framework de javascript de frontend (React, Vue, Angular) que prefieran para construir la interfaz de usuario y consumir el contenido proporcionado por el CMS.
O incluso puedes tener multiples aplicaciones cliente, como tener una aplicacion web y una aplicacion movil, ya que el backend esta diseñado para comunicarse con cualquier tipo de aplicacion.
Ahora ¿que tan dificil es usar un Headless CMS?.
¿Es difícil usar un Headless CMS?
El nivel de dificultad para usar un Headless CMS varía según la plataforma, el proyecto que usemos, o si ya se tienes experiencia de haber usado algun CMS antes, o si ya has desarrollado aplicaciones web antes, pero por lo general, los Headless CMS están diseñados para ser fáciles de usar y accesibles para los desarrolladores y los usuarios no técnicos, asi que ;a mayoría de los Headless CMS cuentan con una interfaz de usuario (UI) intuitiva para administrar y organizar el contenido, y ofrecen documentación detallada y ejemplos para ayudarte a instalar, usar y configurarlos facilmente.
¿Qué Headless CMS debería considerar aprender?
Y debido que cada Headless CMS es desarrollado con distintos lenguajes y funcionalides, hay varios actualmnete, pero que basicamente ofrecen lo mismo, entre estos tenemos:
Hay varios Headless CMS populares en el mercado que podrías considerar aprender. Algunos de los más conocidos y ampliamente utilizados son:
- Contentful: Headless CMS basado en la nube que ofrece una API RESTful y GraphQL.
- Strapi: Headless CMS de código abierto y autoalojado basado en Node.js, altamente personalizable y extensible gracias a su arquitectura de plugins. Aunque tambien puedes crearte una cuenta en Strapi Cloud y pagar mensualmente por su uso.
- Sanity: Plataforma de contenidos en tiempo real con una API flexible y potente.
- Ghost: Headless CMS de código abierto orientado a la creación de blogs y publicaciones, con API RESTful y una amplia gama de integraciones.
- Prismic: Headless CMS basado en la nube con una interfaz de edición intuitiva y soporte para múltiples idiomas, que facilita la creación de sitios web y aplicaciones multilingües.
- https://decapcms.org/: antes llamado Netlify CMS, un proyecto de código abierto basado en Git, y contenido estatico que permite crear un panel administrador a tus sitios estaticos de proyectos como Hugo, Nextjs, Gatsby, entre otros.
- DatoCMS: Headless CMS basado en la nube con una API GraphQL, que ofrece optimización de imágenes y video, así como una interfaz fácil de usar para editar y administrar contenidos.
- Storyblok: Headless CMS con un editor visual y componentes reutilizables, que permite a los desarrolladores y editores colaborar en tiempo real para crear experiencias digitales rápidas.
Casi todos estos ofrecen planes gratuitos, o son gratuitos totalmente, o tienen alguna version comunitaria que permite que puedas tener varias formas de descargarlos e instalarlos tu mismo en produccion. De hecho hablando de esto de desplegarlo, hay varias formas de desplegar un Headless CMS.
¿Cómo se despliegan los Headless CMS?
Existen diferentes métodos para desplegar un Headless CMS, y estos pueden variar según el CMS específico y las preferencias del usuario. Pero comunmente tenemos estas dos opciones:
- Despligue basada en la nube (SaaS): Algunos Headless CMS, como Contentful, Prismic, Sanity o Strapi, se ofrecen como Software as a Service (SaaS). Es decir, tienen una plataforma web donde te puedes registrar y ya tienes el Headless CMS subido y configurado, y el servicio se encarga que se encarga del alojamiento, mantenimiento y escalabilidad de tu proyecto. Asi que solo empiezas a crear tu contenido y a pagar mensualmente por su uso, evitandote todo el trabajo pesado, aunque esto por lo general es mas caro inicialmente que desplegarlo uno mismo.
- Despligue autoalojado: Algunos Headless CMS, como Strapi y Ghost, permiten ser descargados y desplegados en tu propio servidor o eb tu propio servicios de alojamiento en la nube como AWS, DigitalOcean, Heroku, Google Cloud, o similares. Esto ofrece mayor control y flexibilidad en términos de configuración, pero también implica una mayor responsabilidad en cuanto a la administración y mantenimiento del servidor. Ademas que para desplegar un proyecto en estos CMS, los usuarios deben tener algo de conocimiento tecnico para poder instalar y configurar el software en su servidor, y luego conectar su aplicación de frontend al CMS a través de las API proporcionadas.
Por supuesto la elección del método de implementación adecuado dependerá de las necesidades y preferencias de tu proyecto, si no sabes mucho y quieres enfocarte en ofrecer tu producto o servicio lo mas rapido, paga el SaaS, sino tienes prisa y tienes experiencia configurando servidores, usa el despliegue autoalojado.
¿Qué proyectos puedo crear usando un Headless CMS?
Ok, entonces con esto ya entendemos que es un Headless CMS, pero que tipo de proyectos podriamos crear usandolo, bueno entre algunos de estos podemos encontrar a
- Sitios web y blogs: Puedes utilizar un Headless CMS para administrar y entregar contenido para sitios web y blogs en diferentes tecnologías de frontend, como React, Angular o Vue.js.
- Aplicaciones móviles: Un Headless CMS puede servir contenido a aplicaciones móviles nativas o híbridas en múltiples plataformas, como iOS, Android o incluso aplicaciones multiplataforma como React Native o Flutter.
- eCommerce: Un Headless CMS puede utilizarse para gestionar y entregar información de productos, promociones y contenido relacionado en tiendas en línea y aplicaciones de comercio electrónico.
- Plataformas de aprendizaje en línea: Puedes utilizar un Headless CMS para gestionar y entregar contenido educativo, como cursos, lecciones, videos y cuestionarios, en plataformas de aprendizaje en línea y aplicaciones de eLearning.
- Sitios web multilingües: Un Headless CMS puede facilitar la gestión y entrega de contenido en varios idiomas, lo que permite crear sitios web y aplicaciones multilingües y dirigirse a audiencias globales.
- Aplicaciones y dispositivos IoT: Un Headless CMS puede servir contenido a dispositivos y aplicaciones de Internet de las cosas (IoT), como asistentes de voz, dispositivos de domótica o pantallas inteligentes.
- Plataformas de marketing y publicidad: Puedes utilizar un Headless CMS para gestionar y entregar contenido de marketing y publicidad, como anuncios, boletines informativos, banners y campañas de correo electrónico.
- Intranets y portales corporativos: Un Headless CMS puede ser útil para gestionar y entregar contenido en intranets, portales corporativos y aplicaciones internas en las organizaciones.
Y por darles tan solo una idea, porque practicamente pueden crear todo tipo de aplicaciones comunes usandolo, y bueno digo esto porque si estas creando un algoritmo personalizado o quieres usar una tecnologia muy novedosa, entonces alli si necesitarias desarrollarlo desde cero, tu propio proyecto.
¿Cuál sería el primer Headless CMS fácil con el que podría comenzar?
Entonces ya sabiendo todo esto, con que Headless CMS podria empezar, bueno algunos que yo diria que pruebes considerando su utilidad y facilidad seria Sanity, Strapi o Contenful, estos son muy simples y pueden servirte para empezar a crear proyectos en muy poco tiempo, ademas son dos opciones populares y amigables para principiantes por lo que encontraras muchos tutoriales, articulos e informacion, aunque si no te gustan estos, de nuevo recuerda que todos los Headless CMS estan diseñados para ser muy faciles de usar.
Diferencia entre un Headless CMS y un Backend as a Service
Ahora una pregunta que tipicamente veo es, cual es la diferencia con Firebase, Supabase o servicios similares. Bueno estos servicios que acabo de mencionar son conocidos como Backend as a Service y aunque resuelve casi el mismo problema que los Headless CMS, como la autenticacion, subida de archivos y bases de datos, estos tienen diferencias claves.
Para empezar un Headless CMS se enfoca específicamente en la gestión y entrega de contenidos, mientras que un BaaS proporciona una gama más amplia de funcionalidades que permiten crear aplicaciones web mas versatiles. Por ejemplo con ambos puedes crear una web para ofrecer productos, con un Headless CMS puedes usar interfaces graficas, y que estan mas enfocados a un usuario sin tanto conocimiento tecnico, pero en un Backend as a service, tienes que crearlo con codigo, y tienes mucho mas control de escribir tu propia logica para hacer tareas mas complejas como quizas mejorar el rendimiento o hacer que consulte a servicios externos y funcionalidaes asi.
Es decir que mientras que un CMS te permite hacer muchas operaciones facilmente, estas ya estan definidas para datos muy comunes, productos, informacion de usuario, y tipos de datos similares, pero los Backend as a service tiene muchas mas opciones, pero se necesita escribir codigo. digamos que en complejidad mas abajo del Headless CMS, esta el backend as a service, siendo mas personalizable pero mas complejo.
Ademas que algo que no he mencionado es que estos Headless CMS tambien pueden ser personalizados para que tus usuarios entren al panel administrador y solo vean las opciones que quieras, mientras que en un backend as a service, no harias esto, es necesitarias crearles su propio panel administrador.
Wordpress como un Headless CMS
Y algo relacionado a esto que tambien esta interesante es que CMS como wordpress, tambien tienen plugins que permiten crear APIs REST o APIs de GraphQL, lo que significaria que tambien puedes añadir tu propio frontend si quisieras, es decir La API REST de WordPress expone el contenido y las funciones del CMS a través de una API, lo que facilita la conexión con aplicaciones frontend modernas y la recuperación de contenido de manera dinámica.
Esto significa que cuando utilizas la API REST de WordPress junto con un enfoque frontend separado, como React, Angular o Vue.js, puedes transformar WordPress en un especie de Headless CMS. En este escenario, WordPress seguiría siendo responsable de la gestión y organización del contenido, mientras que la presentación y la interacción del usuario se manejarían a través de la tecnología frontend elegida.
Sin embargo, es importante tener en cuenta que, aunque puedes lograr un enfoque similar al de un Headless CMS utilizando la API REST de WordPress, WordPress en sí mismo no fue diseñado específicamente como un Headless CMS. Por lo que, algunas de las características y optimizaciones disponibles en un verdadero Headless CMS podrían no estar presentes en una solución basada en WordPress, ademas que ya desde la intalacion estaria disponible las interfaces frontend de wordpress solo que no estarias usandolas, mientras que un headless cms no existen realmente, haciendo a estas ultimas mas ligeras.
Aún así, esto puede ser una opción viable y efectiva, especialmente si ya estás familiarizado con WordPress y deseas aprovechar su capacidad para trabajar en un entorno headless.
Conclusion
En fin como puedes ver los Headless CMS son una solucion rapida y practica para aquellos que quieren enfocarse en crear contenido y no tanto en desarrollar logica de Frontend. Y esto nos deja con las siguientes opciones, si quieres tener pleno control de tu proyecto puedes ir por tu propio codigo desde cero, si quieres el backend ya creado y personalizar el codigo de backend, puedes ir por tu Backend as a Service, o si quieres ya todo el backend creado y solo enfocarte en crear contenido, ademas de desarrollar tu propio frontend o aplicacion movil, los headless CMS seria una mejor opcion.
Al final como ves depende del proyecto y tus planes para ese proyecto, asi que elige siempre teniendo en cuanto muy bien temas como cuantos uusarios administraran un sitio, o cuanto planeas que crezca tu proyecto.