Expediente de proyecto · N.º 01

Sysgenda

Sistema de gestión clínica diseñado, construido y operado de extremo a extremo por un solo desarrollador — en uso productivo real.

Estado En producción Autor George Montero Núñez Perfil Full-Stack Developer Stack React · ASP.NET Core · PostgreSQL

Un ciclo operativo completo, sin sistema propio

La clínica necesitaba un sistema único que cubriera todo su ciclo operativo diario — desde que un paciente agenda una cita hasta el cierre de caja al final del día — con permisos distintos para cada rol del personal: Administrador, Secretaria y Médico.

El encargo se validó contra una lista de requerimientos escrita por la clínica: pacientes, agenda, consultas, recetas, usuarios, productos, ventas y control de caja. Cada módulo de este expediente responde a uno de esos puntos.

Módulos entregados

Stack técnico

Frontend

    React 19 · TypeScript
    TanStack Query · Router v7
    React Hook Form · Zod
    Tailwind CSS

Backend

    ASP.NET Core (.NET)
    Entity Framework Core
    AutoMapper
    JWT · BCrypt

Base de datos

    PostgreSQL
    Npgsql

Infraestructura

    Docker · Nginx
    VPS propio
    Despliegue manual

Cómo se comunican las piezas

Frontend React SPA Backend ASP.NET Core API PostgreSQL vía EF Core REST + JWT JSON SQL filas

Autenticación sin estado por JWT: el token lleva usuario, médico (si aplica) y rol, y el frontend muestra u oculta rutas y módulos según ese rol. El cierre de caja nunca confía en el total que envía el cliente — el backend lo recalcula a partir de los pagos y ventas reales del día.

Notas de seguimiento

Diagnostiqué y corregí un bug donde una validación de esquema desactualizada ocultaba la lista completa de pacientes en cuanto un solo registro tenía un campo opcional en null — el frontend exigía datos que el backend ya permitía omitir.

Amplié los permisos del rol Médico para registrar pagos y gestionar productos, sin exponer el dashboard financiero de otros médicos ni del negocio completo.

Diseñé e implementé el módulo de Cierre de Caja — la tabla existía desde la primera migración, pero nunca se había construido API ni interfaz sobre ella.

Despliego y opero el sistema yo mismo en un VPS propio: build, contenedores, verificación y monitoreo continuo.

Sobre los datos de este expediente

Institución
Contacto

Sysgenda opera en una clínica privada real. ANONIMIZADO — los nombres, logos y contactos que aparecían en los formatos de impresión se removieron por confidencialidad del cliente. El código, la arquitectura y las funcionalidades de este expediente son los mismos que corren en producción.

George Montero Núñez

Full-Stack Developer