DEV LAB: centro de operaciones para mis proyectos web
Proyecto personal. Herramienta privada donde llevo todos mis desarrollos: clientes, estado de cada proyecto, soporte, cobros, costos de infraestructura y la actividad de GitHub de cada repositorio, en un solo lugar. Las capturas usan datos de demostración.

El problema
La información de mis proyectos estaba repartida: el código en GitHub, los precios y pagos en notas, los vencimientos de dominios y de soporte en la memoria. Para saber cómo estaba un proyecto tenía que abrir varios lugares, y lo comercial y lo técnico nunca se veían juntos.
Objetivo
Un panel de uso diario que junte dos fuentes: lo que GitHub ya sabe (commits, ramas, pull requests, issues, releases) y lo que sólo sé yo (clientes, precios, contratos de soporte, cobros, hosting, dominios, tareas). Sin duplicar lo primero y sin inventar lo segundo.
Contexto
Es una herramienta interna y privada: vive dentro de este mismo portfolio, en una sección protegida con la sesión de administrador, y no tiene acceso público. Por eso no hay enlace al sitio. Todas las capturas se tomaron sobre una copia local con datos de demostración: los clientes, proyectos, importes y repositorios que se ven son ficticios.
La solución
Centro de mando con indicadores calculados desde la base de datos: proyectos por estado, soporte contratado, cobrado, por cobrar, costo de infraestructura y los próximos vencimientos. Ficha de cada proyecto con pestañas: resumen, actividad técnica, stack, infraestructura, economía y soporte, tareas e incidencias, e historial interno. CRM simple de clientes, contratos de soporte con renovaciones, cobros parciales y gastos. Integración con GitHub mediante una GitHub App de sólo lectura: importa repositorios, propone proyectos para revisar antes de crear nada, detecta el stack desde los manifiestos y arma una cronología unificada de cambios. Los cambios llegan por webhooks con firma verificada, con una sincronización diaria de respaldo y sincronización manual. Búsqueda global, tema oscuro y claro, y diseño adaptado a celular.
Mi trabajo
Definí el producto: qué tenía que resolver, qué módulos, las reglas de negocio y las decisiones de arquitectura (dónde vive, cómo se entra, tablas separadas del resto del portfolio). El desarrollo lo hice asistido por IA (Claude Code), revisando cada etapa, probándola y ocupándome de las migraciones y el despliegue en producción.
Desafíos
No mentir con los datos: si la última sincronización de un repositorio falló, el panel lo dice y muestra de cuándo son los datos, en vez de darlos por actuales. No contar dos veces el mismo cambio: commits, eventos y avisos de GitHub se guardan con claves únicas, así un webhook repetido o fuera de orden no duplica nada. Dinero en dos monedas: dólares y pesos uruguayos se muestran por separado y nunca se suman sin un tipo de cambio cargado. Lo contratado, lo cobrado y lo pendiente son cifras distintas. Seguridad: la clave de la GitHub App se guarda cifrada, los campos de texto rechazan valores con forma de contraseña o token, y cada acción valida la sesión en el servidor.
Decisiones técnicas
Integrarlo al portfolio en lugar de crear otra aplicación: mismo despliegue, misma base y ningún servicio pago nuevo. GitHub App con permisos de sólo lectura en lugar de un token personal: acceso mínimo y revocable por repositorio. Estados derivados en lugar de guardados: «vencido», «por vencer» o «sin movimientos» se calculan al consultar, así no quedan desactualizados. Migraciones de base aditivas e idempotentes, con un modo de prueba que muestra qué harían antes de aplicarlas. Nada destructivo en automático: el sistema avisa de pagos atrasados, pero no suspende ni cambia nada por su cuenta.
Tecnologías
Frontend
Backend
Base de datos
Herramientas
Funcionalidades
Galería
Resultados
Estado: en uso, en desarrollo por etapas. La base (proyectos, clientes, soporte, finanzas, tareas) está en producción; la integración con GitHub está implementada y probada. Pendiente: gráficos históricos, centro de notificaciones y rentabilidad por proyecto. Pruebas: 83 pruebas automáticas (cálculos financieros, servicios, sincronización y webhooks contra un GitHub simulado) y dos recorridos de punta a punta en navegador.