{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Waves' Blog",
  "description": "Security Blog",
  "home_page_url": "https://blog.wavespro.net/en/",
  "feed_url": "https://blog.wavespro.net/en/feed.json",
  "language": "en",
  "authors": [
    {
      "name": "Waves"
    }
  ],
  "items": [
    {
      "id": "https://blog.wavespro.net/en/posts/keyless-deploy-with-oidc",
      "url": "https://blog.wavespro.net/en/posts/keyless-deploy-with-oidc",
      "title": "Keyless Deploys to Azure from GitHub Actions: How OIDC Federation Works",
      "content_text": "How this blog deploys to Azure Static Web Apps with zero long-lived secrets on GitHub: workload identity, federated credentials, OIDC Discovery, the two-token dance, and trust boundaries.",
      "date_published": "2026-07-03T00:00:00.000Z",
      "date_modified": "2026-07-03T00:00:00.000Z",
      "tags": [
        "security",
        "azure",
        "oidc",
        "ci-cd"
      ]
    },
    {
      "id": "https://blog.wavespro.net/en/posts/view-transitions-and-islands",
      "url": "https://blog.wavespro.net/en/posts/view-transitions-and-islands",
      "title": "View Transitions x Astro Islands: Buttery Navigation on a Tight Budget",
      "content_text": "Pair the native View Transitions API with Astro Islands to land smooth cross-page motion and scoped interactivity — while keeping the zero-JS default and a sub-50 KB first-paint budget.",
      "date_published": "2026-06-28T00:00:00.000Z",
      "date_modified": "2026-06-28T00:00:00.000Z",
      "tags": [
        "astro",
        "performance",
        "ux"
      ]
    },
    {
      "id": "https://blog.wavespro.net/en/posts/strict-csp-on-static-hosting",
      "url": "https://blog.wavespro.net/en/posts/strict-csp-on-static-hosting",
      "title": "Strict CSP on Static Hosting: Lessons from Azure SWA",
      "content_text": "Shipping script-src 'self' on Azure Static Web Apps: why per-request nonces are off the table, the Trusted Types / Pagefind trade-off, and pinning every header in staticwebapp.config.json.",
      "date_published": "2026-06-24T00:00:00.000Z",
      "date_modified": "2026-06-24T00:00:00.000Z",
      "tags": [
        "security",
        "csp",
        "azure"
      ]
    },
    {
      "id": "https://blog.wavespro.net/en/posts/hello-astro",
      "url": "https://blog.wavespro.net/en/posts/hello-astro",
      "title": "Why Astro 5 Powers This Blog",
      "content_text": "A tour of the stack behind this bilingual blog: Astro 5 Islands, zero-JS by default, Tailwind v4 CSS-first, and why I picked Astro over Next.js or a plain static generator.",
      "date_published": "2026-06-20T00:00:00.000Z",
      "date_modified": "2026-06-20T00:00:00.000Z",
      "tags": [
        "astro",
        "meta",
        "frontend"
      ]
    }
  ]
}