Notes on building software
Writing by Rafael González Albes — software engineer — on backend systems, delivery workflows, security gates, and developer portfolio SEO.
Topics include Woodpecker CI/CD, Symfony at scale, Vite prerender without Next.js, Gitleaks and Trivy, Circadian templates, gettext i18n, local LLM routing, Plane PORT-N workflows, and SFTP deploy.
- Platform Architecture Diagrams as Code — SVG Validation and Pipeline Integration — 2026-09-04
- Circadian Layout Switching Without State Leaks or Layout Shifts — 2026-09-03
- Querying Subgraphs vs Brute-Force Grep in AI Coding Workflows — 2026-09-02
- DefectDojo Vulnerability Deduplication — Triaging Security Scans — 2026-09-01
- Event-Driven Automation — Plane, Woodpecker, and Discord Webhooks — 2026-08-31
- The check-qa Release Verification Gate — Blocking Broken Deployments — 2026-08-30
- Multi-VPS CI Topology — Routing Woodpecker Builds with Agent Labels — 2026-08-29
- Documenting Infrastructure That Converts — The Engineering Hub Case Studies — 2026-08-28
- Gettext .po Bundle-Time Compilation — Zero Runtime Parsing — 2026-08-27
- Graphify in Local Dev Loops — Predev Hooks and Stale Cache Invalidation — 2026-08-26
- Automating Trivy Container and Lockfile Vulnerability Scans — 2026-08-25
- Self-Hosting Git with Forgejo — Developer Sovereignty — 2026-08-24
- llms.txt and AI Crawler Optimization — Without a SaaS — 2026-08-23
- Woodpecker on a 2GB VPS — Taming Memory Constraints — 2026-08-22
- Building the Live CI Pipeline Snapshot on the Engineering Hub — 2026-08-21
- React 19 SPA Architecture — Strict Scoping with CSS Modules — 2026-08-20
- Graphify AST Knowledge Graphs — Zero-API Codebase Intelligence — 2026-08-19
- Hardening CI with Gitleaks — Secrets Scanning in Woodpecker — 2026-08-18
- Connecting Forgejo and Plane — The PORT-N Branch Protocol — 2026-08-17
- Vite Prerendering Architecture — Static Snapshots at Build Time — 2026-08-16
- Traefik noindex for Private Platform Services — 2026-08-15
- profile-photo.png for Google SERP Portrait Signals — 2026-08-14
- Docker Preflight Before Writing Finalize — 2026-08-13
- Gallery Site Guide — Route by Audience — 2026-08-12
- Replacing the Default Vite README — Documentation That Teaches — 2026-08-11
- Duplicate labels Keys in .woodpecker.yml — The Silent YAML Footgun — 2026-08-10
- Invalid XML in platform-cluster.svg — Diagrams That Break Builds — 2026-08-09
- Hiding the LLM Cost Line on AI Stack Cards — 2026-08-08
- Shipping aifeatures.ai — My First Live Product — 2026-08-07
- Platform at a Glance — AI and Security Highlights — 2026-08-06
- MIT License on a Portfolio That Others Fork — 2026-08-05
- Routing Woodpecker Pipelines to the Infra VPS Agent — 2026-08-04
- DefectDojo Reimport When Scans Are Empty — 2026-08-03
- Multilingual FAQ Schema and alumniOf Credentials — 2026-08-02
- Purging Real Hostnames from .env.example History — 2026-08-01
- Writing Backfill — Missing Days, One Push — 2026-07-31
- Engineering AI and Security Tabs — Documenting What Agents and CI Actually Run — 2026-07-30
- Woodpecker on a Low-RAM VPS — Serialize, Cap Heap, Reuse Workspace — 2026-07-29
- React Router 8 — Patch GHSA Without RSC Framework Mode — 2026-07-28
- Live Favicon Verification Before Search Console — 2026-07-27
- Live CI Snapshot on the Engineering Hub — 2026-07-26
- llms.txt for AI Crawlers — Without a SaaS — 2026-07-25
- check-qa Before SFTP Deploy — Gates That Block Broken Ships — 2026-07-24
- Google SERP Favicon That Actually Shows Up — 2026-07-23
- Discord and Plane When Woodpecker Fails — CI That Talks Back — 2026-07-22
- Trivy and DefectDojo in Woodpecker — A Security Inbox for Every Build — 2026-07-21
- Enabling HTTP/3 — Cloudflare for the Portfolio, Traefik for the Platform — 2026-07-21
- Gitleaks in Woodpecker — Catch Secrets Before They Ship — 2026-07-20
- Prerendering a Vite SPA for SEO — Without Next.js — 2026-07-19
- Plane Tickets That Match Git Branches (PORT-N) — 2026-07-18
- Local LLM Routing: When Ollama Answers and When Cursor Takes Over — 2026-07-17
- gettext .po Files in Vite — Without a Translation SaaS — 2026-07-16
- SEO for Software Engineer Portfolios — Beyond Meta Tags — 2026-07-15
- Self-Hosted CI/CD with Woodpecker for a Developer Portfolio — 2026-07-10
- Trivy and DefectDojo in a Static-Site Pipeline — 2026-07-08
- Discord Alerts When CI Goes Red — Actionable Failure Notifications — 2026-07-03
- SFTP Deploy Without Vercel — Boring on Purpose — 2026-06-25
- Designing Symfony APIs for Scale — 2026-06-18
- Docker for Portfolio Builds on Any Machine — 2026-06-12
- CSS Modules Over Tailwind for a Solo Portfolio — 2026-06-04
- Circadian Templates — Eight Layouts Without a Design System Library — 2026-05-28