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.
Comentarios
Deja un comentario