Alex LargoFullstack & DevOps Engineer

I build the application and the server it runs on: from frontend and API to Docker, the proxy, CI/CD and automation with AI agents.

Versión en español (PDF)

AL

Available for new projects

Now
NTT DATA · Junior Engineer
In parallel: freelance on Workana, since Jan 2026
Based in
Cuenca, Ecuador · UTC−5
Languages
Spanish (native) · English B1

Clients

Real projects for clients who use them every day.

3destinyra.comIn production
Screenshot of 3Destiny

3Destiny

3destinyra.com

In productionArgentina2026

Augmented reality, virtual reality and AI agency for businesses. Custom WordPress theme, no page builder: case studies with metrics, four verticals with their own pages, a blog and a form wired to the dashboard. I deployed it and run it on the client's AWS server.

Launched
Sep 17, 2026
Lighthouse
SEO 100 · Accessibility 100
Infra
AWS EC2 · SSM access · Let's Encrypt with DNS challenge on Route53 · PHP 8.3 · wp-cli migrations

Visit site (opens in a new tab)

orthodent.com.ec
Screenshot of Orthodent
Mobile view of Orthodent

Orthodent

In productionEcuador2026

Dental clinic. Multilingual site with contact forms, a shop and Google reviews.

WordPress · Elementor · Contact Form 7 · WooCommerce · TranslatePress

argentinalocalexpert.com
Screenshot of Argentina Local Expert

Argentina Local Expert

In productionArgentina2026

Landing page and sales funnel on Systeme.io, with leads flowing into the platform's native CRM.

Systeme.io · funnel · lead CRM

«My experience with Alex has been very positive. He delivered the project on time and exactly as I requested. He is very kind to work with. I would work with him again without hesitation. I recommend him.»

Elizabeth Mitchell · Argentina Local Expert · Workana 5.0Project: «Desarrollador Web para Personalizar y Completar Diseño de Página en Systeme.io»Translated from Spanish.

DevOps & infrastructure

I run my own production server: 11 sites, automations and AI agents behind a single proxy. At NTT DATA, Kubernetes on AWS.

Infrastructure of my own server and the clouds I operateVisitors and Telegram webhooks reach Caddy through DNS, and Caddy routes traffic into a Docker network with no public ports: on-demand WordPress with a shared MariaDB, the appsMonitor panel, n8n and the AI agent runner. Outside the VPS: Vercel, AWS and Cloudflare.VPS · DigitalOceanUbuntu 24.04 · 1 vCPU · 2 GBInternal Docker network · no public portsOutside the VPSTelegram IP ranges onlyVisitorsbrowser · HTTPSTelegrambot webhooksDNSwildcard A*.taller.worksGitHub Actionsdeploy over SSHrsync + restartufw · fail2ban · key-only SSH · non-root user · unattended-upgrades · 2 GB swapCaddyautomatic TLS11 virtual hostsTelegram IP filterWeekly cronMondays 9:00URL check → 200appsMonitorFastify · Docker socket≥400 MB free · load <2WordPress × profilesCompose profiles384 MB each · max. 2MariaDBshared by every WordPresswp-clicontainerBackupsdb + uploadsAI agent runnerClaude Code headlessChromium · no public portsn8n · 6 flowswebhooks · state in PostgresVercel · 13 projectsNeon · crons · Sensitive envAWSNTT DATA: EKS · RDS Oracle · Karpenter · KEDA · Istio · Terraform3Destiny: EC2 via SSM · Route53Cloudflaretunnels for local demosInfrastructure of my own server and the clouds I operateVisitors and Telegram webhooks reach Caddy through DNS, and Caddy routes traffic into a Docker network with no public ports: on-demand WordPress with a shared MariaDB, the appsMonitor panel, n8n and the AI agent runner. Outside the VPS: Vercel, AWS and Cloudflare.VPS · DigitalOceanUbuntu 24.041 vCPU · 2 GBInternal Docker networkno public portsOutside the VPSTelegram IPranges onlyVisitorsbrowser · HTTPSTelegrambot webhooksDNSwildcard A*.taller.worksGitHub Actionsdeploy over SSH · rsync + restartufw · fail2ban · key-only SSHnon-root userunattended-upgrades · 2 GB swapCaddyautomatic TLS · 11 virtual hostsTelegram IP filterWeekly cronMondays 9:00 · URL check → 200appsMonitorFastify · Docker socket≥400 MB free · load <2WordPressCompose profiles384 MB each · max. 2MariaDBshared by every WordPresswp-clicontainerBackupsdb + uploadsAI runnerClaude Code headlessChromium · no public portsn8n · 6 flowswebhooks · state in PostgresVercel · 13 projectsNeon · crons · Sensitive envAWSNTT DATA: EKS · RDS OracleKarpenter · KEDA · Istio · Terraform3Destiny: EC2 via SSM · Route53Cloudflaretunnels for local demos

