Engineering Article

Launching the CodeMonkeyG Tech Blog

Welcome to my engineering notebook. Here is why I built this markdown-powered blog with Astro, containerized it in Docker, and what topics to expect.

Giovanni Alvarez Giovanni Alvarez
·

Welcome to the CodeMonkeyG engineering blog!

For years, my web home at codemonkeyg.com has served as an interactive resume and showcase of my work as a Systems Architect and Founding Engineer. But as systems grow and architectures evolve, having a dedicated space to write in-depth technical breakdowns, share architectural post-mortems, and document hard-earned lessons has become essential.

Why Astro for Markdown Blogging?

When deciding how to build this blog, I evaluated several static site generators and frameworks. I chose Astro for several key reasons:

  1. Zero-JS by Default: Astro renders pure HTML/CSS by default. For content-heavy technical blogs, this yields unbeatable lighthouse scores, sub-second load times, and minimal resource usage.
  2. First-Class Markdown & Content Collections: Content collections provide strict TypeScript type safety for Markdown frontmatter at compile time, eliminating broken links or malformed metadata.
  3. Seamless Design Integration: By utilizing Tailwind CSS configured with the same color palette as the main CodeMonkeyG resume (#0099ff, #ff9900, and #181818), the blog feels like an organic extension of the primary site.
  4. Clean Subpath Routing: With Astro’s base: '/blog' configuration, the blog lives cleanly under the /blog subdirectory.
// astro.config.mjs
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';

export default defineConfig({
  site: 'https://codemonkeyg.com',
  base: '/blog',
  integrations: [tailwind()],
  server: {
    host: '0.0.0.0',
    port: 4321,
  },
});

Docker Architecture

Just like the main CodeMonkeyG site, the Astro blog runs inside Docker. An Nginx reverse proxy terminates SSL on the frontend and handles upstream traffic delegation:

  • Root / → Served by containerized Nginx & PHP-FPM.
  • Subpath /blog → Reverse-proxied to the Astro container running on port 4321.

“Simplicity is prerequisite for reliability.” — Edsger W. Dijkstra

What to Expect Next

Upcoming articles will dive into:

  • Architectural patterns for high-concurrency systems
  • Docker and container orchestration strategies
  • Practical database optimization and caching layers
  • Modernizing legacy enterprise software

Stay tuned, and feel free to reach out via LinkedIn or GitHub!

Giovanni Alvarez

Giovanni Alvarez

15+ years building enterprise architecture, high-concurrency systems, and practical technology for businesses.