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.
- Exploring Engineering hub case studies and live CI snapshot - Part 20 — 2026-09-04
- Exploring React 19 SPA, CSS Modules, gettext i18n - Part 19 — 2026-09-03
- Exploring Graphify / local AI context without API billing - Part 18 — 2026-09-02
- Exploring Security gates (Gitleaks, Trivy, DefectDojo) - Part 17 — 2026-09-01
- Exploring Self-hosted Forgejo, Plane PORT-N workflow - Part 16 — 2026-08-31
- Exploring Vite prerender and SEO (sitemap, llms.txt, check-qa) - Part 15 — 2026-08-30
- Exploring Woodpecker CI/CD on low-RAM VPS - Part 14 — 2026-08-29
- Exploring Engineering hub case studies and live CI snapshot - Part 13 — 2026-08-28
- Exploring React 19 SPA, CSS Modules, gettext i18n - Part 12 — 2026-08-27
- Exploring Graphify / local AI context without API billing - Part 11 — 2026-08-26
- Exploring Security gates (Gitleaks, Trivy, DefectDojo) - Part 10 — 2026-08-25
- Exploring Self-hosted Forgejo, Plane PORT-N workflow - Part 9 — 2026-08-24
- Exploring Vite prerender and SEO (sitemap, llms.txt, check-qa) - Part 8 — 2026-08-23
- Exploring Woodpecker CI/CD on low-RAM VPS - Part 7 — 2026-08-22
- Exploring Engineering hub case studies and live CI snapshot - Part 6 — 2026-08-21
- Exploring React 19 SPA, CSS Modules, gettext i18n - Part 5 — 2026-08-20
- Exploring Graphify / local AI context without API billing - Part 4 — 2026-08-19
- Exploring Security gates (Gitleaks, Trivy, DefectDojo) - Part 3 — 2026-08-18
- Exploring Self-hosted Forgejo, Plane PORT-N workflow - Part 2 — 2026-08-17
- Exploring Vite prerender and SEO (sitemap, llms.txt, check-qa) - Part 1 — 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 — 2026-08-11
- Duplicate labels Keys in .woodpecker.yml — 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 — 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 — 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