Legend

  • HTTP(S) traffic
  • Internal control or execution
  • Scheduled (cron, backup)
  • In production
  • On demand
View the infrastructure as a list
  1. Visitors

    Any visit to a site or a demo. It comes in over HTTPS and resolves through DNS to the server's single proxy.

    HTTPS · 11 sites behind one proxy

  2. DNS

    A wildcard A record points all of *.taller.works at the VPS. Adding a site doesn't touch DNS.

    wildcard A · *.taller.works

  3. Caddy

    The server's single reverse proxy. It issues and renews certificates on its own, routes each subdomain to its container and is the only door into the internal network.

    automatic TLS · wildcard *.taller.works · 11 virtual hosts · n8n behind the proxy

  4. Telegram

    The Telegram bots call in by webhook. The proxy only accepts those requests when they come from Telegram's IP ranges.

    3 bots · IP range filter

  5. WordPress × profiles

    Each site is a Compose service enabled by profile: it starts when someone asks for it. Two fit at a time.

    Compose profiles · 384 MB per site · max. 2 running

  6. MariaDB

    A single database shared by every WordPress site: less memory than one per site.

    one instance · backups with wp db export

  7. wp-cli

    Tools container for migrations, exports and search-replace without installing anything on the host.

    migrations · search-replace

  8. Backups

    Database export and an uploads tarball per site; restore rewrites URLs with search-replace.

    wp db export · uploads tarball · n8n workflows

  9. appsMonitor

    My control panel: it starts and stops demos by reading Compose labels. Before starting one it checks memory and load, a rule that came from a 12-minute outage.

    MAX_RUNNING=2 · ≥ 400 MB free · load < 2

  10. n8n · 6 flows

    Six flows in production: sign-ups, bookings, bots, reminders and the weekly status. Human approval with Wait + webhook and rate limiting.

    6 flows · Wait + webhook · rate limiting

  11. AI agent runner

    Express service that runs Claude Code headless inside Docker. Only n8n calls it, from the internal network, with header auth.

    idle watchdog · Chromium for screenshots · model fallback on OOM

  12. Weekly cron

    Every Monday at 9:00 the live URLs are checked for a 200 and the status reaches Telegram through n8n.

    Mondays 9:00 · URLs → 200 · Telegram alert

  13. Host hardening

    What the provisioning script leaves on the host before a single container runs.

    ufw · fail2ban · key-only SSH · non-root user · unattended-upgrades · 2 GB swap

  14. GitHub Actions

    The appsMonitor panel deploys from GitHub Actions: SSH, rsync and a service restart.

    SSH + rsync · service restart

  15. Vercel · 13 projects

    The Next.js products live on Vercel, with Neon from the Marketplace, crons and variables marked Sensitive.

    13 projects · Neon · crons

  16. AWS

    At NTT DATA I work on Kubernetes on AWS; for 3Destiny, the client's EC2 with SSM access and DNS on Route53.

    EKS · RDS Oracle · EC2 via SSM · Route53

  17. Cloudflare

    Cloudflare tunnels to show a demo running on my machine without opening ports.

    cloudflared

Incident response · September 2026

