David Londoño · Full-Stack Engineer, Security-Focused
Full-Stack Engineer TypeScript, Node & React Security-Focused

David
Builds & Breaks

Full-Stack Engineer: React, Next.js, Node, TypeScript, PostgreSQL. I build web systems and think about how they break while I build them.

dlondon.dev@gmail.com

01 Career

Experience

2025

Tambora

Frontend Developer

Jul 2025 - Sep 2025

Moved business-critical legacy modules from jQuery to React: 40% smaller bundle, and less client-side attack surface once the logic lived in one modular Atomic Design library. I also swapped the manual SSH deploys for an Azure CI/CD pipeline, which took a deploy from over two hours to under fifteen minutes and gave the team somewhere to hang automated test gates, SAST and dependency scanning.

ReactAzureTypeScriptCI/CDSAST-ready

2024

EliteStack Bootcamp

Full-Stack Development

Jun 2024 - Jul 2024

Hands-on bootcamp: Linux/CLI, TypeScript, Node.js, Docker, REST APIs, WebSockets, Next.js, AWS. Where I learned how the pieces of a production system fit together.

LinuxTypeScriptDockerAWS

02 About

Who I am

David portrait

I'm a Full-Stack Engineer from Pereira, Colombia. I build production web systems end to end, React and Next.js on the front, Node, TypeScript and PostgreSQL on the back. I spend more time than most developers on the point where code that works correctly is still a security problem.

That means threat modeling a feature before it ships, keeping the OWASP Top 10 as the baseline, and testing my own work by attacking it. I train on TryHackMe and the PortSwigger Web Security Academy, because it is hard to defend against an attack you have never run yourself.

Right now the part I'm most interested in is securing apps with an LLM inside them. They add attack surface that traditional web security doesn't cover.

Open to full-time work, freelance, or a side project that sounds interesting. If you have a problem worth solving, send me a message.

Pereira, Colombia
Building since
2024
Security-focused
Full-Stack
C1 / Native / B1
EN / ES / DE
LATAM / US / EU hours
Remote

03 Credentials

Certification roadmap

The certifications behind the move into security: what's finished, and what I'm studying for now. The projects are the other half.

  • Google Professional Cybersecurity Certificate

    Google · Coursera

    Completed 2026
  • PortSwigger Web Security Academy

    PortSwigger

    Completed All free courses
  • Burp Suite Certified Practitioner

    PortSwigger

    In progress 2026 Q4

04 Expertise

Skills

Languages

TypeScriptJavaScriptPythonCSQLBashHTML/CSS

Backend

Node.jsNext.jsExpressREST APIsWebSocketsJestZod

Frontend

ReactNext.jsAstroTailwindCSSFramer MotionThree.js

AI & LLM

Claude APIOpenAISSE StreamingMCP ServersLLM IntegrationPrompt Injection defenseLLM GuardrailsRAGPrompt Engineering

Application Security

OWASP Top 10Threat Modeling (STRIDE)OAuth 2.0 / OIDCJWT (EdDSA)RBACSession HardeningArgon2idCSRF / XSS / SQLi defensesSecure Code ReviewSecrets ManagementInput Validation

Offensive & AppSec Tooling

Burp SuiteOWASP ZAPnmapWiresharksqlmapffufNucleiGobusterHydraHashcatMetasploitNiktoSemgrepTrivyKali LinuxHackTheBoxTryHackMePortSwigger Academy

Databases

PostgreSQLMySQLMongoDBPrismaRedis

DevOps & Cloud

AWSAzureDockerCI/CDDigital OceanLinux hardeningVercel

Tooling

GitGitHubPostmanJiraSwaggerLinux

05 Work

Projects

authzscan

IDOR/BOLA review that runs itself, on Claude agents

An automated pentest of authorization logic in Next.js App Router repos. Agents follow every client-controlled identifier to the database query it reaches and flag the ownership checks nobody wrote. It is the top OWASP risk, and pattern-matching SAST mostly cannot see it.

  • Four phases: a deterministic endpoint inventory with ts-morph (route handlers, Server Actions, auth-library detection), an agent trace pass, an adversarial verify pass whose whole job is killing false positives, and reports in Markdown, SARIF or JSON with exit codes CI can gate on.
  • The accuracy is a number, not a feeling: a seeded benchmark of 16 IDOR/BOLA bugs plus 6 correctly written twins as false-positive traps, recall and precision gates, and an oracle runner that proves the harness scores right regardless of how good the model is.
  • It fails loudly. An endpoint it could not analyze is reported as not analyzed, never as clean, and a candidate it cannot confirm comes back as low confidence instead of quietly disappearing.
