Jun. 2026 – jul. 2026
Virtual Microscope Admin Panel
Un panel de administración para un microscopio virtual de biología, distribuido como aplicación de Windows con su propia base de datos embebida.
Mi rolDesarrollador en un equipo de 3: persistencia, todo el frontend y el empaquetado de escritorio
El panel administra la colección de láminas de un microscopio virtual de la UCR: láminas agrupadas por grupo biológico (p. ej. bacterias) y caja, cada una con un conjunto ordenado de imágenes. Un compañero había iniciado la API con repositorios en memoria; yo construí la mayor parte de lo que la convirtió en un producto usable.
Persistencia
- Reemplacé los repositorios en memoria por EF Core sobre PostgreSQL: un DbContext con configuraciones Fluent API para cajas, grupos, láminas e imágenes, conversiones de objetos de valor, la migración inicial y la inyección de dependencias.
- Una base de datos con Docker Compose fijada a Postgres 17 (igual que la versión de escritorio), accesible solo desde localhost y con health check.
Todo el frontend
- Construí el frontend en Blazor WebAssembly con arquitectura limpia: un dominio con sus propios objetos de valor, servicios de aplicación, un cliente HTTP tipado y una interfaz MudBlazor con la identidad visual de la UCR y una guía de uso integrada.
- Paginación y búsqueda del lado del servidor para las láminas: el endpoint devuelve una respuesta paginada con tamaños validados, y la tabla carga páginas desde el servidor con búsqueda y filtro por caja con debounce en lugar de descargar todo.
- Corregí un error en el que crear una lámina con 6 imágenes siempre fallaba: al elegir la sexta imagen, el campo de carga se desmontaba y el navegador invalidaba todos los archivos anteriores. Ahora los archivos se leen apenas se seleccionan, lo que además permitió la selección múltiple. El orden de las imágenes sigue su posición en la lista, lo que eliminó órdenes duplicados.
Aplicación de escritorio en un clic
- Empaqueté todo como un instalador de Windows: un shell de Electron inicia un Postgres 17 embebido y la API publicada, espera su endpoint de salud y abre la aplicación en una ventana nativa. No requiere Docker ni instalar una base de datos.
- La API sirve la aplicación WebAssembly con respaldo para el enrutamiento del cliente y aplica las migraciones al iniciar con reintentos por si la base tarda en arrancar. Un script de PowerShell publica ambas aplicaciones y ejecuta electron-builder.
Hecho con
C# / .NETBlazor WebAssemblyMudBlazorEF CorePostgreSQLElectronDocker
Siguiente proyecto
ThemePark@UCR →



