Welcome to my Notes
Exploring web development, software architecture, and the latest in technology. Thoughts, tutorials, and deep dives into the tools I use daily.
Latest Posts
- • 4 min read •analytics self-hosted umami nginx devops privacy react tutorial
Own Your Website Data: Build a Custom Analytics Dashboard with Umami
A step-by-step guide to setting up Umami, an open-source analytics platform, on your own VPS with Nginx, TLS certificates, and React integration.
- • 5 min read •tutorial ai chatbot llm full-stack cursor typescript react nestjs trpc tanstack-query zod better-auth
Vibe Coding a Full-Stack AI Chatbot Platform (Part 6): End-to-End Type Safety with tRPC
Define tRPC routers inside NestJS, export AppRouter types, and consume them from React with TanStack Query.
- • 8 min read •tutorial ai chatbot llm full-stack cursor typescript react nestjs better-auth authentication oauth vibe-coding
Vibe Coding a Full-Stack AI Chatbot Platform (Part 5): Authentication with Better Auth
Setting up Better Auth for secure authentication with email/password and Google OAuth, integrating it with our NestJS backend and React frontend — now with actual vibe coding.
- • 4 min read •tutorial ai chatbot llm full-stack cursor typescript prisma postgresql docker
Vibe Coding a Full-Stack AI Chatbot Platform (Part 4): Database Setup with Prisma
Setting up PostgreSQL with Docker and configuring Prisma ORM with our initial database schema.
- • 4 min read •react nestjs pwa typescript venezuela currency ai-coding fullstack
Building El Cambio: A Seamless Currency Converter for Venezuelans
How I built El Cambio, a fast PWA for Venezuela’s official BCV exchange rates—React, NestJS, tRPC, Prisma, and an offline-first UX.
- • 3 min read •tutorial ai chatbot llm full-stack cursor typescript react nestjs monorepo pnpm turbo vite tailwind
Vibe Coding a Full-Stack AI Chatbot Platform (Part 3): Monorepo Setup & App Scaffolding
Step-by-step monorepo setup with pnpm workspaces, Turbo, and Biome; scaffold the React (Vite) and NestJS apps for the chatbot project.
- • 8 min read •tutorial ai chatbot llm full-stack cursor typescript react nestjs trpc prisma postgresql better-auth biome shadcn-ui radix-ui
Vibe Coding a Full-Stack AI Chatbot Platform (Part 2): Tech Stack & Tooling Choices
Why this stack: React + Vite, NestJS, tRPC, Prisma/Postgres, Better Auth, and Biome—tradeoffs and reasoning for an AI chat app.
- • 4 min read •tutorial ai chatbot llm full-stack cursor typescript react
Vibe Coding a Full-Stack AI Chatbot Platform (Part 1): Introduction
What we’ll build in this series: an LLM chat platform with conversation forking, multi-provider support, and a pragmatic AI-assisted workflow.
- • 3 min read •javascript bun anthropic ai tooling typescript
Bun Got Acquired by Anthropic: Here is Why It Matters
Bun’s acquisition explained: what Bun is, why an AI company wants a JavaScript runtime, and how fast tool execution changes AI dev workflows.
- • 3 min read •microservices rabbitmq aws nodejs architecture
Microservices Anti-Pattern: Why You Should Never Send Files via AMQP
Don’t push files through RabbitMQ: what breaks, why brokers hate big payloads, and the Claim Check pattern with S3 presigned URLs.
- • 3 min read •nodejs expressjs heroku networking webdev
Why Your App is Logging the Wrong IP Address (And How to Fix It)
Why Express logs proxy IPs on Heroku/Vercel, and how to get real client IPs with `trust proxy` and `X-Forwarded-For`.
- • 4 min read •networking devops aws infrastructure learning
I've Been a Developer for over 8 Years, and I Just Actually Understood IP Addresses
A practical guide to IP basics: static vs dynamic, NAT, IPv4 exhaustion, and why IPv6 exists—explained via a real deployment mistake.