César
Rogel

Full-stack .NET y React. Construí sistemas públicos con 11,403 inscritos en un evento y 35 mil usuarios en otro.

  • Trabajo remoto
  • Inglés avanzado
  • GMT-6
  • Desarrollador desde 2024

Recortes de mis sistemas. Puedes moverlos.

Portada de Pedaleada Centro Histórico
Gráfica de latencia del Sistema de Monitoreo de Red
Tarjeta de función de Cine al Aire Libre con sinopsis, horario, tráiler, compartir y calendario
Resumen de flota con datos de ejemplo
We All Run 2026: 11,403 personas inscritas, 5 distancias, 11 de octubre

Tecnologías que uso en estos proyectos:

  • C#
  • .NET Core
  • React
  • SQL Server
  • Laravel
  • Alpine.js
  • Tailwind CSS
  • Docker

Cine al Aire Libre

La cartelera pública del cine gratuito del Ministerio de Obras Públicas de El Salvador (MOPT): funciones por semana, tráileres, ubicaciones y un panel para administrarlo todo.

35 mil usuarios activos y 82 mil vistas de página, según Google Analytics (1 de enero de 2025 al 2 de noviembre de 2026).

Mi rol en estos proyectos: desarrollo full-stack.

Una API REST en .NET Core alimenta el sitio público en React y un panel para gestionar películas, banners, usuarios y permisos por perfil. Cada película tiene enlace directo y tráiler integrado; parte importante del tráfico llega desde redes sociales.

React, .NET Core, SQL Server, Tailwind CSS

We All Run y Pedaleada

Plataformas para We All Run y Pedaleada Centro Histórico: desde la inscripción pública hasta la operación del día del evento.

11,403 personas inscritas en We All Run 2026

En Pedaleada: 5,583 ciclistas registrados, 3,996 titulares y 1,587 acompañantes, con 636 bicicletas prestadas.

Cada punto es una persona inscrita.

We All Run: dato publicado en weallrun.mop.gob.sv. Pedaleada: panel del sistema de inscripción.

Videos y capturas grabados en copias locales, demo o de capacitación, con datos ficticios.

Decisiones técnicas en We All Run

Muchas inscripciones a la vez en la apertura
Un bloqueo al generar el código ponía a todas en fila. Lo cambié por un contador con IDENTITY, sin bloqueo de rango. Descarté SEQUENCE porque la base de producción no lo admitía y cambiar su compatibilidad arriesgaba otras consultas.
Dorsales agotados sin cerrar la inscripción
Si se acaba el rango, la persona se inscribe en espera de dorsal. Los números liberados se reparten en una transacción de todo o nada, que verifica el rango y que ninguno se repita.
Un límite de peticiones que no bloquee a todos
Detrás del proxy muchas personas comparten IP, y un límite por IP se agotaba para todas. La encuesta pasó a limitar por token y el panel con sesión quedó sin ese límite.
  • Antes del evento

    Distancias, tallas de camiseta, acompañantes y dorsales asignados por categoría.

  • El día del evento

    Check-in con QR, entrega de kits por mesa y asistencia. En Pedaleada también préstamo de bicicletas.

  • Después del evento

    Encuesta por correo con enlace único y panel de resultados sin datos personales.

.NET 9, ASP.NET MVC, SQL Server, DbUp, Docker, IIS

Facturación electrónica

Sistema de Documentos Tributarios Electrónicos para generar, firmar, transmitir y consultar comprobantes conforme a la normativa fiscal.

Cada documento se firma y se transmite a Hacienda, que lo autoriza o lo rechaza, y luego llega al receptor. La lógica fiscal está en C#, con validación JSON, y el PDF sale automáticamente con iTextSharp.

C#, ASP.NET WebForms, SQL Server, Crystal Reports, WCF

Monitoreo de red

Un servicio en segundo plano hace ping a cada equipo y avisa por correo cuando alguno deja de responder. Pruébalo aquí.

Todos los equipos responden.

Demo con datos simulados. Aquí un ciclo dura 1,4 s; en el sistema real, 1 minuto. La alerta sale tras 2 ciclos sin respuesta.

Un acceso para varios sistemas

Login central para el personal del MOPT en eventos fuera de sus instalaciones, en distintos departamentos del país. Ninguna aplicación guarda contraseñas: solo validan un token y sus permisos por perfil.

  1. La persona entra a una aplicaciónSin sesión, la aplicación la envía al login central.
  2. Login centralAutentica y emite un JWT firmado con RSA para ese sistema.
  3. Cada aplicación validaComprueba firma, emisor, audiencia e IdSistema con la llave pública.
  4. We All Run, Pedaleada y otrosComparten el acceso, con menús y permisos según el perfil. Cine al Aire Libre se sumará después.

¿Este token entra a We All Run?


          

Ejemplo simplificado con datos ficticios. La regla de IdSistema es la del sistema real.

Inicio de sesión del Login Central en una computadora
Inicio de sesión del Login Central en un teléfono

También construí

Inventario y control de flota

Centraliza más de 600 unidades del Ministerio: vehículos, conductores, asignaciones por acta y préstamos, con un panel operativo de uso diario.

.NET 9, Razor Pages, EF Core, SQL Server, Docker ComposeLas capturas de este proyecto usan datos de ejemplo.

Gestión de clínica

Inventario de farmacia con lotes, vencimientos, listas de compra y recetas médicas.

.NET MVC, SQL Server, Alpine.js, JWT

Tamanique GP

Reconstrucción con agentes de Claude Code del sitio de un campeonato de downhill: mapa de ruta guiado por scroll y desglose por sectores de pista.

Next.js, TypeScript, Tailwind CSS, Claude Code

Servicio de correos y archivos

API de envío masivo por lotes y gestor de archivos, con un panel propio para vigilar la red, revisar cada envío y generar el código de integración. Orquestado con Docker Compose.

.NET 10, ASP.NET MVC, SignalR, SQL Server, Docker Compose, SMTPLas capturas de este proyecto usan datos de ejemplo.

Experiencia

Desarrollador de software

MOPT, Ministerio de Obras Públicas de El Salvador. Jul 2024 a la actualidad.

Desarrollo de punta a punta: aplicaciones web, APIs y bases de datos SQL, con despliegue en IIS y cumplimiento de ciberseguridad. Cargo oficial: Técnico Programador Analista.

Soporte técnico bilingüe

Concentrix y Teleperformance, y coach de inglés en Direct English. 2022 a 2024.

Ingeniería de Sistemas Computacionales

UTEC. Graduación esperada en 2027.

¿Hablamos?

Busco trabajo remoto como desarrollador full-stack .NET y React.

cesaredu1927@gmail.com