Saltar al contenido
</>
ospinajuanp
Juan Pablo Ospina Restrepo - Desarrollador Fullstack - ospinajuanp
Disponible para nuevas oportunidades

Hola, soy

Juan Pablo Ospina Restrepo

Desarrollador Fullstack con 6+ años de experiencia en Enterdev (React, Node.js, TypeScript, gRPC, .NET, Agility RPA). Actualmente enfocado 100% en construir proyectos open source que demuestran mi forma de resolver problemas: Zentral, Macroboard y ospinajuanp-reset-css en npm.

@ospinajuanpnpm v3.1.0📍 Itagüí, Antioquia, Colombia
Sobre mí

Ingeniería con propósito, código que se audita

Juan Pablo Ospina Restrepo · @ospinajuanp · Itagüí, Antioquia, Colombia

Soy Desarrollador Fullstack con 6+ años de experiencia en Enterdev, donde evolucioné desde automatización RPA hasta arquitectura full-stack de alto rendimiento. Mi trabajo incluyó tableros administrativos con React/TypeScript, servicios backend sobre gRPC (Architect Server), y software de escritorio con .NET.

Actualmente estoy enfocado 100% en construir proyectos open source que documentan mi aprendizaje: Zentral (Micro-SaaS multi-tenant con MongoDB, Edge proxy y pipeline OCR + Gemini 2.0 Flash), ospinajuanp-macroboard (controlador OBS para streamers en monorepo TypeScript), ospinajuanp-reset-css (librería CSS publicada en npm con 10 temas), y mi blog técnico ospinajuanp-blogpost.

Diferenciado por usar la IA como copiloto estratégico: refactorización masiva, actualización de dependencias y prototipado rápido. Documento todo en mi blog y en el código: prefiero una decisión de diseño bien explicada a una línea mágica.

Fullstack con fondo RPA

Llevo 6+ años en Enterdev: desde automatizar procesos con Agility RPA hasta construir plataformas con React, Node.js, TypeScript y gRPC.

Aprendizaje en público

Documento lo que aprendo en mi blog y lo demuestro con código abierto: cada proyecto es un experimento reproducible y auditabe.

IA como copiloto estratégico

Refactorización masiva, actualización de dependencias y creación de librerías UI: uso la IA para acelerar la entrega sin perder calidad.

Stack Tecnológico

Habilidades y Tecnologías

Las herramientas que uso para construir soluciones robustas y mantenibles

Backend & Data

Servidor, base de datos y APIs

Node.jsPythonC# / .NETMongoDBMongooseSQL ServerPostgreSQLSQLitegRPC (Architect)REST & WebSocketsEdge MiddlewareJWT (jose)AES-256

Frontend & UI

Interfaces modernas y accesibles

Next.js (App Router)React 19TypeScriptJavaScript ES2022Tailwind CSS v4HTML5 / CSS3

Tooling & QA

Build, testing y empaquetado

GitViteVS CodeDockerpnpmVitestInno SetupWindows / C#

Automatización & IA

RPA e integraciones inteligentes

Agility RPA PlatformGemini 2.0 FlashOCR.spaceGmail API (OAuth2)SAP / AS400Azure DevOps (SCRUM)
Proyecto Destacado · Featured Case Study

Zentral — Micro-SaaS Financiero

Caso de estudio de ingeniería: arquitectura multi-tenant, OCR con IA híbrida y mutaciones atómicas

Z

Caso de Estudio de Ingeniería

Next.js 16TypeScriptMongoDBjose JWTGemini 2.0 FlashOCR.spaceTailwind v4
● En desarrollo activo~87% completo · 2 módulos activos
⚠El Problema

La conciliación bancaria manual es lenta, propensa a errores humanos y carece de mecanismos de seguridad frente a condiciones de carrera cuando múltiples usuarios procesan datos simultáneamente. Las soluciones existentes no ofrecen aislamiento estricto entre organizaciones ni recuperación inteligente ante fallos de OCR clásico en imágenes de baja calidad.

✓La Solución

Zentral es un SaaS Multi-tenant construido sobre Next.js (App Router) que implementa aislamiento lógico estricto en MongoDB. Cada organización opera en su propio workspace, gobernado por un middleware criptográfico en el Edge que valida cookies httpOnly y bloquea accesos cruzados. Además, integra un pipeline de extracción de datos financieros con un sistema de fallback híbrido entre OCR clásico e inteligencia artificial (Gemini 2.0 Flash).

  • ✓Multi-tenancy real con headers inyectados por Edge
  • ✓OCR + Gemini con conmutación en caliente
  • ✓Mutaciones atómicas con $expr (sin race conditions)
  • ✓19 feature toggles con bypass de superadmin
