Projects
A collection of enterprise solutions, open source contributions, and personal projects showcasing my expertise in full-stack development.
Student Voice Navigator
FeaturedDjango-based interactive wizard guiding higher education institutions through NSSE (National Survey of Student Engagement) data analysis. Built 8-step guided workflow with session-based progress tracking, dynamic PDF generation with xhtml2pdf, and email delivery via SendGrid. Manages hierarchical content branching across 16 institutional challenges with 73 comprehensive tests.
Canvas LMS PHP SDK
FeaturedEnterprise-grade open-source PHP library for Canvas LMS API integration with 85% API coverage. Architected using Active Record + DTO patterns with PSR-12 compliance. Achieved 95%+ test coverage with 964 tests and 4,430 assertions.
cliwright — CLI Factory
FeaturedSpec-gated CLI factory: point it at any REST API and it forges a complete, production-grade Go + Cobra command-line tool — OS keyring auth, named profiles, a resilient client with adaptive rate limiting, an MCP server, an agent guard, CI/CD, and cosign-signed releases with Homebrew and Scoop packaging. It rides the native /goal loop of Claude Code or Codex and drives the build to a deterministic acceptance gate (make verify), so done means provably done, not asserted done. Used to build tgctl and lsqueezy and to harden n8nctl and alegra-cli.
event-driven-claude
FeaturedA transport-agnostic channel for Claude Code that turns external events into agent turns. It opens a local, secret-gated /inject endpoint, so any process (a cron, a file watcher, another agent) can POST an event and have it show up as a turn in a running session. No polling: the session sleeps for free and reacts only when something real happens. Injected events arrive marked as system data, not commands, which is the built-in defense against prompt injection. Implemented as an MCP stdio server with per-session state files and cross-platform process handling.
Canvas CLI
FeaturedPowerful command-line interface for Canvas LMS built with Go. Features OAuth 2.0 with PKCE authentication, system keyring integration, multi-instance support, adaptive rate limiting, and 280+ commands covering all Canvas LMS resources. Includes interactive REPL mode with command history and completion.
Alegra CLI
FeaturedCommand-line interface for the Alegra accounting API, built with Go and the same architecture as Canvas CLI. Covers most of the API (contacts, items, invoices, payments, bills, reports, and DIAN/SAT electronic invoicing) with OS keyring credential storage and a --dry-run flag on every command. Destructive actions can be locked behind hooks so an AI agent cannot run them, and it ships with a Claude Code skill so agents use it correctly from the first try.
n8nctl
FeaturedFast, single-binary Go CLI for the n8n workflow-automation API that manages workflows, executions, and credentials across many instances via named profiles with API keys stored in the OS keyring. Treats workflows as code with GitOps apply, lint, diff, and convert, snapshots and promotes workflows across instances (backup, restore, sync), and lets AI agents drive n8n safely through an MCP server, an agent guard, and a lint-enforcing proxy. Distributed via Homebrew and Scoop with cosign-signed releases.
tgctl
Featuredgh-style command-line tool for the Telegram Bot API, built with Go: send messages and media, manage chats, members, webhooks, and the bot command menu, and poll updates with table/JSON/YAML/CSV output. Supports named profiles for multiple bots with tokens stored in the OS keyring, and ships an MCP server plus an agent guard so AI agents can drive Telegram safely. Distributed via Homebrew and Scoop with signed releases.
slackctl
FeaturedCommand-line tool and live event stream for Slack, built with Go. Connects over Socket Mode or RTM, records every event to a local SQLite store, and adds search, tail, and stats over that history. Credentials live in the OS keyring, output is scriptable (table/json/yaml with a --jq filter), and it ships an MCP server plus an agent guard so AI agents can drive Slack safely. Built with the cliwright playbook.
wootctl — Chatwoot CLI
FeaturedCommand-line interface for the full Chatwoot API (144 operations): conversations, contacts, agents, teams, inboxes, reports, and automations, plus backup/restore and cross-instance sync. Built in Go with named profiles, keyring auth, scriptable table/json/yaml output, an MCP server, and an agent guard so AI agents can drive Chatwoot safely. Built with the cliwright playbook.
tgctl-claude-channel
FeaturedClaude Code channel that bridges a Telegram bot to a live Claude Code session: drive a persistent agent from your phone with text, polls, buttons, media, reactions, and tool-permission approvals. Implemented as a small MCP stdio server that gates senders through pairing or an allowlist and runs every Telegram operation through the tgctl CLI, so it reimplements no Bot API logic and never holds the token itself.
lsqueezy — Lemon Squeezy CLI
Production-grade command-line interface for the Lemon Squeezy e-commerce API: stores, products, orders, subscriptions, customers, discounts, license keys, checkouts, and webhooks, scriptable with table/json/yaml/csv output and a --jq filter. Hides the JSON:API envelope behind flat, table-friendly records, stores keys in the OS keyring, retries idempotent requests only, and ships an MCP server for AI agents. Built with the cliwright playbook.
AdGuard Home CLI
The missing command-line interface for AdGuard Home, covering 90%+ of its 81 API operations: clients, blocked services, DNS rewrites, query logs, filters, DHCP, and TLS, all with structured output. Built in Go for homelab operators and anyone who automates DNS infrastructure, with a setup wizard and a doctor command for connectivity diagnostics.
garminctl — Garmin Connect CLI
Command-line interface for Garmin Connect health data (body composition, sleep, heart rate, stress, body battery), plus the full endpoint registry and a raw API escape hatch. Built in Go on top of go-garmin, which is itself a broader Garmin CLI; garminctl adds OS-keyring token storage instead of a plaintext session file, named profiles for several accounts, one-command import of existing garth tokens, scriptable table/json/yaml/csv output, an MCP server, and an agent guard. Built with the cliwright playbook.
Canvas LMS Kit for Laravel
Minimal Laravel integration package for Canvas LMS Kit with zero configuration. Features multi-tenant support for switching between Canvas instances, testing utilities for mocking API calls, and native Laravel integration with config, logging, and testing systems.
FinanceFlow
FeaturedComprehensive personal finance management application designed for contractors in Colombia. Features multi-currency tracking, credit card debt optimization, tax calculations, and financial goal planning with React frontend and FastAPI backend.
CV Optimizer
AI-powered system using Claude Code to intelligently customize CVs for job applications. Maximizes ATS compatibility while maintaining authenticity by reorganizing and emphasizing existing experience without fabricating information.
Todo Wizard
Modern full-stack task management application with React 18, TypeScript, FastAPI, and PostgreSQL. Features project organization, priorities, tags, markdown support, drag-and-drop ordering, real-time updates, and dark mode.
JW Discord Bot
Discord bot providing daily texts, news, and topic search from JW.org. Supports multiple servers with per-server language configuration (Spanish, English, Portuguese), scheduled posts, and MongoDB-backed settings.
Daily Text EPUB to JSON
EPUB to JSON converter for daily text publications with web interface, REST API, and CLI tool. Features real-time progress updates via Server-Sent Events, automatic year detection, and dual parsing strategy with MongoDB storage option.
Payment Gateway
Microservice enabling users to receive payments through configurable providers including PayPal, RappiPay, Nequi, PayU, Tpaga, SrPago, VisaNet, and MercadoPago.
E-commerce Gateway
Microservice allowing users to sync their E-commerce platforms with the accounting system. Integrated with Shopify and Mercado Libre marketplaces.
Course Builder 2.0
Robust tool for ACUE's Canvas LMS improving course creation efficiency. Introduced centralized workflow, improved error tracking, and eliminated redundant tasks.
ACUE Chatbots & Integrations
FeaturedAI-powered chatbot platform for ACUE using hybrid RAG search with vector similarity and BM25 keyword matching. Features automated knowledge base ingestion, visual workflow engine with n8n, security guardrails, and multi-bot support powered by Google Vertex AI.
ACUE CLI
Unified command-line interface for managing ACUE infrastructure across Cloud Run and VM-based systems. Features multi-environment management, AES-256-GCM encrypted credentials, audit logging, and smart auto-detection with dry-run mode and automatic rollback.
Serverless Event Management
Innovative solution for handling live events in Canvas LMS using GCP serverless functions. Features JWT decoding, MySQL storage, and Pub/Sub topics for scalable processing.
Multi-Environment Infrastructure Lab
Comprehensive homelab spanning Raspberry Pi, VPS, and development workstation with 20+ containerized services. Includes Nginx reverse proxy with 22 SSL-enabled hosts.
Rivera Refrigeración
Professional website for Rivera Refrigeración, a family-owned appliance repair business in Cali, Colombia with over 30 years of experience. Built with Astro and Tailwind CSS, featuring a blog system, SEO optimization, and WhatsApp integration. Deployed on Netlify.
Ropero de Sueños
E-commerce website for Ropero de Sueños, showcasing handcrafted MDF closets for fashion dolls. Features product gallery, testimonials, FAQ section, blog system, and WhatsApp integration for orders. Built with Astro, Tailwind CSS, and Alpine.js.
invitas.co — Digital Invitations for LATAM
FeaturedSelf-serve digital invitation SaaS targeting the Spanish-speaking LATAM market. Astro 5 SSR + React 19 islands (Three.js, motion). AI stack on Vertex (Gemini + Imagen 4 Fast) and DeepInfra — in-builder Asistente with patch / undo / image-edit tools, step-by-step creation wizard, inspire prompt, and paste-and-parse guest importer; circuit breaker, cost caps, PII filter, per-tier rate limits. Data-driven payment router via capability matrix: Wompi for COP (card / PSE / Nequi / Bre-B QR) plus Lemon Squeezy internationally, hybrid subscription × per-event model with reconciliation cron and past_due webhook. Feature-flag system (ai / payment / kill-switch / experiment) with admin toggle and audit log. Custom domains via DNS verifier + Traefik auto-TLS. PostgreSQL + Drizzle (forward-only migrations, audit triggers), Better-Auth, R2 storage, @vercel/og share previews, Sentry + Pino observability. 4-layer permissions (auth → role → resource → action) with a capability dictionary and a scoped DB factory that injects the host filter at query time. Vitest (unit) + Playwright (e2e against a Postgres 17 service); pre-commit gate runs lint-staged (ESLint + Prettier), typecheck, and units. Staged CI: typecheck + build + a Drizzle journal monotonic guard → e2e → zero-downtime rolling deploy on green main (Coolify Dockerfile pack with a container HEALTHCHECK, deploy coalescing so only the current HEAD ships, and automatic rollback if a migration fails while the old container keeps serving). Self-hosted on a VPS.