Web2026Proyecto personal

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.

DEV LAB: centro de operaciones para mis proyectos web

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

Next.js 16React 19TypeScriptTailwind CSS 4

Backend

Server ActionsRoute HandlersZodGitHub App (REST y GraphQL)Webhooks

Base de datos

PostgreSQL (Neon)Drizzle ORM

Herramientas

VercelGitHubVitestPlaywrightClaude Code

Funcionalidades

Centro de mando con indicadores reales
Ficha de proyecto con siete pestañas
Integración con GitHub por webhooks
Importación de repositorios con revisión previa
Detección de stack desde los manifiestos
Contratos de soporte, cobros y gastos
Importes en USD y UYU sin mezclar monedas
Vencimientos de pagos, dominios y tareas
Búsqueda global
Tema oscuro y claro, adaptado a celular

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.