⚙Retos de Ingeniería

Aislamiento Multi-tenant (Edge Middleware)

Middleware en el Edge de Next.js que, usando la librería criptográfica jose, valida cookies httpOnly firmadas. Inyecta el header seguro x-workspace-id en cada request, garantizando que ninguna organización acceda a datos de otra. La cabecera nunca acepta el ID del cliente; siempre viene del proxy validado.

// proxy.ts — Edge Middleware Multi-tenant
import { jwtVerify } from "jose";

export async function middleware(request) {
  const token = request.cookies.get("session")?.value;
  if (!token) return NextResponse.redirect("/login");

  const { payload } = await jwtVerify(
    token,
    new TextEncoder().encode(process.env.JWT_SECRET)
  );

  const headers = new Headers(request.headers);
  headers.set("x-workspace-id", payload.workspaceId);
  headers.set("x-user-role", payload.role);

  return NextResponse.next({ request: { headers } });
}

Mutaciones Atómicas (Concurrencia)

Uso de findOneAndUpdate con expresiones $expr para prevenir race conditions en el consumo de cuotas de APIs de terceros. La validación y el incremento ocurren en una única operación atómica a nivel de motor de BD.

// Atomic quota consumption — prevents race conditions
await ModuleSubscription.findOneAndUpdate(
  {
    workspace: workspaceId,
    moduleKey,
    status: "active",
    $expr: { $lt: ["$usedQuota", "$monthlyQuota"] }
  },
  { $inc: { usedQuota: 1 } },
  { new: true, projection: { _id: 1 } }
);

IA Resiliente (Fallback Híbrido)

Pipeline de extracción con conmutación en caliente: primero intenta OCR clásico (OCR.space); si la certeza es baja o el servicio falla, conmuta automáticamente a Gemini 2.0 Flash procesando el documento como buffer Base64 en memoria, sin persistir archivos en disco.

// Hybrid AI pipeline with hot fallback
async function extractFinancialData(buffer: Buffer) {
  // 1) OCR clásico (rápido y económico)
  const ocr = await ocrSpaceParse(buffer);
  if (ocr.certainty > 0.85) return ocr.data;

  // 2) Fallback a Gemini 2.0 Flash (en memoria)
  const base64 = buffer.toString("base64");
  const gemini = new GoogleGenerativeAI(process.env.GEMINI_KEY);
  const model = gemini.getGenerativeModel({
    model: "gemini-2.0-flash",
    generationConfig: { responseMimeType: "application/json" }
  });

  const result = await model.generateContent([
    "Extract financial data as JSON.",
    { inlineData: { mimeType: "image/png", data: base64 } }
  ]);

  return JSON.parse(result.response.text());
}
🗃Diagrama de Arquitectura
Cliente
Browser
Edge Middleware
jose + Next.js
MongoDB
Aislamiento por workspace
IA Pipeline
OCR → Gemini 2.0

Flujo de request multi-tenant · el workspace ID nunca viaja del cliente

📊Métricas de impacto
−450
Líneas duplicadas eliminadas
DRY con usePaginatedData
0
Race conditions
Mutaciones atómicas
19
Feature toggles
Cacheados 10s
2/5
Módulos activos
TransferCheck + Personal Finance
Proyectos

Lo que he construido

9 proyectos públicos — SaaS, open source, web apps, herramientas y librerías

Z
⭐ Destacado

Zentral

● Activo

Micro-SaaS financiero multi-tenant

Plataforma B2B con aislamiento criptográfico en el Edge, mutaciones atómicas en MongoDB y pipeline híbrido OCR + Gemini 2.0 Flash para conciliación bancaria. ~87% completo, 2 módulos activos (TransferCheck, Personal Finance).

Next.js 16React 19TypeScriptMongoDB+6
Micro-SaaSDemo →
o
⭐ Destacado

ospinajuanp-macroboard

● Activo

Control virtual OBS para streamers

Monorepo que transforma cualquier dispositivo móvil en un Stream Deck para OBS Studio. WebSockets bidireccionales, PWA táctil, drag & drop, i18n ES/EN, instalador Windows (.exe + Inno Setup).

Next.js 14FastifyWebSocketsOBS WebSocket+5
Open SourceDemo →
Captura de Calcuhub

