Rodrigo Saavedra Disponible para trabajo remoto

Viña del Mar, Chile. Disponible en remoto para Chile, Latinoamérica y la Unión Europea.

Rodrigo Saavedra Ábalos

Desarrollo web full-stack, apps Android y soporte TI.

Resuelvo problemas de tecnología desde 2002, en mesas de ayuda, terreno y operaciones. Hoy uso esa experiencia para construir sitios, sistemas con base de datos y aplicaciones móviles fáciles de usar y de mantener.

Portada, Diario El Faro
Portada del Diario El Faro: noticia destacada sobre el borde costero de Viña del Mar y lista de últimas noticias
Pantalla Descubrir de la app Flama con un perfil y navegación inferior
Experiencia en TI
Desde 2002, en 9 organizaciones
Certificación
Android, SENCE, 478 horas
Código público
13 repositorios en GitHub
Permiso de trabajo
Chile y Unión Europea

En qué puedo ayudarte

Para empresas, emprendimientos e instituciones que necesitan una solución concreta, desde la idea hasta que queda funcionando y documentada.

Sitios y sistemas web

  • Sitios informativos y portales de contenido administrables
  • Sistemas con usuarios, formularios y base de datos MySQL
  • Interfaces modernas en React y TypeScript
  • Diseño adaptable a celular, tablet y escritorio

Ejemplos: Diario El Faro y Flama

Aplicaciones Android

  • Apps nativas en Kotlin con arquitectura MVVM
  • Interfaces con Jetpack Compose o vistas XML
  • Tareas en segundo plano sin bloquear la app
  • Empaquetado de sitios web como app (TWA)

Ejemplos: 5 apps publicadas en GitHub

Soporte TI y automatización

  • Mesa de ayuda nivel 1 y 2, remota y en terreno
  • Monitoreo de equipos en red con paneles a medida
  • Encendido remoto y diagnóstico automático
  • Impresoras, proyectores y pizarras interactivas
  • Documentación técnica y cotizaciones formales

Ejemplo: panel de 14 pizarras en un colegio

Proyectos

Las capturas son de las aplicaciones en ejecución y todo el código público se puede revisar en GitHub.

Web full-stack

Diario El Faro

Portal de noticias para Viña del Mar

Diario digital con secciones, buscador, comentarios, registro de lectores y panel de redacción. Lo construí en cuatro etapas, desde HTML estático hasta una aplicación PHP con arquitectura MVC y base de datos MySQL.

PHP 8MySQLPDOMVCBulmaJavaScriptComposer
9tablas relacionadas, con vista, triggers y evento programado
10procedimientos almacenados
17clases de modelo y repositorio
4etapas, cada una en su repositorio
  • Seguridad desde el diseñoSentencias preparadas en todas las consultas, credenciales en .env, usuario de base de datos con permiso solo de ejecución y lista blanca de HTML para el cuerpo de los artículos.
  • Funciona en cualquier hostingSi el servidor no permite procedimientos almacenados, la aplicación lo detecta (error 1305) y usa la consulta equivalente sin que el lector lo note.
  • Pensado para el lectorNavegación reorganizada, portada por bloques, comentarios con validación accesible y formularios que muestran el estado de cada campo.
models/Conexion.phpPHP
public function llamarProcedimiento($nombre, array $entrada = [])
{
    // Solo se aceptan nombres con prefijo sp_ (lista blanca)
    if (!preg_match('/^sp_[a-z0-9_]+$/', $nombre)) {
        throw new InvalidArgumentException("No válido: $nombre");
    }
    $sql = "CALL " . $nombre . "(" . $marcadores . ")";
    try {
        $sentencia = $this->preparar($sql, $entrada);
    } catch (PDOException $ex) {
        // 1305: el hosting no tiene el procedimiento
        if ($ex->errorInfo[1] === self::ERROR_PROCEDIMIENTO_INEXISTENTE) {
            throw new ProcedimientoNoDisponible(...);
        }
        throw $ex;
    }
}

