<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Almir Dev | Software Engineer</title><description>Portfolio of José Almir featuring projects in the TypeScript ecosystem, including React, Node.js, and Next.js. Case studies focused on architecture, product thinking, and business impact.</description><link>https://almirdev.com/</link><language>en-us</language><item><title>A CMS that uses GitHub as a database</title><link>https://almirdev.com/en/blog/cms-portfolio/</link><guid isPermaLink="true">https://almirdev.com/en/blog/cms-portfolio/</guid><description>The idea of file-managed content was not new to me, but this portfolio was the opportunity to take the concept to another level: building a simple CMS using the GitHub repository itself as a database.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Dependency Injection with TypeScript and Express: Framework-free</title><link>https://almirdev.com/en/blog/di-typescript-express/</link><guid isPermaLink="true">https://almirdev.com/en/blog/di-typescript-express/</guid><description>Learn how to apply Constructor Dependency Injection in Express routes using Vanilla TypeScript to solve tight coupling and simplify tests.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Rebuilding My Portfolio: From Legacy to Astro</title><link>https://almirdev.com/en/blog/rebuilding-portfolio-astro/</link><guid isPermaLink="true">https://almirdev.com/en/blog/rebuilding-portfolio-astro/</guid><description>Discover how I rebuilt my portfolio from Next.js to Astro. A simpler, faster SSG architecture built to focus on what matters.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Result Pattern: Ditch try/catch in TypeScript</title><link>https://almirdev.com/en/blog/result-pattern/</link><guid isPermaLink="true">https://almirdev.com/en/blog/result-pattern/</guid><description>Learn how to use the Result pattern in TypeScript to create predictable, type-safe error handling and avoid unexpected runtime exceptions.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Strategy Pattern in TypeScript: End the Giant if/else</title><link>https://almirdev.com/en/blog/strategy-pattern/</link><guid isPermaLink="true">https://almirdev.com/en/blog/strategy-pattern/</guid><description>Learn how to use the Strategy Pattern in TypeScript to replace giant if/else blocks with interchangeable strategies and code that respects the Open/Closed principle.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>