Calcuhub

● Activo

33 calculadoras gratuitas en 3 idiomas

Plataforma con calculadoras de salud, finanzas, fechas y utilidades. i18n custom (es/en/pt), 5 temas con CSS variables, JSON-LD para SEO y SSG de 33 rutas con generateStaticParams.

Next.js 16TypeScriptCSS Variableslucide-react+2
Web AppDemo →
o

ospinajuanp-reset-css

● Activo

Reset CSS moderno con 10 temas — npm

Librería npm publicada (v3.1.0). Reset CSS modular inspirado en modern-normalize con 10 temas, exports map para tree-shaking, plugin PostCSS, hook React, JS API y CLI multiplataforma.

SCSSTypeScriptReact 19PostCSS+1
o

ospinajuanp-blogpost

● Activo

Blog personal de aprendizaje en público

Blog de crecimiento tecnológico: apuntes del SENA, resúmenes de libros, reflexiones y artículos técnicos. Markdown con frontmatter validado por Zod, sanitización XSS con DOMPurify y tests con Vitest.

Next.js 16React 19Tailwind v4Markdown+3
Web AppDemo →
o
⭐ Destacado

ospinajuanp-ingles

● Activo

Repaso espaciado de 1.000 verbos en inglés

Web app bilingüe para aprender 1.000 verbos en inglés con sus seis conjugaciones, oraciones contextualizadas por pronombre y tarjetas 3D con algoritmo SM-2. Incluye audio on-demand del Dictionary API, cuatro temas visuales DaisyUI, búsqueda con filtros por categoría y sincronización silenciosa multi-dispositivo vía QR con persistencia en localStorage y MongoDB Atlas.

Next.js 15React 19TypeScriptTailwind v4+6
Web AppDemo →
Captura de WebThemeGenerator

WebThemeGenerator

● Activo

Genera paletas CSS desde un color base

Herramienta client-side que genera variables CSS armoniosas (HSL) a partir de un color base. 3 niveles de intensidad, 3 modos de preview (light/dark/contrast) y exportación al portapapeles.

React 19Vite 6TypeScriptCSS Variables+1
R

Registro de Niños

● Activo

Búsqueda de entregas para niños por documento

Aplicación fullstack para consultar entregas de paquetes por número de documento de niños, con dashboard administrativo para CRUD, importación drag-and-drop de Excel/CSV y bitácora de consultas. Datos en Upstash Redis, autenticación con JWT (jose + bcrypt), validación con Zod y Server Actions; UI con CSS Modules y Zustand para caché de cliente. Pipeline CI en GitHub Actions (lint, test con Vitest, build) y cobertura mínima del 70 %; licencia PolyForm Noncommercial.

Next.js 16React 19TypeScriptUpstash Redis+10
Web App
Captura de PorfolioVisualZuleta

PorfolioVisualZuleta

● Pausado

Portafolio visual estático (legacy)

Componentes de layout frontend y diseños interactivos publicados como página estática. Mantenido como referencia histórica de la evolución del diseño.

HTMLCSSVite
Web AppDemo →
Experiencia y Formación

7+ años construyendo software empresarial

Desde automatización RPA hasta arquitectura full-stack con gRPC

Resumen profesional

Desarrollador Fullstack con experiencia en la construcción de software escalable de alto rendimiento y arquitectura compleja.

Desarrollo frontend de tableros administrativos, gráficos y herramientas para la gestión de una plataforma de RPA y servicios bajo protocolos gRPC (Architect Server). Sólido manejo del ecosistema React, Node.js y TypeScript, con capacidad para resolver retos técnicos desde la gestión de estados complejos en el Frontend hasta la optimización de servicios en el Backend.

Refactorización masiva de código y actualización de dependencias asistida por IA.
Creador y mantenedor de una librería de componentes UI para estandarización de diseño.
Experiencia en SCRUM con Azure DevOps en entornos Ubuntu/WSL.
Gestión de bases de datos MongoDB, SQL Server y SQLite.
Itagüí, Antioquia, Colombia💼 Medellín, Colombia🗣 Español (Nativo) · Inglés (Lectura técnica)

Experiencia profesional

Jun 2026 — Actual⏱ En curso📍 Remoto · Itagüí, Antioquia, Colombia

Software Developer (Open Source Focus)