How I responded, in order.

  1. Detection and containment

    A brute-force intrusion got in through a staging site.

  2. Data rescue

    The data was rescued before rebuilding.

  3. Rebuild from scratch

    The server was brought back up with the provisioning script.

  4. Hardening and credential rotation

    The host was hardened and the credentials were rotated.

What I operate

Provisioning and hardening

  • VPS on DigitalOceanUbuntu 24.04 · 1 vCPU · 2 GB
  • Provisioning script: Docker from the official repo, ufw, fail2ban, 2 GB swap and unattended-upgrades
  • Non-root user and key-only SSH

Proxy and TLS (Caddy)

  • Reverse proxy with automatic TLS and a wildcard*.taller.works · 11 virtual hosts
  • DNS with a wildcard A record
  • n8n behind the proxy; the Telegram webhook only accepts Telegram's IP ranges

Containers in production

  • Docker Compose with a shared MariaDB and WordPress services enabled by profiles
  • Memory limit per site384 MB
  • Tools containerwp-cli
  • Caddy + n8n + AI agent runner stack with no public ports, header auth

My own control panel (appsMonitor)

  • Fastify + TypeScript: starts and stops demos by reading Compose labels, with RAM, disk, load, uptime and a logs modal
  • Cap on demos running at onceMAX_RUNNING=2
  • Before starting a site it requires free memory and low load: a rule learned from a 12-minute outage≥ 400 MB free · load < 2
  • It used to be a systemd user service; today it's a container with the Docker socket mounted
Droplet card in appsMonitor: 820 MB of 1.9 GB RAM free, disk at 37% with 29.6 GB free, 1-minute load of 0.09, 1 vCPU and 21 days of uptimeDroplet card in appsMonitor: 820 MB of 1.9 GB RAM free, disk at 37% with 29.6 GB free, 1-minute load of 0.09, 1 vCPU and 21 days of uptime
appsMonitor panel: project list with status and start/stop controls

Backups and restore

  • Database and uploadswp db export + tar
  • Restore with URL search-replace
  • Backup of the n8n workflows

Monitoring

  • Script that checks the live URLs respondHTTP 200
  • Weekly cron that sends the status to Telegram through n8nMondays 9:00

Automation with n8n and AI agents

  • n8n flows in production: sign-up, waitlist, public booking, booking bot, reminders and weekly status6 flows
  • In the AI agent pipeline: human approval with Wait + webhook, state in Postgres and rate limiting
  • Express service that runs Claude Code headless in Docker, with an idle watchdog and Chromium for screenshots
  • Context sync by script and model fallback when it runs out of memory (OOM)
The six portfolio n8n flows grouped into capture, operations and management, with two Telegram bots split by channel
The six portfolio flows. The two bots in the image are the portfolio's (alerts and bookings); the third one serves the AI agent pipeline.

Clouds

  • Vercel: Neon from the Marketplace, env vars marked Sensitive and crons13 projects
  • AWS at NTT DATA: EKS, RDS Oracle, EC2 via SSM, Transit Gateway, S3, CloudWatch, Helm, KEDA, Karpenter, Istio and Terraform
  • AWS for 3Destiny: EC2 with SSM access and Route53
  • Cloudflare: tunnels to expose local demoscloudflared

Automated QA

  • Playwright scripts: page sweeps, 404s and states
  • Layout clipping detector across the full width range320 → 2560 px

CI/CD

  • appsMonitor

    Steps
    • SSH
    • rsync
    • service restart
    Target
    My own VPS
  • finansfit-web

    Steps
    • vitest
    • build
    Target
    GitHub Actions · also runs in Docker on the VPS
  • medicalApp

    Steps
    • typecheck
    • lint
    • migrate + seed
    • tests
    • Playwright E2E
    Target
    GitHub Actions
  • Evaluar

    Steps
    • build
    • push to Docker Hub
    • kubectl
    Target
    AWS EKS · 8 environments
  • Trompo

    Steps
    • ssh-action
    • docker-compose
    • nginx
    Target
    Server with nginx
Pipelines I wrote and maintain
ProjectStepsTarget
appsMonitor
  • SSH
  • rsync
  • service restart
My own VPS
finansfit-web
  • vitest
  • build
