Una web para aprender
Esta página recoge las principales funcionalidades que he ido incorporando durante el desarrollo de esta web. Cada apartado representa un objetivo conseguido mientras aprendía nuevas tecnologías.
El proyecto ha crecido hasta incluir también un servidor casero, una base de datos, publicación en Internet, copias de seguridad, mi propia nube personal y varios proyectos desarrollados durante mi aprendizaje en DAM.
HTML
- ✔ Creación de una web formada por varias páginas.
- ✔ Uso de etiquetas semánticas: header, nav, main, section y footer.
- ✔ Menú de navegación entre las distintas páginas.
- ✔ Formularios con distintos tipos de campos y validación HTML5.
- ✔ Tablas para organizar información.
- ✔ Listas ordenadas y desordenadas.
- ✔ Inserción de imágenes.
- ✔ Enlaces internos y externos.
- ✔ Metadatos para mejorar la información de cada página.
- ✔ Acceso directo a PukBox desde la portada.
- ✔ Creación de un apartado de proyectos en la página principal.
- ✔ Integración de accesos independientes a BibliotecaDePuk y Pulso Manchego.
- ✔ Creación de páginas propias para presentar y explicar los proyectos desarrollados.
CSS
- ✔ Diseño propio para toda la web.
- ✔ Organización de los estilos en un archivo externo.
- ✔ Colores, tipografías y espaciados personalizados.
- ✔ Bordes redondeados y cajas de contenido.
- ✔ Efectos al pasar el ratón sobre enlaces y botones.
- ✔ Diseño adaptable mediante contenedores.
- ✔ Implementación de un modo oscuro.
- ✔ Diseño de un botón de acceso a PukBox integrado en la cabecera de la portada.
- ✔ Personalización visual de la pantalla de acceso de PukBox.
- ✔ Adaptación de PukBox a la misma paleta de colores utilizada en la web principal.
- ✔ Creación de botones diferenciados visualmente para los distintos proyectos.
- ✔ Adaptación del apartado de proyectos para pantallas pequeñas.
- ✔ Estilos específicos para las páginas de presentación de proyectos.
JavaScript
- ✔ Botón interactivo con respuesta al usuario.
- ✔ Contador de pulsaciones.
- ✔ Reloj digital en tiempo real.
- ✔ Fecha actual.
- ✔ Saludo dinámico según la hora.
- ✔ Consulta de la meteorología mediante una API.
- ✔ Cambio entre modo claro y modo oscuro.
- ✔ Guardado de preferencias mediante localStorage.
PHP
- ✔ Conversión de la portada a una página dinámica.
- ✔ Conexión con MariaDB mediante PDO.
- ✔ Recepción de datos enviados desde formularios.
- ✔ Inserción de comentarios en la base de datos.
- ✔ Sistema de moderación de comentarios.
- ✔ Publicación únicamente de comentarios aprobados.
- ✔ Obtención de una cita aleatoria de Terry Pratchett.
- ✔ Envío automático de correos mediante PHPMailer.
- ✔ Creación de una API intermedia en PHP para comunicar Pulso Manchego con NewsAPI.
- ✔ Eliminación de la clave de NewsAPI del código público de la aplicación.
- ✔ Lectura de credenciales privadas desde un archivo protegido del servidor.
MariaDB
- ✔ Creación de la base de datos del proyecto.
- ✔ Tabla de comentarios.
- ✔ Tabla de citas de Terry Pratchett.
- ✔ Tabla de estadísticas.
- ✔ Estados de moderación: pendiente, aprobado y rechazado.
- ✔ Copias de seguridad automáticas de la base de datos.
Servidor
- ✔ Raspberry Pi como servidor web casero.
- ✔ Administración remota mediante SSH.
- ✔ Instalación y configuración de Docker.
- ✔ Migración de los archivos internos de Docker desde la tarjeta SD al almacenamiento USB.
-
✔ Configuración de Docker para utilizar
/mnt/datos/docker-datacomo directorio principal. - ✔ Organización de los servicios mediante Docker Compose.
-
✔ Creación de un archivo
compose.ymlpara documentar y gestionar los contenedores. - ✔ Servidor web Nginx ejecutándose en Docker.
- ✔ Configuración de PHP-FPM.
- ✔ Integración de MariaDB.
- ✔ Configuración de Caddy como proxy inverso.
- ✔ Certificados HTTPS automáticos mediante Caddy.
- ✔ Publicación de la web en Internet.
- ✔ Acceso a la web desde dentro y desde fuera de casa.
-
✔ Dominio dinámico
josutpuk.duckdns.org. - ✔ Actualización automática de los dominios mediante un script de DuckDNS.
- ✔ Protección del panel de administración de comentarios mediante usuario y contraseña.
- ✔ Copias de seguridad automáticas de la web y de MariaDB.
- ✔ Control de versiones mediante Git y GitHub.
-
✔ Despliegue de la web mediante
git pull. - ✔ Despliegue de una aplicación Flutter Web dentro del servidor.
-
✔ Publicación de Pulso Manchego en
/pulso-manchego/. - ✔ Creación de un endpoint PHP propio para las consultas de Pulso Manchego.
- ✔ Almacenamiento de la clave de NewsAPI fuera del directorio público de la web.
- ✔ Configuración de permisos para que únicamente root y el servidor web puedan acceder a la clave de NewsAPI.
-
✔ Preparación del dominio
josutpuk.eu.orgpara su futura publicación.
PukBox
- ✔ Creación de una nube personal mediante File Browser.
- ✔ Almacenamiento de los archivos en el dispositivo USB del servidor.
- ✔ Creación de carpetas para fotografías, documentos, apuntes, vídeos y proyectos.
- ✔ Publicación de PukBox en Internet.
-
✔ Dominio propio:
pukbox.duckdns.org. - ✔ Acceso seguro mediante HTTPS.
- ✔ Configuración de PukBox detrás del proxy inverso de Caddy.
- ✔ Integración del contenedor de PukBox en Docker Compose.
- ✔ Recuperación y actualización del usuario administrador.
- ✔ Cambio del nombre visible de File Browser por PukBox.
- ✔ Creación de un logotipo propio para PukBox.
- ✔ Instalación del logotipo en la pantalla de inicio de sesión.
- ✔ Creación de una carpeta de branding independiente del contenedor.
- ✔ Personalización de la pantalla de acceso mediante CSS.
- ✔ Incorporación del lema: «Mis archivos. Mi servidor. Mis reglas.»
- ✔ Acceso a PukBox desde la esquina superior derecha de la página principal.
Proyectos
- ✔ Desarrollo de BibliotecaDePuk, una aplicación de escritorio en Java para gestionar mi biblioteca personal.
- ✔ Creación de una página propia dentro de la web para presentar BibliotecaDePuk.
- ✔ Publicación del código de BibliotecaDePuk mediante Git y GitHub.
- ✔ Creación de Pulso Manchego como práctica del módulo de Desarrollo de Interfaces de DAM.
- ✔ Desarrollo de Pulso Manchego con Flutter y Dart.
- ✔ Uso de NewsAPI para obtener noticias de Castilla-La Mancha y del resto de España.
- ✔ Implementación de búsqueda de noticias mediante palabras clave.
- ✔ Recuperación de Pulso Manchego a partir del historial local de Visual Studio Code después de perder los archivos originales.
- ✔ Reconstrucción completa del proyecto Flutter a partir del código recuperado.
- ✔ Recuperación de las versiones web y multiplataforma del proyecto.
- ✔ Comprobación del funcionamiento completo de Pulso Manchego tras su recuperación.
- ✔ Adaptación de Pulso Manchego para utilizar un servicio PHP propio en lugar de acceder directamente a NewsAPI.
- ✔ Compilación de Pulso Manchego como aplicación Flutter Web.
- ✔ Publicación de Pulso Manchego en mi propio servidor.
- ✔ Creación de una página de presentación de Pulso Manchego dentro de esta web.
- ✔ Creación de un apartado «Mis proyectos» en la página principal.
Y esto solo es el principio...
Seguiré ampliando esta página conforme vaya aprendiendo nuevas tecnologías e incorporando nuevas funcionalidades a la web, al servidor y a mis proyectos.
Entre los próximos objetivos están seguir mejorando PukBox, ampliar el apartado de proyectos, continuar desarrollando BibliotecaDePuk y seguir incorporando a esta web todo lo que vaya aprendiendo durante el segundo curso de DAM.