Cómo evolucionó

  1. Sitio estático en HTML5 y CSSsitio-el-faro
  2. Interactividad con JavaScriptdiario-el-faro
  3. Framework Bulma y accesibilidad-Uso-de-Frameworks
  4. PHP MVC con MySQLDiario_el_faro_final
Front-end

Flama

Aplicación de citas, de la bienvenida al pago

Más de 30 pantallas en React y TypeScript: registro, perfiles, descubrir y hacer match, chat, eventos, planes de membresía y moderación. Cada pantalla es un componente y un estado central decide qué se muestra.

React 18TypeScriptViteTailwind 4ZustandFramer MotionRecharts
Flame_Plataforma_de_Citas_2
Pantalla de bienvenida de Flama
Bienvenida
Pantalla Descubrir con tarjeta de perfil
Descubrir
Pantalla de planes Plus y Gold
Planes de membresía
Pantalla de perfil con estadísticas y funciones
Perfil y funciones
40componentes de interfaz
7.800+líneas de TypeScript y JSX
30+pantallas navegables
0errores de tipos con tsc --noEmit
Móvil

Apps Android

Cinco apps nativas, de Java a Jetpack Compose

Un recorrido por la plataforma: Intents y layouts adaptativos en Java, listas con RecyclerView, navegación entre fragmentos, ViewModel con LiveData y tareas en segundo plano con corrutinas. Respaldado por la certificación SENCE de 478 horas.

  • Catálogo de productosproyecto-android-mvvm

    Splash, lista, detalle y formulario con Navigation y un ViewModel que sobrevive a la rotación.

  • Lista de tareaslista-tareas-mvvm

    Interfaz declarativa en Jetpack Compose con el estado separado de la vista.

  • Descarga simuladaDescargaSimulada

    Progreso en vivo con corrutinas, sin congelar la interfaz.

  • Designador de tareasEntorno_Kotlin

    Lista dinámica con RecyclerView y tema claro y oscuro.

  • About Meaboutme

    Tarjeta profesional en Java con accesos directos a llamada y correo mediante Intents.

viewmodel/ProductViewModel.ktKotlin
class ProductViewModel : ViewModel() {

    private val _products = MutableLiveData<List<Product>>()
    val products: LiveData<List<Product>> get() = _products

    private val _isLoading = MutableLiveData<Boolean>()
    val isLoading: LiveData<Boolean> get() = _isLoading

    fun loadProducts() {
        viewModelScope.launch {
            _isLoading.value = true
            // filtrar y transformar antes de exponer
            _products.value = catalogo
                .filter { it.price > 0 }
                .map { it.copy(name = it.name.uppercase()) }
            _isLoading.value = false
        }
    }
}
Infraestructura

Panel de pizarras

Monitoreo en red para un colegio, en Node.js

Herramienta interna que desarrollé en mi trabajo actual: vigila las 14 pizarras interactivas de las salas 16 a 29, las enciende a distancia y diagnostica fallas sin recorrer sala por sala.

Salas 16 a 29, LAN 192.168.0.0/24en línea apagada
11 de 14 en línea. Toca una sala apagada para encenderla.
  • Escaneo de redPing y tabla ARP para saber qué pizarra está en línea y cuál no.
  • Encendido remotoWake-on-LAN para dejar las salas listas antes de que empiecen las clases.
  • Identificación por MACCada equipo se reconoce aunque cambie su dirección IP.
  • Diagnóstico y acceso remotoIntegración con Chrome Remote Desktop para resolver problemas a distancia.

Proyecto interno con código privado. El panel de arriba es una simulación del funcionamiento.

Cómo trabajo