GitHub Actions · also runs in Docker on the VPS
medicalApp
  • typecheck
  • lint
  • migrate + seed
  • tests
  • Playwright E2E
GitHub Actions
Evaluar
  • build
  • push to Docker Hub
  • kubectl
AWS EKS · 8 environments
Trompo
  • ssh-action
  • docker-compose
  • nginx
Server with nginx

Products and demos

My own products and demos built to show how I work. Demo brands are fictional; the code and the deployment are real.

Sites marked on request are started on my server when someone asks: two fit at a time. If you want to see one live, write to me.

screenshotsCaptures only
Screenshot of Vera · Barbershop

Vera

Demo projectn8n2026

AI WhatsApp receptionist: chat mockup + n8n flows, in four industries.

  • Chat and dashboard mockup
  • n8n flows with AI
  • Barbershop, diner, dental clinic and auto shop
n8n · IA · WhatsApp · HTML/CSS/JS
screenshotsInternal use
Screenshot of Automation pipeline with AI agents

Automation pipeline with AI agents

In-house tooln8n2026

n8n orchestrates an AI agent running in Docker; nothing goes out without human approval over chat.

  • 6 n8n flows in production
  • Human approval with Wait + webhook
  • 3 Telegram bots, Gmail and state in Postgres
n8n · Docker · Claude Code · Postgres · Telegram
screenshotsOn request
Screenshot of Lume Estética & Spa

Lume Estética & Spa

Demo projectWordPress2026

Beauty spa with its own booking engine in WordPress.

  • Custom REST API
  • 4-step wizard
  • Double-booking lock
WordPress · PHP · REST API · JS
Live demo on requestRequest it
screenshotsOn request
Screenshot of Recreo

Recreo

Demo projectWooCommerce2026

WooCommerce store for school backpacks and pencil cases.

  • Side cart and combined (AND) filters
  • Coupons and shipping by zone
  • Finder wizard that saves the lead
WooCommerce · PHP · JS
Live demo on requestRequest it
screenshotsOn request
Screenshot of SolNova Energía

SolNova Energía

Demo projectWordPress2026

Solar energy company with a quote tool and a CRM in WordPress.

  • 4-step quote tool
  • Savings and return on investment
  • Request CRM in the dashboard
WordPress · PHP · JS
Live demo on requestRequest it
screenshotsOn request
Screenshot of Meridiano Studio

Meridiano Studio

Demo projectWordPress2026

B2B web design and development studio with case studies.

  • Case studies filtered by industry
  • Inquiry CRM with a pipeline
WordPress · PHP · JS
Live demo on requestRequest it
bitacora.taller.worksLive
Screenshot of Bitácora

Bitácora

Demo projectHTML2026

Event landing page in plain HTML, CSS and JS, with automated sign-up.

  • 330 KB in total
  • Lighthouse 100
  • Sign-up triggers n8n: Gmail + Telegram
HTML · CSS · JS · n8n

Other projects

WooCommerce stores

  • IRONPULSEDemo project

    Store for smart fitness equipment.

    WooCommerce · PHP
    On requestRequest it
  • Reverso StudioDemo project

    Art gallery selling one-off pieces, with an infinite draggable mosaic.

    WooCommerce · PHP · JS
    On requestRequest it
  • Aromas del SurDemo project

    Specialty coffee store with grind variations and an AJAX mini-cart.

    WooCommerce · PHP
    On requestRequest it

WordPress sites

  • Instituto del SurDemo project

    Distance learning: degree and course catalogue with a request CRM.

    WordPress · PHP
    On requestRequest it
  • Vértice StudioDemo project

    B2B web agency with a lead CRM and status pipeline.

    WordPress · PHP
    On requestRequest it
  • Ahumados PavónDemo project

    Store for handcrafted smoked meats.

    WordPress · PHP
    On requestRequest it
  • REBORNDemo project

    Boutique gym with credit-based bookings and a spot map.

    WordPress · PHP · JS
    On requestRequest it

Next.js demos

Personal projects

