A primera vista parece que estoy planteando una herejía. Guillotinar cortándole la cabeza a un gestor de contenidos, por muy malo que sea, parece bastante injusto. Ya verás que lo de headless no tiene nada que ver con eso :)

Directus es un CMS de código abierto basado en PHP que nos permitirá crear toda una estructura de datos y contenido a través de una interfaz gráfica para luego exponer toda esa arquitectura mediante una API.

Este sistema no hace ninguna suposición acerca de donde va a aparecer el contenido generado. Es por tanto una herramienta ideal para construir aplicaciones web desacopladas.

Vamos a desgranar entonces esta definición tan gruesa en las características más interesantes que nos ofrece Directus.

También puedes ver este contenido en vídeo a través de esta serie sobre Directus:

Suscríbete a mi canal de YouTube

En la nube o en tu servidor

Directus es un software de libre distribución, aunque cuesta ver en su web que esto es así. Puedes descargarlo e instalarlo en tu propio servidor, tal y como te cuento en los vídeos.

Los requisitos del sistema son muy similares a otros CMS del mercado como WordPress o Joomla. Un servidor web con capacidad de ejecución de PHP y una base de datos MySQL. También puedes contratar el servicio en la nube para despreocuparte de todo lo relacionado con el mantenimiento del mismo.

El arquitectura son las tablas

Como en todo buen CMS “el contenido es el rey” y la forma de construir el sitio se basa en tablas. En Directus podremos crear todas las tablas que necesitemos, aunque por defecto ya tendremos disponible algunas como la de usuarios o la de archivos.

El nombre de la tabla será nuestro enganche para trabajar posteriormente con la API. Directus utilizará el concepto de column para el nombre de los campos de la tabla y de row para los valores de cada item. Traslada así la nomenclatura clásica de una base de datos.

Realmente lo que creas al añadir tablas y campos es una estructura en la base de datos que está conectada con los nombres y configuraciones que has elegido. Esto es realmente limpio, ya que si alguien tuviera en sus manos es arquitectura en MySQL podría identificar las relaciones entre entidades y trabajar con ellas.

Campos y relaciones

Como decíamos antes los campos en Directus son llamados columns. Pueden ser de gran variedad de tipos incluyendo la posibilidad de que crees los tuyos personalizados. Pero seguramente con más de 20 opciones, lo que necesites estará cubierto.

Crear campos nuevos en Directus

Campos de texto, texto largo, númericos y de contraseña. Selectores desplegables, de radio o de checkbox. Campos de tipo slider o toggl para facilitar la gestión del mismo desde la administración. Otros nos permiten tener un editor Wysiwyg o utilizar markdown para dar formato. Incluso podremos añadir listas de CSV o varios tipos de ficheros.

Los campos pueden servirnos para relacionar unas tablas con otras. Tendremos a nuestra disposición todas las típicas: One to Many, Many to One, Many to Many. En el caso de necesitar una relación múltiple tendremos que crear una tabla intermedia para relacionar los campos clave que Directus añade por nosotros a todas las tablas.

Panel de administración agradable y cómodo

Resaltar que todo estos procesos de creación y gestión lo haremos a través de una interfaz muy agradable, con letra clara y botones de acción bien visibles. Un panel de administración moderno y de carga rápida que será fácil de incluir en nuestros proyectos si necesitamos que el cliente lo utilice.

De esta forma podremos acceder al listado de los datos con opciones para filtrar el contenido, mostrar solo las columnas necesarias o cambiar el orden de los elementos.

En la edición de cada elemento accedemos a un histórico del registro de cambios que se han hecho sobre el item, además de controlar su visibilidad o los campos a los que el usuario tenga acceso.

Permisos de acceso refinados

Uno de los puntos fuertes de Directus es que incluye un sistema completo de control de privilegios sobre las tablas y, más aún, sobre las columnas (campos) que forman parte de cada tabla.

Añadir permisos a Directus

De esta forma primero crearemos grupos de usuarios a los que podremos asignar por una parte usuarios concretos y por otra los permisos de accesos. Se trata de una forma de gestionar roles y accesos. Algo muy necesario en una API.

Desde el panel de control podremos ajustar qué puede hacer cada grupo sobre cada tabla, siguiendo el esquema CRUD: ver, crear, editar y borrar. Además podemos restringir lectura y escritura sobre cada columna.

En resumen, que para un grupo de usuarios “anónimo” definimos que puedan leer de la tabla de categorías, pero que no editen o borren. A su vez pueden ver el campo del nombre de la categoría pero no la fecha en la que se ha creado.

Suscríbete a mi canal de YouTube

Todos los caminos llevan a la API

La parte más “tocha” de la documentación de Directus se la lleva la conexión a la API. Eso si, comentarte antes que te ofrecen hasta tres formas diferentes de conectarte a los datos.

  1. Mediante la API.
  2. Con un SDK para PHP o Node.js
  3. Directamente a través de consultas sobre la base de datos.

La parte de comunicación con la API está muy bien documentada, así que no entraremos en detalle aquí sobre ella para verla o bien en los vídeos o en próximos artículos. Si tienes dudas sobre como trabajar con Directus, puedes escribirme a través del formulario de contacto.

Una de las particularidades importantes aquí es para hablar de la autenticación. Lo conseguiremos a través de un token de acceso, que ayudará a Directus a saber sobre qué “cosas” tendremos privilegios. Recomiendo aquí crear desde el inicio un grupo de usuarios “anónimo” o “customer” para tener los permisos básicos de lectura a los contenidos que si queramos exponer.

Te aconsejo también escuchar el episodio de Web Reactiva donde hablamos en detalle de las buenas características que tiene que tener una API y que Directus cumple.

¿Probaste Directus? ¿Te ha gustado? Deja tu comentario para conocer tu experiencia y nos leemos en el siguiente post.

Escrito por Dani

Soy programador web freelance. Especialista en frameworks basados en PHP como Drupal, aunque también me gusta trabajar con microframeworks en varios lenguajes y, por supuesto, tengo a Javascript de gran aliado. aquí.
comments powered by Disqus