Portfolio project Open Graph Image Template
A dark portfolio card with a project title, role chips, and image panel.
A dark portfolio card with a project title, role chips, and image panel.
Every Open Graph image template is included with Basic and Pro. Pick a plan to copy the code, install with the CLI, and download the raw SVG.
Already purchased? Log in
Use the Portfolio project template for case study pages on a personal site. It leads with the author and a label, then the project title, a one line description, role and year chips, and your work url, beside an abstract composition panel drawn in code. It gives every project a consistent card without exporting artwork for each one.
This template is a metadata image route for the Next.js App Router. The file exports size, contentType, and alt values plus a default async function that returns an ImageResponse. When a project page is shared, satori converts the JSX into an SVG document, the runtime rasterizes that SVG into a 1200 by 630 PNG, and Next.js serves the result and wires the og:image and twitter:image tags into the page head automatically. The panel is built from four flat shapes, so it reads as design work with no exported image.
Install with the shadcn CLI using your Shadcn UI Blocks API key:
npx shadcn@latest add @shadcn-ui-blocks/og-image-portfolio-project
The file lands at app/opengraph-image.tsx, which makes it the site wide share card. For a portfolio, move it into the project segment instead, for example app/work/[slug]/opengraph-image.tsx. You can also copy the code from this page straight into your project.
The card renders text with Inter, read from assets/fonts at your project root with node:fs so the font files never ship to the browser. Download the latin woff files for weights 400, 500, 600, and 700 from Fontsource and save them as assets/fonts/inter-latin-400-normal.woff and so on.
The content object holds the author, label, title, description, chips, and url. The chips array carries the role and year, two entries by default, each rendered as a bordered pill, so add or drop entries to fit. The composition panel is four div shapes tinted with the zinc values already in the file; recolor them there, or replace the panel with an img at an absolute URL to show a real screenshot. Titles hold to about one line at this size, so trim the fontSize for longer names.
satori supports a focused subset of CSS: flexbox layout only, flat colors, and an explicit display: flex on any element with multiple children. Keep those rules in mind if you rework the layout.