Por etapas, con entregas que se pueden revisar y probar.

  1. Entender el problema

    Defino los requisitos con quien usará el sistema y los dejo por escrito.

  2. Diseñar la base

    Modelo de datos, arquitectura y pantallas antes de escribir la primera línea.

  3. Construir por etapas

    Cada entrega funciona por sí sola y queda registrada en Git.

  4. Publicar y documentar

    Despliegue, guía de instalación y notas de seguridad para quien lo mantenga.

Experiencia

Empecé en la mesa de ayuda de Olivetti en 2002 y pasé por terreno, supervisión y centros de asistencia en empresas como ENTEL, Sercompe y Hites. Hoy sumo el desarrollo de software a esa base.

Trayectoria en TI

  1. 2026 – hoy
    Asistente de soporte informáticoEstablecimiento educacional, Región de Valparaíso

    Tecnología de las salas: pizarras interactivas, computadores, proyectores e impresoras en red. Desarrollé el panel de monitoreo de 14 pizarras con encendido remoto.

  2. 2022
    Encargado del área de simulación de laboratorios de SaludInstituto Profesional Santo Tomás, Gran Santiago
  3. 2021 – 2022
    Soporte técnico TIHites S.A., Gran Santiago
  4. 2013
    Atención al cliente, campaña corporativa Aguas AndinasDTS, Gran Santiago
  5. 2011 – 2013
    Analista del centro de asistencia de TISelkis Soluciones, Región Metropolitana
  6. 2009 – 2011
    Atención al cliente, facturación y reclamos, campaña Ono EspañaUnisono Business Solutions Chile
  7. 2008 – 2009
    Supervisor en terreno, Help Desk N2Sercompe, soporte técnico e instalaciones
  8. 2004 – 2008
    Coordinador en terreno N2ENTEL, Santiago
  9. 2003 – 2004
    Técnico en terreno y administrador de políticas localesOlivetti Chile, aplicaciones corporativas y bancarias
  10. 2002 – 2003
    Técnico de mesa de ayuda, soporte remoto N1Olivetti Chile (Soluciones Integrales)

Formación

Certificación SENCE, 2026 Desarrollo de Aplicaciones Móviles Android
478 horasAprobadoVerificable en SENCE
Desarrollo de software Instituto Profesional AIEP, en curso

Desarrollo web full-stack, aplicaciones móviles, programación segura (OWASP) y metodologías ágiles.

Español nativo Inglés intermedio

Habilidades

Cada una con un lugar donde verla aplicada.

ÁreaTecnologíasDónde verlo
Back-endPHP 8, MVC, PDO, Composer, variables de entornoDiario El Faro
Bases de datosMySQL, procedimientos almacenados, triggers, vistas, eventosDiario El Faro
Front-endReact, TypeScript, Vite, Tailwind CSS, Zustand, Framer MotionFlama
Web baseHTML5 semántico, CSS Grid, Bulma, JavaScript, accesibilidadEl Faro, etapas 1 a 3
MóvilKotlin, Java, Jetpack Compose, ViewModel, LiveData, corrutinas5 apps Android y certificación SENCE
SeguridadSentencias preparadas, lista blanca de HTML, mínimo privilegio, STRIDE, OWASPDiario El Faro
Soporte TIMesa de ayuda N1 y N2, soporte remoto y en terreno, supervisión técnica, políticas localesOlivetti, ENTEL, Sercompe, Selkis, Hites
InfraestructuraNode.js, redes LAN, Wake-on-LAN, Cloudflare, Git y GitHubPanel de pizarras

Conversemos

Cuéntame qué necesitas: un sitio, un sistema con base de datos, una app o mejorar la tecnología de tu organización.

Trabajo en remoto desde Chile. Tengo ciudadanía chilena y española, con permiso para trabajar en la Unión Europea.

Correorodrigoelias25@gmail.comEscribir
Teléfono y WhatsApp+56 9 3107 5852WhatsApp
LinkedInrodrigo-saavedra-abalosVer perfil
GitHubrodrigosaavedraab2026-delVer código