NeoCMS - Posts relacionados y migración del sistema de estadisticas
Acá vengo de nuevo a contarles cómo voy mejorando mi CMS para que quede (por lo menos para mi) 100% funcional.
El Problema: Estadísticas limitadas
La situación: NeoCMS (mi gestor de contenidos para el blog) usaba un sistema muy básico basado en un archivo stats.json. Solo contaba "hits" totales y diarios, pero era ciego a información clave: ¿Desde dónde me leen? ¿Qué sistema operativo usan? ¿Son usuarios nuevos o recurrentes?
La meta: Migrar a un sistema de telemetría más robusto sin perder la filosofía Flat-File (sin base de datos SQL).
La Solución Técnica: De JSON a CSV Estructurado
Abandonamos el contador simple y pasamos a un registro de eventos detallado (llamado stats.csv en vez de stats.json).
El cambio: Ahora cada visita es una fila en un CSV que guarda: Timestamp, User_ID, Acción, Detalle (slug), OS, Ubicación e IP.
Identidad de Usuario: Implementamos un sistema de Cookies anónimas. Si el usuario no tiene cookie, generamos un UUID corto; si la tiene, sabemos que es un usuario recurrente.
Privacidad primero: Para la geolocalización, NO pedimos permisos de GPS intrusivos. Usamos una API de resolución de IP (ip-api.com) desde el backend para estimar Ciudad y País de forma transparente.
Middleware en Flask: Usamos los decoradores before_request y after_request para automatizar el registro de visitas, filtrando bots, admins y archivos estáticos. Todo eso no genera visitas.
El Nuevo Dashboard (Panel de Admin)
Con tanta data nueva, el panel de administración necesitaba un upgrade.
Visualización: Creamos un dashboard que muestra gráficas de barras para los últimos 7 días.
Demografía: Agregamos tablas para ver el ranking de Sistemas Operativos (Android, Windows, Linux...) y Ubicación Geográfica.
Descargable: Implementamos un botón para exportar toda la data cruda en CSV para análisis externos. Esto ya se hacía para el archivo json de estadísticas pero ahora se hace con el CSV.
Retención de Usuarios: "Artículos Relacionados"
Para evitar que el lector se vaya al terminar un post, implementamos un motor de recomendación simple pero efectivo.
La Lógica: Al cargar un post, el sistema busca en todos los archivos Markdown aquellos que compartan la misma categoría que el artículo actual.
Filtrado: Excluye el post que se está leyendo y selecciona los 3 más recientes.
Frontend: Se diseñaron tarjetas minimalistas al final del artículo para invitar a seguir leyendo.
Pulido de UI (User Interface)
Pequeños detalles que hacen la diferencia dentro del panel de administración.
Algunas imágenes:
Se acomodaron en el panel de admin la info de las estadísticas con las barras mejoradas
La página con la información full de estadísticas con los posts más leídos, el promedio diario y la cantidad de dias que se van registrando las visitas
Acá las estadísticas de sistemas operativos y la ubicación geográfica por medio de la API de donde se saca la IP del que visita el blog. Ahí tengo que corregir la parte de sistemas operativos porque se me está yendo muchos por "Otro" sin saber qué SO es.
Por último por la parte de estadísticas para mostrar es el total por día de visitas para saber bien cuánto es por día la cantidad de visitas.
Los famosos artículos relacionados que no teníamos. Se pudo agregar sin problemas y funcionan muy bien.
Espero que si hay alguno que esté leyendo y quiera usar el CMS puede ingresar a mi repositorio de github y clonar el código sin problemas y obviamente adaptarlo a sus necesidades y por qué no, proponer nuevos cambios mandado el respectivo Pull Request.
Nos leemos en el Fediverso
Comentarios
Deja un comentario