← All blocks

Featured post beside a recent-posts list

blog · featured-beside-list · blog-featured-list

npx shadcn@latest add @plus-ui/blog-featured-list

Default content

{
  "eyebrow": "Rivetlane engineering",
  "title": "How the deploy pipeline actually works",
  "description": "Build internals, edge routing and the incidents we learned from.",
  "categories": [
    "Builds",
    "Edge",
    "Incidents",
    "Guides"
  ],
  "labels": {
    "all": "All",
    "filter": "Filter posts by topic",
    "featured": "Featured",
    "recent": "Latest"
  },
  "viewAll": {
    "label": "All engineering posts",
    "href": "#"
  },
  "posts": [
    {
      "title": "Cold builds in 41 seconds: rebuilding the dependency cache",
      "excerpt": "We replaced a per-project tarball cache with content-addressed layers shared across a team. Median cold build time fell from 3m12s to 41s.",
      "href": "#",
      "category": "Builds",
      "cover": {
        "src": "https://images.unsplash.com/photo-1508780709619-79562169bc64?auto=format&fit=crop&w=1600&h=1000&q=80",
        "alt": "Hands typing on a laptop in low light"
      },
      "author": {
        "name": "Inés Carvalho",
        "role": "Staff Engineer, Build",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Inés Carvalho"
        }
      },
      "date": "Oct 2, 2026",
      "dateTime": "2026-10-02",
      "readTime": "12 min read"
    },
    {
      "title": "Postmortem: 38 minutes of stale previews in eu-west",
      "excerpt": "A cache key missed the branch name after a config migration. Timeline, impact and the four changes we shipped.",
      "href": "#",
      "category": "Incidents",
      "cover": {
        "src": "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "Two engineers reviewing a timeline on a laptop"
      },
      "author": {
        "name": "Jonas Ekberg",
        "role": "Edge Network",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Jonas Ekberg"
        }
      },
      "date": "Sep 26, 2026",
      "dateTime": "2026-09-26",
      "readTime": "7 min read"
    },
    {
      "title": "Routing preview URLs at the edge without a database read",
      "excerpt": "Signed hostnames let every edge node resolve a preview deploy locally. How the scheme works and what it costs.",
      "href": "#",
      "category": "Edge",
      "cover": {
        "src": "https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "A laptop showing code on a white desk"
      },
      "author": {
        "name": "Kenji Moreau",
        "role": "Platform Engineer",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Kenji Moreau"
        }
      },
      "date": "Sep 18, 2026",
      "dateTime": "2026-09-18",
      "readTime": "9 min read"
    },
    {
      "title": "Monorepo previews: build only what the diff touched",
      "excerpt": "Configure project roots and ignored paths so a docs change never rebuilds the API. A step-by-step guide.",
      "href": "#",
      "category": "Guides",
      "cover": {
        "src": "https://images.unsplash.com/photo-1515378791036-0648a3ef77b2?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "Hands on a laptop on a wooden desk"
      },
      "author": {
        "name": "Priya Raman",
        "role": "Developer Relations",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1544005313-94ddf0286df2?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Priya Raman"
        }
      },
      "date": "Sep 11, 2026",
      "dateTime": "2026-09-11",
      "readTime": "6 min read"
    },
    {
      "title": "Why rollbacks are instant and redeploys are not",
      "excerpt": "Every deploy is immutable, so a rollback is a pointer swap. A redeploy runs the build again. Picking the right one under pressure.",
      "href": "#",
      "category": "Guides",
      "cover": {
        "src": "https://images.unsplash.com/photo-1519389950473-47ba0277781c?auto=format&fit=crop&w=1200&h=800&q=80",
        "alt": "An overhead view of a desk with several laptops"
      },
      "author": {
        "name": "Inés Carvalho",
        "role": "Staff Engineer, Build",
        "avatar": {
          "src": "https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?auto=format&fit=crop&crop=faces&w=96&h=96&q=80",
          "alt": "Portrait of Inés Carvalho"
        }
      },
      "date": "Sep 4, 2026",
      "dateTime": "2026-09-04",
      "readTime": "4 min read"
    }
  ]
}