# Rodrigo Suárez

Desarrollador Full Stack

Montevideo, Uruguay

Analista en Tecnologías de la Información — Universidad ORT Uruguay

[Portfolio](https://rodrigosuarez.vercel.app/) · [CV](https://rodrigosuarez.vercel.app/documents/Cv_Rodrigo_Suarez.pdf)

## Experiencia

- CASMU: Operador de Sistemas Informáticos, 2020–actualidad

## Proyectos

### Sistema de Gestión Mayorista Javier

Sistema de gestión comercial para Mayorista Javier, desarrollado desde cero con una API en C#/.NET y una interfaz en React 19. Centraliza pedidos, inventario e información del negocio y mantiene actualizado el catálogo de la web de clientes.

[Sistema de Gestión Mayorista Javier](https://rodrigosuarez.vercel.app/#mayorista-javier)

**Problema:** Los pedidos se registraban en papel y la empresa no contaba con información confiable sobre su stock real, sus ventas ni sus márgenes de beneficio. Esta falta de visibilidad dificultaba la planificación de compras a proveedores y aumentaba la incertidumbre sobre qué productos reponer y en qué cantidades.

**Mi rol:** Relevé los requerimientos del negocio y desarrollé el sistema de gestión desde cero. Me encargué de su despliegue y continúo con el mantenimiento, abarcando tanto la API como la interfaz y su integración con la web de clientes.

**Decisiones técnicas:** Separar la interfaz React 19 de la API RESTful en C#/.NET 10 y centralizar la información comercial en PostgreSQL con Entity Framework Core. Gestionar las consultas y su caché con TanStack Query, el estado con Zustand y la validación de formularios con Zod. Proteger los endpoints mediante JWT y roles de usuario, y almacenar las contraseñas con hashing mediante BCrypt.NET. Generar los PDF con QuestPDF desde la API y conectar pedidos e inventario con el catálogo web de clientes.

**Resultado:** El sistema mantiene el inventario actualizado y permite registrar cada pedido con un ahorro estimado por el cliente de aproximadamente 15 minutos. Reúne KPIs de ventas mensuales, rankings de artículos más y menos vendidos, márgenes de beneficio y estimaciones de ventas del mes. Las alertas de vencimiento y la información de stock ayudan a prevenir pérdidas de mercadería y compras excesivas. Además, mantiene actualizado en tiempo real el catálogo de artículos que consultan los clientes en la web.

**Evidencia:** Stack contrastado con los manifiestos de dependencias y el código de los repositorios del backoffice y la API. El ahorro de aproximadamente 15 minutos por pedido es una estimación del cliente para el flujo integrado del catálogo y el sistema de gestión; no corresponde a dos ahorros independientes.

Stack: C#, React 19, .NET 10, PostgreSQL, TypeScript, Vite, Entity Framework Core, Npgsql, QuestPDF, JWT, BCrypt.NET, TanStack Query, Zustand, React Router, React Hook Form, Zod, Recharts, Tailwind CSS, Docker, Vitest, xUnit

### Ratio · Gestión de obras para empresa Espina

Colaborador Full Stack con Ing. Luis Terzano en Ratio para Espina. Desarrollé el módulo de diagrama de Gantt completo, logs y seguridad, Excel e instaladores; modernicé la interfaz WPF y la identidad visual.

Si querés evaluar la herramienta, contactame. Te proporciono los instaladores de la API para servidores Windows o Linux y del cliente de escritorio para Windows.

[Ratio · Gestión de obras para empresa Espina](https://rodrigosuarez.vercel.app/#ratio-espina)

**Problema:** Espina necesitaba una solución de gestión de obras ajustada a la realidad uruguaya, incluidas las leyes sociales. Cada departamento trabajaba con varias planillas Excel difíciles de utilizar y entender, que no facilitaban el trabajo conjunto. El desafío incluye reducir la fragmentación de información, la doble carga y las diferencias entre versiones.

**Mi rol:** Colaborador Full Stack junto al Ing. Luis Terzano. Implementé el módulo de diagrama de Gantt completo: lógica de planificación, API e interfaz WPF. También desarrollé funcionalidades de auditoría y logs, mejoras de seguridad y permisos, importación y exportación Excel e instaladores con Inno Setup. Modernicé pantallas, navegación, estilos Fluent, iconos, identidad visual y componentes reutilizables.

**Decisiones técnicas:** Vincular la planificación al presupuesto activo y distribuir costos proporcionalmente a los días seleccionados. Separar cambios pendientes de los datos guardados usados en diagramas, totales y exportaciones. Incorporar permisos, filtros y avisos de inconsistencias. Los importes son costos planificados, no cobros o pagos reales. Incorporé autenticación en endpoints, permisos por rol, limitación de intentos de login y trazabilidad de accesos y operaciones críticas; centralicé estilos e iconos y mejoré la instalación y actualización.

**Resultado:** Módulo de diagrama de Gantt completo y en uso para planificar los tiempos de obra y consultar recursos y costos previstos, tanto mensuales como acumulados. Permite identificar rubros sin programar, visualizar la cobertura del presupuesto planificado y exportar la información a Excel o imprimirla en papel y PDF. Además, se reforzaron los permisos y la auditoría entre el cliente y la API, y se unificó la experiencia visual del sistema.

**Evidencia:** Contribuciones contrastadas con los commits de Rodrigo y el código local del cliente y la API, incluidas las ramas Gantt y detalles-ui. Uso del diagrama de Gantt confirmado por Rodrigo. Parametrización empresarial prevista, aún no implementada. Sin métricas de impacto cuantificadas.

Stack: WPF, C#, .NET 8, MongoDB, API, Windows Server, Linux

### Web de Clientes para Mayorista Javier (PWA)

Web de clientes de Mayorista Javier con catálogo actualizado, pedidos por WhatsApp y una sección de contacto, ubicación, cómo comprar y preguntas frecuentes. Integra la información del sistema de gestión en una PWA.

[Web de Clientes para Mayorista Javier (PWA)](https://rodrigosuarez.vercel.app/#catalogo-mayorista-javier) · [Web](https://mayoristajavier.vercel.app/)

**Problema:** La empresa no contaba con un catálogo para sus clientes donde pudieran consultar los artículos disponibles y sus precios.

**Mi rol:** Desarrollé la PWA y su integración con el sistema de gestión para mostrar información actualizada en tiempo real. Implementé el catálogo y el armado de pedidos, además de la sección de contacto, cómo llegar, cómo comprar y preguntas frecuentes.

**Decisiones técnicas:** Conectar el catálogo con la información del sistema de gestión y ofrecer una PWA adaptable a distintos dispositivos. Permitir que el cliente arme su pedido en la web y lo envíe como un mensaje de WhatsApp que la empresa pueda copiar y pegar en su sistema. Ese flujo permite registrar el pedido y generar la orden en PDF, lista para imprimir, en menos de 10 segundos, según lo confirmado por Rodrigo. Reunir contacto, ubicación, instrucciones de compra y preguntas frecuentes en una sección accesible desde el catálogo, para acompañar al cliente durante la compra.

**Resultado:** Los clientes pueden consultar el catálogo de productos, armar su pedido y enviarlo por WhatsApp. La empresa recibe un mensaje listo para copiar y pegar en su sistema, registrar el pedido y generar la orden en PDF para imprimir. El ahorro estimado por el cliente de aproximadamente 15 minutos por pedido corresponde a este flujo integrado; no es un ahorro adicional al del sistema de gestión. La web también reúne las vías de contacto, la ubicación del local y una guía para coordinar el retiro o la entrega.

**Evidencia:** Integración y stack contrastados con los repositorios. El tiempo de menos de 10 segundos para registrar el pedido y generar el PDF fue confirmado por Rodrigo. El ahorro aproximado de 15 minutos por pedido es una estimación del cliente para el flujo integrado, no un ahorro adicional.

Stack: Next.js, React 19, TypeScript, Tailwind CSS, PWA

### Gestor de Salas de Reunión — Jaume & Sere

Proyecto final de carrera para gestionar salas, sedes y reservas de reunión. Integra autenticación corporativa con Active Directory y notificaciones de Outlook mediante Microsoft Graph, con backend .NET y frontend React.

[Gestor de Salas de Reunión — Jaume & Sere](https://rodrigosuarez.vercel.app/#jaume-sere)

**Problema:** La agenda de las salas se llevaba en papel. La letra podía ser difícil de interpretar y algunas reservas no se cancelaban, por lo que las salas aparecían ocupadas aunque ya no fueran a utilizarse. Además, no todos los participantes recibían la información de las reuniones o de sus cancelaciones.

**Mi rol:** Participación en el análisis y desarrollo del sistema de reservas como proyecto final de carrera para Jaume & Sere.

**Decisiones técnicas:** Reemplazar la agenda de papel por un calendario centralizado, con gestión de reservas y cancelaciones. Integrar Active Directory para el acceso corporativo y Outlook mediante Microsoft Graph para enviar invitaciones y notificaciones por correo a todos los participantes, incluidos los avisos de cancelación, con API .NET y frontend React.

**Resultado:** Según lo informado por la organización, se eliminaron las reservas que mantenían salas ocupadas incorrectamente. Las invitaciones y notificaciones por correo resolvieron también la falta de información entre los participantes: todos reciben la convocatoria y los avisos de cancelación.

**Evidencia:** Resultado informado por la organización.

Stack: C#, .NET 8, Entity Framework Core, MS SQL Server Express, Active Directory (Windows Server), Microsoft Graph / Outlook, React, Vite, TypeScript, TailwindCSS, Azure

### FyV Traslados

Sitio comercial para presentar los servicios de traslado, explicar cómo contratar y facilitar consultas por WhatsApp. Construido con Astro y Tailwind CSS, con secciones de servicios y una estructura preparada para buscadores.

[FyV Traslados](https://rodrigosuarez.vercel.app/#fyv-traslados) · [Web](https://fyv-traslados.vercel.app/)

**Problema:** FyV necesitaba ganar visibilidad y reunir la explicación de su trabajo, sus servicios y su proceso de contratación en un único lugar.

**Mi rol:** Diseño y desarrollo de la página web comercial de FyV Traslados a partir de las necesidades del negocio.

**Decisiones técnicas:** Organizar servicios, proceso, tarifas y contacto en una web con Astro y componentes reutilizables. Incorporar consultas por WhatsApp, diseño adaptable y SEO técnico con sitemap y datos estructurados.

**Resultado:** La empresa cuenta con un sitio publicado que reúne su propuesta y facilita compartir la información y contactar por WhatsApp.

**Evidencia:** Resultado: sitio web publicado con servicios, proceso y contacto centralizados.

Stack: Astro, TypeScript, Tailwind CSS, Vercel

### PimPollo · Web de clientes y catálogo

Sitio comercial de PimPollo en construcción: portada móvil con información del negocio y pedidos por WhatsApp. Desarrollo Full Stack de web Astro, panel React 19 y API .NET 10 con PostgreSQL, sin pagos en línea.

[PimPollo · Web de clientes y catálogo](https://rodrigosuarez.vercel.app/#pimpollo) · [Web](https://pimpollo-web.vercel.app/)

**Problema:** PimPollo necesitaba una web rápida, accesible desde celulares y fácil de encontrar que reuniera información comercial, productos y promociones sin incorporar pagos online. El negocio también requería un panel seguro para gestionar artículos, precios y parámetros.

**Mi rol:** Desarrollo Full Stack de la web pública en Astro, el panel React 19 y TypeScript, la API C#/.NET 10 y la integración con PostgreSQL, Railway y Vercel. Implementación de diseño responsive, datos comerciales, seguridad, CI y pruebas.

**Decisiones técnicas:** Separar web pública, administración y API mediante responsabilidades claras. Renderizar contacto y horarios en HTML indexable con sincronización de parámetros desde la API, metadatos sociales y navegación sin JavaScript. Proteger la gestión con autenticación, cookies seguras, CSRF, rotación de tokens y límites de intentos. Verificar contratos con PostgreSQL y pruebas automatizadas de navegador.

**Resultado:** Landing publicada con identidad visual de PimPollo, contacto por WhatsApp, horarios, información del local y preguntas frecuentes. Panel administrativo y API operativos para gestionar productos, promociones y parámetros. SEO técnico, miniatura para redes y pruebas de accesibilidad y navegación implementados; el catálogo público interactivo y el armado completo de pedidos siguen en construcción.

**Evidencia:** Contrastado con PimPollo: web/src/pages/index.astro publica la landing y web/src/pages/_home.astro contiene un catálogo preliminar. admin/ y api/ gestionan datos del negocio, y GitHub Actions ejecuta pruebas de PostgreSQL, navegador, rendimiento y navegación. Las métricas de CI no se presentan como garantía universal en producción.

Stack: Astro, React 19, Vite, TypeScript, C#, .NET 10, PostgreSQL, Entity Framework Core, Docker, Railway, Vercel

## Contact

- [email](mailto:rodrisua1@hotmail.com)
- [whatsapp](https://wa.me/59894974540)
- [github](https://github.com/RodrigoSuarez47)
- [linkedin](https://www.linkedin.com/in/rodrigogabrielsuarez/)

---

# Rodrigo Suárez

Full Stack Developer

Montevideo, Uruguay

Analista en Tecnologías de la Información — Universidad ORT Uruguay

[Portfolio](https://rodrigosuarez.vercel.app/en) · [CV](https://rodrigosuarez.vercel.app/documents/Cv_Rodrigo_Suarez_EN.pdf)

## Experience

- CASMU: Computer Systems Operator, 2020–present

## Projects

### Mayorista Javier Management System

Business management system for Mayorista Javier, built from the ground up with a C#/.NET API and a React 19 frontend. It brings orders, inventory and business information together and keeps the customer-facing web catalog up to date.

[Mayorista Javier Management System](https://rodrigosuarez.vercel.app/en#mayorista-javier)

**Challenge:** Orders were recorded on paper, and the business lacked reliable information about its actual stock levels, sales and profit margins. This limited visibility made supplier purchasing difficult to plan and left uncertainty about which products to reorder and in what quantities.

**My role:** Gathered and analyzed the business requirements and built the management system from the ground up. Handled deployment and continue to maintain the system, including its API, frontend and integration with the customer-facing website.

**Technical decisions:** Separate the React 19 frontend from the C#/.NET 10 REST API and centralize business data in PostgreSQL using Entity Framework Core. Use TanStack Query for data fetching and caching, Zustand for state management and Zod for form validation. Protect endpoints with JWT authentication and role-based permissions, and hash passwords with BCrypt.NET. Generate PDFs in the API with QuestPDF and connect order and inventory management to the customer-facing web catalog.

**Outcome:** The system keeps inventory up to date and saves approximately 15 minutes per order entered, according to the client’s estimate. It brings together monthly sales KPIs, best- and lowest-selling product rankings, profit margins and estimated sales for the month. Expiry alerts and stock information help prevent product losses and overbuying. It also keeps the product catalog on the customer-facing website up to date in real time.

**Evidence:** Technology stack checked against dependency manifests and code in the backoffice and API repositories. The approximately 15 minutes saved per order is a client estimate for the integrated catalog and management system workflow, not two separate savings.

Stack: C#, React 19, .NET 10, PostgreSQL, TypeScript, Vite, Entity Framework Core, Npgsql, QuestPDF, JWT, BCrypt.NET, TanStack Query, Zustand, React Router, React Hook Form, Zod, Recharts, Tailwind CSS, Docker, Vitest, xUnit

### Ratio · Construction management for Espina

Full Stack contributor to Ratio for Espina, working with engineer Luis Terzano. Delivered the complete Gantt chart module, security improvements, audit logging, Excel workflows and installers, and modernized the WPF interface and visual identity.

Contact me to evaluate the software. I provide installers for the API on Windows or Linux servers and for the Windows desktop client.

[Ratio · Construction management for Espina](https://rodrigosuarez.vercel.app/en#ratio-espina)

**Challenge:** Espina needed construction management software adapted to Uruguay’s local context, including construction-sector social contributions (leyes sociales). Departments relied on multiple Excel spreadsheets that were difficult to use and understand and did not support effective collaboration. The challenge also includes reducing fragmented information, repeated data entry and conflicting versions.

**My role:** Full Stack contributor working with engineer Luis Terzano. Implemented the complete Gantt chart module, including scheduling logic, the API and the WPF interface. Also developed audit logging, security and permission improvements, Excel import and export, and Inno Setup installers. Modernized screens, navigation, Fluent styling, icons, visual identity and reusable components.

**Technical decisions:** Link planning to the active budget and allocate costs proportionally across selected days. Separate pending changes from saved data used by charts, totals and exports. Include permissions, filters and consistency warnings. Amounts are planned costs, not actual receipts or payments. Added endpoint authentication, role-based permissions, login rate limiting and tracing for access and critical operations; centralized styles/icons and improved installation and updates.

**Outcome:** The complete Gantt chart module is in use for construction scheduling and reviewing resources and planned costs, both monthly and cumulative. It identifies unscheduled work items, shows how much of the budget has been scheduled, and supports Excel export and printing to paper or PDF. Permissions and auditing were strengthened across the client and API, and the interface was made consistent throughout the system.

**Evidence:** Contributions checked against Rodrigo's commits and local client/API code, including Gantt and detalles-ui branches. Gantt chart usage confirmed by Rodrigo. Company configuration is planned, not yet implemented. No quantified impact metrics.

Stack: WPF, C#, .NET 8, MongoDB, API, Windows Server, Linux

### Mayorista Javier Customer Catalog (PWA)

Mayorista Javier’s customer website combines an up-to-date catalog and WhatsApp orders with contact information, directions, a buying guide and FAQs. The PWA integrates data from the business management system.

[Mayorista Javier Customer Catalog (PWA)](https://rodrigosuarez.vercel.app/en#catalogo-mayorista-javier) · [Web](https://mayoristajavier.vercel.app/)

**Challenge:** The business did not have a customer-facing catalog where customers could browse available products and prices.

**My role:** Built the PWA and integrated it with the business management system to display information updated in real time. Implemented the catalog and order preparation flow, along with contact information, directions, a buying guide and FAQs.

**Technical decisions:** Connect the catalog to the business management system and deliver a PWA that adapts to different devices. Let customers prepare an order online and send it as a WhatsApp message that staff can copy and paste into their system. This workflow allows staff to record the order and generate a print-ready PDF in under 10 seconds, as confirmed by Rodrigo. Keep contact details, directions, buying instructions and FAQs in a section accessible from the catalog to guide customers through the ordering process.

**Outcome:** Customers can browse the product catalog, prepare an order and send it through WhatsApp. The business receives a message ready to copy and paste into its system to record the order and generate a print-ready PDF. The client’s estimate of approximately 15 minutes saved per order applies to this integrated workflow; it is not an additional saving beyond the management system. The website also brings together contact options, the store location and guidance on arranging collection or delivery.

**Evidence:** Integration and technology stack checked against the repositories. Rodrigo confirmed that entering the order and generating the PDF takes under 10 seconds. The approximately 15 minutes saved per order is a client estimate for the integrated workflow, not an additional saving.

Stack: Next.js, React 19, TypeScript, Tailwind CSS, PWA

### Meeting Room Booking — Jaume & Sere

Final-year project for managing meeting rooms, locations and bookings. Corporate sign-in uses Active Directory, while Microsoft Graph handles Outlook invitations and notifications. Built with .NET and React.

[Meeting Room Booking — Jaume & Sere](https://rodrigosuarez.vercel.app/en#jaume-sere)

**Challenge:** Meeting room bookings were kept on paper. Handwriting was sometimes difficult to read, and bookings were not always canceled, leaving rooms incorrectly marked as occupied. Some participants also missed meeting details or were unaware that a meeting had been canceled.

**My role:** Contributed to requirements analysis and team development of the meeting room booking system for Jaume & Sere as a final-year project.

**Technical decisions:** Replace the paper agenda with a central calendar supporting bookings and cancellations. Integrate Active Directory for corporate access and Outlook through Microsoft Graph to send invitations and email notifications to all participants, including cancellation notices, using a .NET API and React frontend.

**Outcome:** The organization reported that bookings incorrectly blocking meeting rooms were eliminated. Email invitations and notifications also resolved communication gaps: all participants receive meeting invitations and cancellation notices.

**Evidence:** Outcome reported by the organization.

Stack: C#, .NET 8, Entity Framework Core, MS SQL Server Express, Active Directory (Windows Server), Microsoft Graph / Outlook, React, Vite, TypeScript, TailwindCSS, Azure

### FyV Traslados

Business website presenting transport services, the booking process and WhatsApp inquiries. Built with Astro and Tailwind CSS, with service sections and technical SEO.

[FyV Traslados](https://rodrigosuarez.vercel.app/en#fyv-traslados) · [Web](https://fyv-traslados.vercel.app/)

**Challenge:** FyV wanted greater visibility and a single place to explain its work, services and booking process.

**My role:** Design and development of the FyV Traslados business website based on the company’s needs.

**Technical decisions:** Organize services, process, pricing and contact in an Astro website with reusable components. Add WhatsApp inquiries, responsive layouts and technical SEO with a sitemap and structured data.

**Outcome:** The company has a published website bringing its offering together and making it easier to share service information and contact the team through WhatsApp.

**Evidence:** Delivered: a published website with services, process and contact information in one place.

Stack: Astro, TypeScript, Tailwind CSS, Vercel

### PimPollo · Customer website and product catalog

PimPollo's customer site is under construction, with a mobile-first landing page, shop details and WhatsApp contact. Full Stack development spans Astro, React 19 admin and a .NET 10/PostgreSQL API; no online payments.

[PimPollo · Customer website and product catalog](https://rodrigosuarez.vercel.app/en#pimpollo) · [Web](https://pimpollo-web.vercel.app/)

**Challenge:** PimPollo needed a fast, mobile-accessible and discoverable website combining shop details, products and promotions without online payments, alongside a secure admin interface to manage products, prices and settings.

**My role:** Full Stack development of the Astro public site, React 19/TypeScript admin panel, C#/.NET 10 API and PostgreSQL/Railway/Vercel integration, including responsive design, business settings, security, CI and tests.

**Technical decisions:** Separate public website, admin and API concerns. Render contact details and opening hours in indexable HTML synchronized with API settings, plus social metadata and no-JavaScript navigation. Protect management operations with authentication, secure cookies, CSRF, token rotation and login throttling. Validate contracts with real PostgreSQL and automated browser tests.

**Outcome:** Live PimPollo landing page with brand identity, WhatsApp contact, opening hours, shop information and FAQs. Working admin panel and API for products, promotions and business settings. Technical SEO, social preview and automated accessibility/navigation checks are implemented; the interactive public catalog and full order-preparation flow remain under construction.

**Evidence:** Cross-checked against PimPollo: web/src/pages/index.astro serves the landing, web/src/pages/_home.astro contains a preliminary catalog, and admin/ and api/ manage business data. GitHub Actions covers PostgreSQL, browser, performance and navigation checks. CI lab results are not presented as universal production guarantees.

Stack: Astro, React 19, Vite, TypeScript, C#, .NET 10, PostgreSQL, Entity Framework Core, Docker, Railway, Vercel

## Contact

- [email](mailto:rodrisua1@hotmail.com)
- [whatsapp](https://wa.me/59894974540)
- [github](https://github.com/RodrigoSuarez47)
- [linkedin](https://www.linkedin.com/in/rodrigogabrielsuarez/)
