Portfolio

Todo lo que está en producción.

21 productos, cada uno con las plataformas en las que funciona, el stack que lo sostiene y los sistemas con los que habla. El enlace abre el producto en vivo.

Stack

Con qué construyo de verdad.

No es la lista de todo lo que he abierto una vez. Son las herramientas que sostienen sistemas en producción, agrupadas por aquello para lo que sirven.

Lenguajes

  • Swift
  • Kotlin
  • TypeScript
  • JavaScript
  • Python
  • Java
  • Objective C
  • SQL

Móvil

  • SwiftUI
  • UIKit
  • Jetpack Compose
  • Wear OS
  • Core Data
  • GRDB
  • Quioscos Android
  • TestFlight

Backend

  • NestJS
  • Node.js
  • Express
  • Fastify
  • FastAPI
  • Prisma
  • REST
  • GraphQL
  • BullMQ

Datos

  • PostgreSQL
  • Cloud SQL
  • Firestore
  • Redis
  • MongoDB
  • MySQL
  • Almacén de datos
  • PgBouncer

Nube

  • Google Cloud
  • Cloud Run
  • Firebase
  • Docker
  • Kubernetes
  • Vercel
  • Cloudflare
  • Secret Manager

Inteligencia artificial

  • LLM multiproveedor
  • RAG
  • OCR Cloud Vision
  • Previsión
  • TensorFlow
  • PyTorch
  • Core ML
  • Ollama

Web

  • Next.js
  • React
  • TanStack Query
  • TailwindCSS
  • Vite
  • Three.js
  • Generadores estáticos
  • Web Components

Seguridad

  • OWASP
  • Burp Suite
  • Nmap
  • Wireshark
  • Metasploit
  • Kali Linux
  • Splunk
  • Auditoría de permisos

Cómo está construido

  1. Tipos estrictos

    TypeScript en modo estricto sin atajos, comprobación de concurrencia de Swift 6, esquemas validados en cada frontera.

  2. Permiso por defecto

    Cada ruta declara el permiso que necesita y un script de integración continua hace fallar la compilación cuando falta uno.

  3. Offline first

    Una base local y una cola de sincronización idempotente, porque una caja no puede pararse cuando se cae la línea.

  4. Un solo modelo de datos

    Los productos se hablan mediante contratos firmados en vez de exportaciones, así la misma cifra nunca tiene dos versiones.

  5. Pensado para siete idiomas

    Los textos de interfaz viven fuera del marcado, con un repliegue que mantiene la página legible cuando falta una clave.