PlanetMedic — Portal del Paciente
InicioProyectosPlanetMedic — Portal del Paciente

PlanetMedic — Portal del Paciente

Portal público del paciente para el Sistema de Historia Clínica Unificada (HCU-EC): consulta de servicios, profesionales y sedes, registro, login y agendamiento de citas médicas en línea.

Detalles
Tipo
Web App
Rol
Full-stack Developer
Creación
Q2 2026
Actualización
Q3 2026
Visitar
Demo
Código
Github
Stack tecnológico
Astro 7Tailwind CSS 4TypeScript 5DockerNginxWoodpecker CI
01

Descripción

Contexto general

Portal público del paciente construido con Astro 7 (SSG) y TailwindCSS 4. Permite a los pacientes consultar servicios, profesionales y establecimientos, registrarse, iniciar sesión y gestionar sus citas médicas en línea. Consumo de dos microservicios del backend (Auth y Citas) con client-side fetching en vanilla TypeScript. Autenticación con JWT en localStorage + refresh token en cookie HttpOnly, con silent refresh y retry automático. Design system Hallmark modern-minimal con tokens OKLCH, fuentes self-hosted (Outfit + Instrument Serif). Despliegue con Docker (nginx:alpine) y CI/CD automatizado con Woodpecker CI en aaPanel.

PlanetMedic — Portal del Paciente
02

Motivación

Por qué lo construí

Ofrecer a los pacientes un portal público 24/7 donde puedan consultar servicios, profesionales y sedes sin necesidad de contactar al call center.

Digitalizar el agendamiento de citas médicas con un flujo guiado: selección de sede, servicio, profesional, fecha y hora — con auto-fill desde query params para navegación contextual.

Permitir el registro y login de pacientes en línea usando su número de identificación (cédula), con JWT y silent refresh automático.

Mantener consistencia visual con el sistema principal (PlanetMedic) usando el mismo design system Hallmark y la misma paleta de brand.

03

Características

Lo que destaca

Astro 7 SSG con client-side fetching en vanilla TypeScript — sin framework JS adicional, sin React, Vue ni islands.

Autenticación con JWT en localStorage + refresh token en cookie HttpOnly separada (portal_refresh_token) para evitar colisión con el frontend Angular en localhost.

Silent refresh con retry: cuando una petición recibe 401, se limpia el token, se renueva vía cookie y se reintenta automáticamente.

Auto-fill del formulario de agendamiento vía query params (id_profesional, id_establecimiento, id_servicio) desde las páginas de profesionales y servicios.

Design system Hallmark modern-minimal con tokens OKLCH, macroestructura Split Studio para marketing y auth, fuentes self-hosted en .woff2.

CI/CD con Woodpecker CI: build automático en push a main, despliegue con Docker Compose (nginx:alpine) y proxy reverso en aaPanel con SSL.