From 2e6b47afec50c178215859f10ec94bc9e5ca6100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20K=C3=B6nig?= Date: Sat, 6 Apr 2024 14:47:56 +0200 Subject: [PATCH] feat: adds support for Open Graph images --- .../model.ts | 1 + .../query.ts | 2 + .../route.tsx | 48 +++++- app/routes/api.$category.$slug[.png]/model.ts | 8 + app/routes/api.$category.$slug[.png]/query.ts | 32 ++++ app/routes/api.$category.$slug[.png]/route.ts | 51 ++++++ app/utils/create-og-image.server.tsx | 148 ++++++++++++++++++ bun.lockb | Bin 329901 -> 341642 bytes package.json | 2 + 9 files changed, 291 insertions(+), 1 deletion(-) create mode 100644 app/routes/api.$category.$slug[.png]/model.ts create mode 100644 app/routes/api.$category.$slug[.png]/query.ts create mode 100644 app/routes/api.$category.$slug[.png]/route.ts create mode 100644 app/utils/create-og-image.server.tsx diff --git a/app/routes/_frontend.$category.$slug.details/model.ts b/app/routes/_frontend.$category.$slug.details/model.ts index f0dbaf3..a9fef56 100644 --- a/app/routes/_frontend.$category.$slug.details/model.ts +++ b/app/routes/_frontend.$category.$slug.details/model.ts @@ -6,6 +6,7 @@ const Workflow = z.object({ id: z.string(), category: z.string(), name: z.string(), + description: z.string(), title: z.string(), readme: z.string(), installCommand: z.string(), diff --git a/app/routes/_frontend.$category.$slug.details/query.ts b/app/routes/_frontend.$category.$slug.details/query.ts index 272daf2..a301c88 100644 --- a/app/routes/_frontend.$category.$slug.details/query.ts +++ b/app/routes/_frontend.$category.$slug.details/query.ts @@ -27,6 +27,7 @@ export async function getModel( id: currentWorkflowDao.id, category: currentWorkflowDao.category, name: currentWorkflowDao.name, + description: currentWorkflowDao.description, title: currentWorkflowDao.title, readme: currentWorkflowDao.readme, installCommand: createInstallCommand(baseUrl, currentWorkflowDao.id), @@ -35,6 +36,7 @@ export async function getModel( id: dao.id, category: dao.category, name: dao.name, + description: dao.description, title: dao.title, readme: dao.readme, installCommand: createInstallCommand(baseUrl, dao.id), diff --git a/app/routes/_frontend.$category.$slug.details/route.tsx b/app/routes/_frontend.$category.$slug.details/route.tsx index 8a9a33f..2535495 100644 --- a/app/routes/_frontend.$category.$slug.details/route.tsx +++ b/app/routes/_frontend.$category.$slug.details/route.tsx @@ -17,6 +17,7 @@ import { } from "~/components/ui/dropdown-menu"; import { WorkflowDetailCard } from "~/components/workflow-detail-card"; import { cn } from "~/utils/cn"; +import { getBaseUrl } from "~/utils/get-base-url.server"; import { getModel } from "./query"; export const meta: MetaFunction = ({ data }) => { @@ -24,10 +25,55 @@ export const meta: MetaFunction = ({ data }) => { { title: `GitHub Actions Starter Workflows: ${data?.currentWorkflow.title} - getactions.dev`, }, + { + name: "description", + content: data?.currentWorkflow.description, + }, + { + property: "og:site_name", + content: "getactions.dev", + }, + { + property: "og:type", + content: "article", + }, + { + property: "og:title", + content: data?.currentWorkflow.title, + }, + { + property: "og:description", + content: data?.currentWorkflow.description, + }, + { + property: "og:url", + content: `${data?.baseUrl}/${data?.currentWorkflow.id}/details`, + }, + { + property: "og:image", + content: `${data?.baseUrl}/api/${data?.currentWorkflow.id}.png`, + }, + { + property: "twitter:card", + content: "summary_large_image", + }, + { + property: "twitter:title", + content: data?.currentWorkflow.title, + }, + { + property: "twitter:description", + content: data?.currentWorkflow.description, + }, + { + property: "twitter:image", + content: `${data?.baseUrl}/api/${data?.currentWorkflow.id}.png`, + }, ]; }; export async function loader({ params, request }: LoaderFunctionArgs) { + const baseUrl = getBaseUrl(request); const category = String(params.category); const slug = String(params.slug); @@ -45,7 +91,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) { const model = result.value; - return json(model); + return json({ baseUrl, ...model }); } export default function WorkflowDetails() { diff --git a/app/routes/api.$category.$slug[.png]/model.ts b/app/routes/api.$category.$slug[.png]/model.ts new file mode 100644 index 0000000..f783730 --- /dev/null +++ b/app/routes/api.$category.$slug[.png]/model.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; + +export const Model = z.object({ + id: z.string(), + category: z.object({ id: z.string(), name: z.string() }), + title: z.string(), + installCommand: z.string(), +}); diff --git a/app/routes/api.$category.$slug[.png]/query.ts b/app/routes/api.$category.$slug[.png]/query.ts new file mode 100644 index 0000000..29f1342 --- /dev/null +++ b/app/routes/api.$category.$slug[.png]/query.ts @@ -0,0 +1,32 @@ +import { findById, getCategories } from "#workflows"; +import { err, ok } from "neverthrow"; +import { getBaseUrl } from "~/utils/get-base-url.server"; +import { Model } from "./model"; + +export async function getModel( + request: Request, + category: string, + slug: string, +) { + const baseUrl = getBaseUrl(request); + const id = `${category}/${slug}`; + + const workflow = findById(id); + + const installCommand = `curl -s ${baseUrl}/${id} | sh`; + + const currentCatgory = getCategories().find((c) => c.id === category); + + const model = Model.safeParse({ + id, + category: currentCatgory, + title: workflow.title, + installCommand, + }); + + if (!model.success) { + return err(new Error(`failed to prepare view model: ${model.error}`)); + } + + return ok(model.data); +} diff --git a/app/routes/api.$category.$slug[.png]/route.ts b/app/routes/api.$category.$slug[.png]/route.ts new file mode 100644 index 0000000..912fd8a --- /dev/null +++ b/app/routes/api.$category.$slug[.png]/route.ts @@ -0,0 +1,51 @@ +import type { LoaderFunctionArgs } from "@remix-run/node"; +import { z } from "zod"; +import { makeGenerateOgImage } from "~/utils/create-og-image.server"; +import { getModel } from "./query"; + +const ParamsSchema = z.object({ + category: z.string(), + slug: z.string(), +}); + +export async function loader(args: LoaderFunctionArgs) { + const params = ParamsSchema.safeParse(args.params); + + if (!params.success) { + throw new Response("Bad Request", { status: 400 }); + } + + const fetchModelResult = await getModel( + args.request, + params.data.category, + params.data.slug, + ); + + if (fetchModelResult.isErr()) { + console.error(fetchModelResult.error); + + throw new Response("Internal Server Error", { status: 500 }); + } + + const model = fetchModelResult.value; + + const createOgImage = makeGenerateOgImage(); + + const resultOfGeneratingImage = await createOgImage({ + title: model.title, + subtitle: `GitHub Actions ${model.category.name} Starter Workflow`, + shell: model.installCommand, + }); + + if (resultOfGeneratingImage.isErr()) { + throw new Response("Internal Server Error", { status: 500 }); + } + + const { image } = resultOfGeneratingImage.value; + + return new Response(image, { + headers: { + "Content-Type": "image/png", + }, + }); +} diff --git a/app/utils/create-og-image.server.tsx b/app/utils/create-og-image.server.tsx new file mode 100644 index 0000000..547159a --- /dev/null +++ b/app/utils/create-og-image.server.tsx @@ -0,0 +1,148 @@ +import type { SatoriOptions } from "satori"; + +import satori from "satori"; + +import { Resvg } from "@resvg/resvg-js"; +import { err, ok } from "neverthrow"; + +type GenerateOgImageRequest = Readonly<{ + title: string; + subtitle: string; + shell?: string; +}>; + +// hypercolor gradients (https://hypercolor.dev) +const backgrounds = [ + { + name: "Hypher", + css: "linear-gradient(to right top, rgb(236, 72, 153), rgb(239, 68, 68), rgb(234, 179, 8))", + }, + { + name: "Midnight", + css: "linear-gradient(to right top, rgb(29, 78, 216), rgb(30, 64, 175), rgb(17, 24, 39))", + }, + { + name: "Flamingo", + css: "linear-gradient(to right top, rgb(244, 114, 182), rgb(219, 39, 119))", + }, + { + name: "Solid Blue", + css: "linear-gradient(to left, rgb(59, 130, 246), rgb(37, 99, 235))", + }, + { + name: "Picture", + css: "linear-gradient(to left bottom, rgb(217, 70, 239), rgb(220, 38, 38), rgb(251, 146, 60))", + }, + { + name: "Video", + css: "linear-gradient(to left top, rgb(239, 68, 68), rgb(153, 27, 27))", + }, + { + name: "Pink Neon", + css: "linear-gradient(to right, rgb(192, 38, 211), rgb(219, 39, 119))", + }, + { + name: "Purple Haze", + css: "linear-gradient(to left, rgb(107, 33, 168), rgb(76, 29, 149), rgb(107, 33, 168))", + }, + { + name: "Emerald", + css: "linear-gradient(to right, rgb(16, 185, 129), rgb(101, 163, 13))", + }, + { + name: "Salem", + css: "linear-gradient(to top, rgb(17, 24, 39), rgb(88, 28, 135), rgb(124, 58, 237))", + }, +]; + +async function getFont(font: string, weights = [400, 500, 600, 700]) { + const css = await fetch( + `https://fonts.googleapis.com/css2?family=${font}:wght@${weights.join( + ";", + )}`, + { + headers: { + // Make sure it returns TTF. + "User-Agent": + "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1", + }, + }, + ).then((response) => response.text()); + const resource = css.matchAll( + /src: url\((.+)\) format\('(opentype|truetype)'\)/g, + ); + return Promise.all( + [...resource] + .map((match) => match[1]) + .map((url) => fetch(url).then((response) => response.arrayBuffer())) + .map(async (buffer, i) => ({ + name: font, + style: "normal", + weight: weights[i], + data: await buffer, + })), + ) as Promise; +} + +declare module "react" { + interface HTMLAttributes { + tw?: string; + } +} + +export function makeGenerateOgImage() { + // Random background gradient + const background = + backgrounds[Math.floor(Math.random() * backgrounds.length)]; + + return async (request: GenerateOgImageRequest) => { + try { + const template = ( +
+
+
+
+

+ get + actions.dev +

+ +

+ {request.title} +

+

+ {request.subtitle} +

+ + {request.shell ? ( +
+
{request.shell}
+
+ ) : null} +
+
+
+
+ ); + + const svg = await satori(template, { + width: 1200, + height: 630, + fonts: await getFont("Inter"), + }); + + const resvg = new Resvg(svg); + const pngData = resvg.render(); + const image = pngData.asPng(); + + return ok({ image }); + } catch (cause) { + return err(cause instanceof Error ? cause : new Error(cause as string)); + } + }; +} diff --git a/bun.lockb b/bun.lockb index 2805907e79651d459aa1618fada938ace9a10544..5a812f96a20129a442034b50626e308cfe5857dd 100755 GIT binary patch delta 70841 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 H&*2^3LUmHfz7T#7^df#H~O&S|WBY-$f+ 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�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 delta 62913 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 diff --git a/package.json b/package.json index fb2dbc8..324f64f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@remix-run/node": "^2.8.1", "@remix-run/react": "^2.8.1", "@remix-run/serve": "^2.8.1", + "@resvg/resvg-js": "^2.6.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "common-tags": "^1.8.2", @@ -29,6 +30,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-markdown": "^9.0.1", + "satori": "^0.10.13", "tailwind-merge": "^2.2.2", "tailwindcss-animate": "^1.0.7", "usehooks-ts": "^3.0.2",