# Página web del hackmeeting La principal ventaja de esta web con respecto a la que hay actualmente es que no necesita mantenimiento, mantiene la posibilidad de editar contenido por varias personas y simplifica el backup. El flujo de trabajo típico para añadir contenido a la web sería este: 1. Crear o editar un fichero en la carpeta `content` 2. Comprobar en local que la modificación es correcta 3. Hacer un commit con las modificaciones 4. Subir el commit al repositorio de git 5. Compilar la web 6. Enviar los ficheros al servidor web. Los pasos 5 y 6 se pueden automatizar con alguna herramienta de integración continua. En este ejemplo se usa drone.io. Para simplificar el resto de los pasos la idea es preparar scripts u otro tipo de programas, que ayuden a generar el contenido de manera más interactiva. Este proceso puede ser demasiado complicado para personas sin experiencia en git o markdown, sobre todo las integrantes del grupo local, que además no conocen el funcionamiento de esta herramienta. Propongo instaurar el rol de "madrina(s) de grupo local", gente que se encargue de asistir al grupo local y en caso necesario de encargarse de subir los contenidos a la web. Los datos que son más útiles para el grupo local se guardan en ficheros csv, que es fácil de modificar en una hoja de cálculo, y permite un postpropceso sencillo para obtener datos interesantes. Por ejemplo la cantidad de asistentes que hay apuntados para cenar el sábado. ## Crear contenido Hay una serie de comandos auxiliares para gestionar el contenido de la web de manera sencilla. Todos estos comandos aceptan un parámetro opcional: el año en el que estamos trabajando. Si no se indica año se asume el actual. Para crear un nodo: bin/nuevo_nodo Para gestionar la asistencia: bin/asistencia Para gestionar las necesidades: bin/necesidades Para crear una página corriente: bin/nueva_pagina Para empezar un nuevo hackmeeting: bin/nuevo_hackmeeting ## Mini intro a Hugo Para probar la web en local hay que instalarse hugo: https://gohugo.io/getting-started/installing/ Para poner en marcha la web en modo desarrollo: hugo server -D Para compilar la web ejecutar el comando `hugo` sin parámetros, luego basta con copiar el contenido de la carpeta `public` al servidor web. Todo el contenido de la web está en la carpeta `content`. Las plantillas para renderizar el contenido están en la carpeta `layouts`. Las plantillas para generar contenido están en la carpeta `archetypes`. Los ficheros estáticos están en la carpeta `static`, se copian tal cual a la carpeta `public`. Más información: https://gohugo.io/documentation/ ## Estructura básica del contenido Cada año creamos una carpeta nueva dentro de `content`, usando el archetypes `hm`. Esta carpeta tiene la página inicial, el manifiesto, el listado de nodos y la página de asistencia. ## Shortcodes Estos son los shortcodes definidos para el hackmeeting: ### rawHTML Renderiza el contenido del shortcode sin procesar, por lo que se puede meter html arbitrario. Ejemplo: {{< rawHTML >}}
Una tabla
{{< /rawHTML >}} ### csvTable Renderiza un csv como una tabla HTML. Hay que pasarle dos parámetros, el path del csv relativo a la raíz del proyecto y la clase css que se le asignará a la tabla. Hay que generar un fichero csv separado por comas. Ejemplo, para un fichero `content/2019/nodos/parrilla_viernes.csv': {{< csvTable file="/content/2019/nodos/parrilla_viernes.csv" class="parrilla" >}}