TypeScriptClaude agentsts-morphNext.jsIDOR/BOLASARIF

PairCode

Secure real-time collaborative workspace

A collaborative workspace where I wrote the identity and auth layer myself instead of importing one, plus a realtime layer built to match it.

  • Auth built in-house: EdDSA JWTs, rotating refresh tokens that detect reuse, Argon2id hashing, CSRF protection.
  • My own WebSocket server. The handshake uses a single-use ticket, every event is authorized on its own, and RBAC is checked server-side.
  • Rooms carry presence, typing indicators, shared threaded context, and history that survives a reconnect.
Next.jsPostgreSQLEdDSAArgon2idRBACWebSockets

JWT Security Lab

A JWT lab with a broken half and a fixed half

Two versions of the same API, one vulnerable and one hardened. Every attack lands on the first and bounces off the second, so you can run the fixes instead of taking my word for them.

  • JWT signing and verification written from scratch in TypeScript, no libraries, reproducing five flaws that reach production: alg=none bypass, HS256/RS256 key confusion, weak-secret brute force, kid header injection, and missing iss/aud/exp validation.
  • Exploit scripts in Bash and OpenSSL, plus a harness that runs every payload against both APIs and checks the result each way.
  • The hardened service removes whole classes of bug at once: one allowed algorithm (RS256), a fixed in-memory kid registry with rotation, generic errors, and scrypt for passwords.
TypeScriptNode.jsDockerJWTOpenSSLBash

LLM/RAG Security Lab

LLM/RAG security lab, attack side and defense side

Two FastAPI services with the same RAG surface: one left vulnerable on purpose, one hardened. Every attack in the suite works on the first and fails on the second.

  • Five OWASP LLM Top 10 scenarios written as a pytest attack suite: cross-tenant retrieval leak (confused deputy), indirect prompt injection through retrieved documents, vector-store poisoning via forged ingest metadata, excessive agency over a real MCP tool server, and stored XSS coming straight out of the model.
  • The RAG pipeline is hand-built (embeddings, in-memory vector store, multi-tenant ACL corpus) with no LangChain, so the diff between the two apps is the security decisions and nothing else.
  • A deterministic mock LLM turns "every attack fails against the secure API" into something CI can rely on, and an OpenRouter provider re-runs the injection tests against a real model.
PythonFastAPIRAGPrompt InjectionMCPOWASP LLM Top 10

Exploit the Box

Play

Playable, sandboxed web-security CTF

A hacking terminal you can actually type into. Four boxes, four real vulnerability classes, all simulated in the browser: no network calls, no eval.

  • Four exploit paths: SQLi auth bypass, IDOR, a JWT alg=none signature strip, and reflected XSS, each matched against a fake target.
  • The whole terminal: a command interpreter with history, a typewriter boot sequence, matrix rain on a canvas, CRT scanlines, and flags to capture in order.
  • Same attack classes I defend against in the JWT Security Lab and jwt-scan.
ReactTypeScriptSQLiIDORJWTXSS

Materiales La Bodega

Solo-built e-commerce platform, live in production

A live storefront for a family-owned hardware retailer. Real customers, real payments, and nobody else to call when it breaks.

  • I was the only engineer on it: requirements, architecture, the real-time inventory catalog, deployment, and the maintenance it still gets.
  • Built the authentication, session security and RBAC that keep the staff side separate from the customer side, and wired up Mercado Pago for live transactions.
  • Hardened the application layer against the OWASP Top 10: parameterized queries, input validated on the server, CSRF protection on anything that changes state, and database roles with the least privilege that still works.
Next.jsPostgreSQLMercado PagoOWASPRBACCSRF

06 Get in touch

Let's build something

Open to Full-Stack, Backend and Software Engineer roles, remote or relocating. Security is what I bring on top of shipping features. If your team could use that, write to me.