Proyectos propios y Micro-SaaSActual

  • ▸Diseño y desarrollo de Zentral, plataforma Micro-SaaS multi-tenant con Next.js 16, MongoDB y pipeline OCR + Gemini AI.
  • ▸Mantenimiento de ospinajuanp-macroboard (monorepo TypeScript) con build pipeline .exe y publicador en npm.
  • ▸Publicación y mantenimiento de ospinajuanp-reset-css v3.1.0 con 10 temas y tree-shaking.
  • ▸Documentación del aprendizaje en ospinajuanp-blogpost (20+ artículos técnicos).
Next.js 16React 19TypeScriptMongoDBMongooseTailwind v4Gemini AIMonorepos
May 2025 — Abr 2026⏱ 1 año📍 Medellín, Colombia

Desarrollador Fullstack

Enterdev

  • ▸Análisis y diseño: evaluación de procesos de trabajo para el diseño de sistemas escalables y eficientes.
  • ▸Desarrollo fullstack: construcción de dashboards administrativos (React/TypeScript) para gestión de RPA y servicios backend bajo protocolos gRPC (Node.js / Architect Server).
  • ▸Mantenimiento y evolución de software de escritorio con .NET.
  • ▸Liderazgo técnico: coordinación de desarrolladores, documentación técnica y ejecución de pruebas de rendimiento.
  • ▸Innovación: optimización de código mediante IA (refactorización masiva) y creación de una librería de componentes UI para estandarizar el diseño.
ReactTypeScriptNode.jsgRPC.NETAzure DevOpsSCRUM
Mar 2023 — May 2025⏱ 2 años 2 meses📍 Medellín, Colombia

Formador Agility RPA

Enterdev

  • ▸Formación a profesionales en el uso de la herramienta Agility RPA para estandarizar y estructurar procesos internos de clientes.
  • ▸Optimización del tiempo de respuesta y aumento de eficiencia operativa en organizaciones cliente.
  • ▸Enseñanza práctica a desarrolladores sobre lenguajes y herramientas para maximizar la funcionalidad de Agility RPA.
Agility RPACapacitaciónAutomatización
Ago 2020 — Mar 2023⏱ 2 años 7 meses📍 Medellín, Colombia

Analista RPA

Enterdev

  • ▸Desarrollo de automatizaciones RPA con Agility para estandarizar y estructurar procesos internos de clientes.
  • ▸Lenguajes: JavaScript, C# y Python. Bases de datos: SQLite y SQL Server.
  • ▸Integración con SAP, AS400, APIs internas y herramientas ofimáticas (Web, Excel).
  • ▸Optimización de tiempos de respuesta y generación de valor en organizaciones cliente.
JavaScriptC#PythonSQLiteSQL ServerSAPAS400Agility RPA
Ago 2019 — Ago 2020⏱ 1 año📍 Medellín, Colombia

Auxiliar RPA

Enterdev

  • ▸Inicio en el desarrollo de automatizaciones RPA con Agility para clientes empresariales.
  • ▸Estructuración de procesos internos y soporte operativo al equipo de análisis.
Agility RPASoporte operativo

Formación académica

Técnico en Análisis, Diseño y Desarrollo de Software

SENA — Servicio Nacional de Aprendizaje

2012 — 2013

  • ▸Formación técnica en análisis, diseño y desarrollo de sistemas de software.

Formación continua (tecnología y habilidades blandas)

Platzi

2019 — Actual

  • ▸Cursos especializados en frontend, backend, IA, cloud, arquitectura y habilidades blandas.
Open Source & Impacto

Código que se audita y se reutiliza

Todo lo que construyo es público: el código, las decisiones y las métricas. Reviso cada commit.

Áreas de expertise demostradas en código

▸
Monorepos
TypeScript end-to-end
▸
Real-time
WebSockets bidireccionales
▸
Multi-tenancy
Edge proxy + headers seguros
▸
Concurrencia
Mutaciones atómicas ($expr)
▸
Seguridad
AES-256 + JWT (jose) + CSP
▸
AI pipelines
OCR → Gemini con fallback
Contacto

¿Construimos algo juntos?

Disponible desde mayo 2026 para oportunidades como Software Developer · cuéntame de tu proyecto o vacante

Email directojuanpo996@gmail.com
Abrir

¿Prefieres revisar mi código primero?

Audita mis decisiones de diseño en los repos, las 24 publicaciones de LinkedIn sobre Zentral o el case study detallado en el portafolio.

Explorar el código
Juan Pablo Ospina Restrepo · Desarrollador Fullstack & RPA