{
    "version": "https://jsonfeed.org/version/1.1",
    "title": "Gabriel Silva — Blog",
    "description": "Ensaios, notas e craft sobre desenvolvimento web por Gabriel Henrique da Silva.",
    "home_page_url": "https://eu.gabrielsv.com",
    "feed_url": "https://eu.gabrielsv.com/feed.json",
    "language": "pt-BR",
    "authors": [{
            "name": "Gabriel"
        }
    ],
    "items": [{
            "id": "https://eu.gabrielsv.com/17",
            "title": "PHP sem framework em 2026: arquitetura, c\u00f3digo e o que voc\u00ea assume quando dispensa o Laravel",
            "url": "https://eu.gabrielsv.com/blog/php-sem-framework-em-2026",
            "content_html": "Framework n\u00e3o \u00e9 resposta autom\u00e1tica pra todo projeto. Veja quando PHP sem framework ainda \u00e9 a melhor escolha t\u00e9cnica em 2026, com quatro cen\u00e1rios completos: webhook do Mercado Pago, API REST com PostgreSQL, importa\u00e7\u00e3o de CSV via CLI e formul\u00e1rio de contato com prote\u00e7\u00e3o CSRF e envio via SMTP.",
            "summary": "Framework n\u00e3o \u00e9 resposta autom\u00e1tica pra todo projeto. Veja quando PHP sem framework ainda \u00e9 a melhor escolha t\u00e9cnica em 2026, com quatro cen\u00e1rios completos: webhook do Mercado Pago, API REST com PostgreSQL, importa\u00e7\u00e3o de CSV via CLI e formul\u00e1rio de contato com prote\u00e7\u00e3o CSRF e envio via SMTP.",
            "date_published": "2026-05-23T02:17:53+00:00",
            "date_modified": "2026-05-23T02:17:53+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/16",
            "title": "Observabilidade em Node e NestJS na pr\u00e1tica: logs, m\u00e9tricas e traces sem enche\u00e7\u00e3o de lingui\u00e7a",
            "url": "https://eu.gabrielsv.com/blog/observabilidade-node-nestjs-logs-metricas-traces",
            "content_html": "Rodar c\u00f3digo em produ\u00e7\u00e3o \u00e9 uma coisa; entender o que ele est\u00e1 fazendo \u00e9 outra. Veja como montar observabilidade real em Node\/NestJS: logs estruturados com Pino, m\u00e9tricas com Prometheus e tracing com OpenTelemetry, do zero ao painel que importa.",
            "summary": "Rodar c\u00f3digo em produ\u00e7\u00e3o \u00e9 uma coisa; entender o que ele est\u00e1 fazendo \u00e9 outra. Veja como montar observabilidade real em Node\/NestJS: logs estruturados com Pino, m\u00e9tricas com Prometheus e tracing com OpenTelemetry, do zero ao painel que importa.",
            "date_published": "2026-05-20T01:28:36+00:00",
            "date_modified": "2026-05-20T01:28:36+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/15",
            "title": "Guia Completo de Filas e Jobs Ass\u00edncronos com BullMQ e Redis no NestJS ",
            "url": "https://eu.gabrielsv.com/blog/filas-bullmq-redis-nestjs",
            "content_html": "Tirar trabalho pesado do caminho da requisi\u00e7\u00e3o \u00e9 s\u00f3 o come\u00e7o. Veja como usar filas com BullMQ e Redis no NestJS de verdade: ciclo de vida do job, retry inteligente, idempot\u00eancia, concorr\u00eancia com rate limit e desligamento seguro.",
            "summary": "Tirar trabalho pesado do caminho da requisi\u00e7\u00e3o \u00e9 s\u00f3 o come\u00e7o. Veja como usar filas com BullMQ e Redis no NestJS de verdade: ciclo de vida do job, retry inteligente, idempot\u00eancia, concorr\u00eancia com rate limit e desligamento seguro.",
            "date_published": "2026-05-19T02:58:08+00:00",
            "date_modified": "2026-05-19T02:58:08+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/13",
            "title": "Node.js em 2026: novas APIs nativas, ESM e Test Runner integrado",
            "url": "https://eu.gabrielsv.com/blog/nodejs-2026-novidades-fetch-test-runner-esm",
            "content_html": "\nSe voc\u00ea acompanha o mundo do JavaScript, sabe que o Node.js est\u00e1 em constante evolu\u00e7\u00e3o. L\u00e1 atr\u00e1s, ele trouxe o poder do JavaScript para o servidor. Agora, em 2026, est\u00e1 cada vez mais pr\u00f3ximo do naveg...",
            "summary": "\nSe voc\u00ea acompanha o mundo do JavaScript, sabe que o Node.js est\u00e1 em constante evolu\u00e7\u00e3o. L\u00e1 atr\u00e1s, ele trouxe o poder do JavaScript para o servidor. Agora, em 2026, est\u00e1 cada vez mais pr\u00f3ximo do naveg...",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/12",
            "title": "Next.js: Server ou Client? Acabou a confus\u00e3o",
            "url": "https://eu.gabrielsv.com/blog/next-js-server-client-components",
            "content_html": "Se voc\u00ea ainda se confunde entre Server e Client Components no Next.js, esse guia \u00e9 pra voc\u00ea. Entenda de forma pr\u00e1tica quando usar cada um, os erros mais comuns, como evitar enviar JavaScript desnecess\u00e1rio e como extrair o m\u00e1ximo de performance do framework.",
            "summary": "Se voc\u00ea ainda se confunde entre Server e Client Components no Next.js, esse guia \u00e9 pra voc\u00ea. Entenda de forma pr\u00e1tica quando usar cada um, os erros mais comuns, como evitar enviar JavaScript desnecess\u00e1rio e como extrair o m\u00e1ximo de performance do framework.",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/10",
            "title": "Socket.io no NestJS: Tempo real sem c\u00f3digo espaguete",
            "url": "https://eu.gabrielsv.com/blog/socket-io-no-nestjs-tempo-real-sem-codigo-espaguete",
            "content_html": "Implementar WebSockets no Node.js puro quase sempre resulta em c\u00f3digo espaguete dif\u00edcil de manter. Veja como o NestJS resolve isso usando Gateways para organizar a comunica\u00e7\u00e3o em tempo real (como chats e notifica\u00e7\u00f5es), mantendo seu backend limpo, test\u00e1vel e escal\u00e1vel, exatamente como uma boa arquitetura deve ser.",
            "summary": "Implementar WebSockets no Node.js puro quase sempre resulta em c\u00f3digo espaguete dif\u00edcil de manter. Veja como o NestJS resolve isso usando Gateways para organizar a comunica\u00e7\u00e3o em tempo real (como chats e notifica\u00e7\u00f5es), mantendo seu backend limpo, test\u00e1vel e escal\u00e1vel, exatamente como uma boa arquitetura deve ser.",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/9",
            "title": "Refatora\u00e7\u00e3o que vale a pena vs refatora\u00e7\u00e3o que \u00e9 perda de tempo",
            "url": "https://eu.gabrielsv.com/blog/refatoracao-que-vale-a-pena-vs-refatoracao-que-e-perda-de-tempo",
            "content_html": "Nem toda refatora\u00e7\u00e3o vale a pena e nem todo c\u00f3digo feio precisa ser reescrito. Descubra quando gastar tempo refatorando e quando focar em entregar valor, sem checklist complicada ou teoria acad\u00eamica.",
            "summary": "Nem toda refatora\u00e7\u00e3o vale a pena e nem todo c\u00f3digo feio precisa ser reescrito. Descubra quando gastar tempo refatorando e quando focar em entregar valor, sem checklist complicada ou teoria acad\u00eamica.",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/8",
            "title": "Clean Code na pr\u00e1tica: O que realmente faz diferen\u00e7a no dia a dia",
            "url": "https://eu.gabrielsv.com/blog/clean-code-na-pratica-o-que-realmente-faz-diferenca-no-dia-a-dia",
            "content_html": "Chega de teoria acad\u00eamica. Aprenda como o Clean Code melhora a manutenibilidade e sua produtividade com nomes honestos, Early Return e refatora\u00e7\u00e3o na pr\u00e1tica",
            "summary": "Chega de teoria acad\u00eamica. Aprenda como o Clean Code melhora a manutenibilidade e sua produtividade com nomes honestos, Early Return e refatora\u00e7\u00e3o na pr\u00e1tica",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/7",
            "title": "Stateless vs Stateful: Qual a melhor arquitetura de autentica\u00e7\u00e3o para o seu backend?",
            "url": "https://eu.gabrielsv.com/blog/stateless-vs-stateful-qual-a-melhor-arquitetura-de-autenticacao-para-o-seu-backend",
            "content_html": "Uma compara\u00e7\u00e3o t\u00e9cnica entre autentica\u00e7\u00e3o Stateful (Sessions) e Stateless (JWT), explicando fluxo, trade-offs, escalabilidade, seguran\u00e7a e exemplos pr\u00e1ticos em Express para ajudar na decis\u00e3o arquitetural",
            "summary": "Uma compara\u00e7\u00e3o t\u00e9cnica entre autentica\u00e7\u00e3o Stateful (Sessions) e Stateless (JWT), explicando fluxo, trade-offs, escalabilidade, seguran\u00e7a e exemplos pr\u00e1ticos em Express para ajudar na decis\u00e3o arquitetural",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/6",
            "title": "Por que o PHP n\u00e3o morreu (e o Laravel \u00e9 a prova disso)",
            "url": "https://eu.gabrielsv.com/blog/por-que-o-php-nao-morreu",
            "content_html": "Todo ano decretam a morte do PHP, mas a realidade \u00e9 outra. Neste artigo, voc\u00ea entende por que o PHP moderno (8+) \u00e9 r\u00e1pido, tipado, seguro e como o Laravel elevou a produtividade e a experi\u00eancia de desenvolvimento a outro n\u00edvel em 2025",
            "summary": "Todo ano decretam a morte do PHP, mas a realidade \u00e9 outra. Neste artigo, voc\u00ea entende por que o PHP moderno (8+) \u00e9 r\u00e1pido, tipado, seguro e como o Laravel elevou a produtividade e a experi\u00eancia de desenvolvimento a outro n\u00edvel em 2025",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/5",
            "title": "TypeScript: O m\u00ednimo que voc\u00ea precisa saber",
            "url": "https://eu.gabrielsv.com/blog/typescript-basico-para-comecar",
            "content_html": "O TypeScript n\u00e3o precisa ser complicado. Com apenas o b\u00e1sico, voc\u00ea j\u00e1 pode evitar os erros comuns do JavaScript e escrever c\u00f3digo mais seguro e f\u00e1cil de manter. Aprenda tipos b\u00e1sicos, infer\u00eancia, arrays, objetos, fun\u00e7\u00f5es e como usar o TypeScript no seu dia a dia",
            "summary": "O TypeScript n\u00e3o precisa ser complicado. Com apenas o b\u00e1sico, voc\u00ea j\u00e1 pode evitar os erros comuns do JavaScript e escrever c\u00f3digo mais seguro e f\u00e1cil de manter. Aprenda tipos b\u00e1sicos, infer\u00eancia, arrays, objetos, fun\u00e7\u00f5es e como usar o TypeScript no seu dia a dia",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/4",
            "title": "Spring Boot: O b\u00e1sico que voc\u00ea esqueceu (ou nunca aprendeu direito)",
            "url": "https://eu.gabrielsv.com/blog/spring-boot-guia-simples-api-rest",
            "content_html": "Um guia direto e pr\u00e1tico para quem est\u00e1 come\u00e7ando ou voltando ao Spring Boot. Veja como criar uma API REST funcional usando Java, Maven, H2 e o b\u00e1sico de controller, service, repository e entity sem enrola\u00e7\u00e3o, com exemplos reais.",
            "summary": "Um guia direto e pr\u00e1tico para quem est\u00e1 come\u00e7ando ou voltando ao Spring Boot. Veja como criar uma API REST funcional usando Java, Maven, H2 e o b\u00e1sico de controller, service, repository e entity sem enrola\u00e7\u00e3o, com exemplos reais.",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/3",
            "title": "CSS Grid vs Flexbox: Quando usar cada um (guia honesto)",
            "url": "https://eu.gabrielsv.com/blog/grid-ou-flexbox-quando-usar",
            "content_html": "Flexbox ou Grid? Nesta explica\u00e7\u00e3o direta e sem enrola\u00e7\u00e3o, voc\u00ea aprende exatamente quando usar cada um, com exemplos reais, regras simples e compara\u00e7\u00f5es que facilitam seu dia a dia no CSS",
            "summary": "Flexbox ou Grid? Nesta explica\u00e7\u00e3o direta e sem enrola\u00e7\u00e3o, voc\u00ea aprende exatamente quando usar cada um, com exemplos reais, regras simples e compara\u00e7\u00f5es que facilitam seu dia a dia no CSS",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/2",
            "title": "Adeus XAMPP: Subindo um WordPress local com Docker em 5 minutos",
            "url": "https://eu.gabrielsv.com/blog/wordpress-docker-compose",
            "content_html": "Um guia pr\u00e1tico (e real) mostrando como rodar um ambiente WordPress completo usando Docker em segundos, sem depender de XAMPP, WampServer ou qualquer gambiarra local",
            "summary": "Um guia pr\u00e1tico (e real) mostrando como rodar um ambiente WordPress completo usando Docker em segundos, sem depender de XAMPP, WampServer ou qualquer gambiarra local",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        },
        {
            "id": "https://eu.gabrielsv.com/1",
            "title": "HTML para E-mail: Por que ainda usamos &lt;table> em 2025?",
            "url": "https://eu.gabrielsv.com/blog/html-email-table-2025",
            "content_html": "HTML pra e-mail \u00e9 um universo paralelo onde nada evoluiu. Aqui eu conto por que table ainda manda em 2025 e mostro exemplos de como realmente montar layouts que n\u00e3o quebram.",
            "summary": "HTML pra e-mail \u00e9 um universo paralelo onde nada evoluiu. Aqui eu conto por que table ainda manda em 2025 e mostro exemplos de como realmente montar layouts que n\u00e3o quebram.",
            "date_published": "2026-05-18T18:02:41+00:00",
            "date_modified": "2026-05-18T18:02:41+00:00",
            "authors": [{ "name": "Gabriel" }],
            "tags": [  ]
        }        
    ]
}