Previous work

  • Trompo Mobiliario Infantil

    Trompo Mobiliario Infantil

    Web catalogue, API and mobile app for a children's furniture brand.

    Next.js · NestJS · PostgreSQL
    2021
  • Evaluar

    Production platform: frontend and APIs on AWS.

    Vue · React · AWS EKS
    2022–24
  • GAD San Fernando

    GAD San Fernando

    Website for the San Fernando canton, with React and NestJS.

    React · NestJS · MySQL
    2021

Experience

  1. Jan 2026 – presentin parallel

    Freelance Fullstack & DevOpsWorkana

    Real clients (3Destiny, Orthodent, Argentina Local Expert and Diamante, in progress) and running my own VPS: Docker, Caddy, TLS, hardening, backups and incident response. CI/CD, n8n in production, an AI agent pipeline, custom WordPress and WooCommerce, and SaaS on Next.js + Neon.

    WordPress · Next.js · Docker · Caddy · n8n · Neon

  2. Mar 2025 – present

    Junior EngineerNTT DATA

    Banking clients on the Temenos platform: Java bug fixing, incidents and new features. I work on Linux over AWS (EKS, RDS Oracle, EC2 via SSM, CloudWatch) with Kubernetes, Helm, KEDA, Karpenter, Istio and Terraform.

    Java · AWS · EKS · Helm · Terraform · Oracle

  3. Mar 2024 – May 2024

    Fullstack DeveloperEvaluar

    Vue, React, Nuxt, Next, NestJS and Java. APIs between projects, query caching and endpoints on S3 and DynamoDB; deployment at the end of every sprint.

    Vue · React · NestJS · Java · DynamoDB

  4. Mar 2022 – Apr 2023

    Frontend DeveloperEvaluar

    Interfaces in Vue, React and Angular, responsive work, Storybook components and unit tests with Jest and Testing Library.

    Vue · React · Angular · Storybook · Jest

  5. Jun 2021 – Jan 2022

    Fullstack DeveloperTrompo · GAD San Fernando

    Next.js + NestJS + PostgreSQL and MySQL, a React Native mobile app and Docker deployments on Vercel, Render and CentOS.

    Next.js · NestJS · PostgreSQL · React Native · Docker

  6. Jun 2024

    EducationSoftware Engineering

    Universidad Católica de Cuenca

Stack and tools

Infra and DevOps

  • Docker
  • Docker Compose
  • Caddy
  • Nginx
  • Linux
  • Ubuntu
  • Bash
  • systemd
  • cron
  • ufw
  • fail2ban
  • GitHub Actions
  • DigitalOcean
  • Cloudflare
  • Vercel

AWS and Kubernetes

  • AWS
  • EKS
  • EC2
  • SSM
  • RDS
  • S3
  • Route53
  • CloudWatch
  • Transit Gateway
  • Kubernetes
  • Helm
  • KEDA
  • Karpenter
  • Istio
  • Terraform

Automation and AI

  • n8n
  • Claude Code
  • Anthropic SDK
  • Telegram Bot API
  • Gmail API
  • Python

Backend

  • Node.js
  • NestJS
  • Express
  • Fastify
  • Better Auth
  • Java
  • Spring Boot
  • PHP
  • REST API
  • GraphQL

Frontend

  • React
  • Next.js
  • TypeScript
  • JavaScript
  • Vue
  • Nuxt
  • Angular
  • Tailwind
  • HTML
  • CSS
  • Redux
  • Storybook

Data

  • PostgreSQL
  • Neon
  • MariaDB
  • MySQL
  • Oracle
  • MongoDB
  • DynamoDB
  • SQLite
  • Drizzle
  • TypeORM
  • Dexie
  • Redis

Mobile

  • React Native
  • Expo
  • Flutter
  • NativeWind

CMS and platforms

  • WordPress
  • WooCommerce
  • Elementor
  • TranslatePress
  • Systeme.io
  • Temenos

Testing and QA

  • Playwright
  • Vitest
  • Jest
  • Testing Library
  • Lighthouse

Highlighted: the ones used in projects on this page.

Résumé

Two pages, updated September 2026.

Let's talk

Write to me and I'll reply within 24 h.

Direct channels