RSRodrigo Saavedra Disponible para proyectos
Viña del Mar · Chile

Software que funciona de verdad

Rodrigo Saavedra Ábalos · Desarrollador full-stack y Android · Soporte TI y ciberseguridad

Llevo desde 2002 resolviendo problemas de tecnología en mesas de ayuda, terreno y operaciones. Hoy uso esa experiencia para construir sitios web, sistemas con base de datos y apps móviles pensados para quien los usa y quien los mantiene.

2002primer cargo en soporte TI
9organizaciones en mi trayectoria
13repositorios públicos
14pizarras monitoreadas en red
elfaro · 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
Servicios

En qué puedo ayudarte

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

Web

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
Evidencia: Diario El Faro · Flama
Móvil

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)
Evidencia: 5 apps en GitHub
Infraestructura

Soporte TI y automatización

  • Mesa de ayuda nivel 1 y 2, remota y en terreno
  • Monitoreo de equipos en red local con paneles a medida
  • Encendido remoto y diagnóstico automático de equipos
  • Impresoras, proyectores y pizarras interactivas
  • Documentación técnica y cotizaciones formales
Evidencia: panel de 14 pizarras · desde 2002 en TI
Casos de estudio

Proyectos reales, código abierto

Las capturas son de las aplicaciones corriendo. Todo el código se puede revisar en GitHub.

Caso 01 · Web full-stack

Diario El Faro

Portal de noticias para Viña del Mar

Un 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 para consultas e inserciones
17clases de modelo y repositorio
4etapas de evolución, 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 una lista blanca de HTML para el cuerpo de los artículos.
  • Listo para cualquier hostingSi el servidor no permite procedimientos almacenados, la aplicación lo detecta (error 1305) y usa la consulta preparada equivalente sin que el usuario lo note.
  • Usabilidad medidaNavegació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;
    }
}
Evolución en GitHub
Etapa 1Sitio estático en HTML5 y CSSsitio-el-faro ↗
Etapa 2 · sep 2026Interactividad con JavaScriptdiario-el-faro ↗
Etapa 3 · sep 2026Framework Bulma y accesibilidad-Uso-de-Frameworks ↗
Etapa 4 · oct 2026PHP MVC con MySQLDiario_el_faro_final ↗
Caso 02 · Front-end

Flama

Aplicación de citas, de la bienvenida al pago

Más de 30 pantallas construidas 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
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: tsc --noEmit en el pipeline

Flame_Plataforma_de_Citas_2 ↗

Caso 03 · Móvil

Apps Android

Cinco apps nativas, de Java a Compose · certificación SENCE de 478 horas

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.

Catálogo de productos

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

proyecto-android-mvvm ↗

Lista de tareas

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

lista-tareas-mvvm ↗

Descarga simulada

Progreso en vivo con corrutinas, sin congelar la interfaz.

DescargaSimulada ↗

Designador de tareas

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

Entorno_Kotlin ↗

About Me

Tarjeta profesional en Java con diseño horizontal y accesos directos a llamada y correo mediante Intents.

aboutme ↗
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
        }
    }
}
Caso 04 · Infraestructura

Panel de pizarras

Monitoreo en red para un colegio · Node.js

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

LAN 192.168.0.0/2414 equipos · identificados por MAC
En línea (ping/ARP)Apagada · encender con Wake-on-LAN
  • Escaneo de redPing y tabla ARP para saber qué pizarra está en línea y cuál no.
  • Encendido remotoWake-on-LAN para preparar las salas antes de que empiecen las clases.
  • Identificación por MACCada equipo se reconoce aunque cambie su IP.
  • Diagnóstico automático y acceso remotoIntegración con Chrome Remote Desktop para resolver problemas a distancia.

Proyecto interno, con código no público. El estado de las salas que se muestra arriba es ilustrativo.

Cómo trabajo

Por etapas, con entregas que se pueden revisar

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.

Trayectoria

Más de 20 años en tecnología

Empecé en la mesa de ayuda de Olivetti en 2002. 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.

2002 – actualidad

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)
En curso

Desarrollo de software

Instituto Profesional AIEP · online

PRO301Taller de Aplicaciones para Internet
PRO203Programación Segura: STRIDE y OWASP Top 10
AndroidKotlin, Java, ciclo de vida y MVVM
Certificación Desarrollo de Aplicaciones Móviles Android Trainee SENCE · Programa Reinvéntate Talento Digital · nov 2025 – mar 2026
478 horas99,7 % asistenciaAprobado
ID: B0365AAE-85C4-44CE-A977-786746EA1213
ÁgilScrum, XP y Kanban
Habilidades

Cada habilidad, con evidencia

Á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–3
MóvilKotlin, Java, Jetpack Compose, ViewModel, LiveData, corrutinas5 apps Android · certificación SENCE
SeguridadSentencias preparadas, lista blanca de HTML, mínimo privilegio, STRIDE, OWASPEl Faro · PRO203
Soporte y operaciones 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

¿Tienes un proyecto en mente?

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