Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion export/blog.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion export/media.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"id":141,"alt":"Github action SDK CodeZero","href":null,"updatedAt":"2026-03-25T12:01:38.170Z","createdAt":"2026-03-25T12:01:38.169Z","url":"/api/media/file/Github_Action_SDK_CodeZero.png","thumbnailURL":null,"filename":"Github_Action_SDK_CodeZero.png","mimeType":"image/png","filesize":524187,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":142,"alt":"Flow builder suggestion menu CodeZero","href":null,"updatedAt":"2026-03-25T11:55:33.672Z","createdAt":"2026-03-25T11:55:33.672Z","url":"/api/media/file/Flow_Builder_Suggestion_Menu_Feature.png","thumbnailURL":null,"filename":"Flow_Builder_Suggestion_Menu_Feature.png","mimeType":"image/png","filesize":490427,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":143,"alt":"Runtime overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:53:05.308Z","createdAt":"2026-03-25T11:53:05.307Z","url":"/api/media/file/Runtime_Overview_Page.png","thumbnailURL":null,"filename":"Runtime_Overview_Page.png","mimeType":"image/png","filesize":333824,"width":2940,"height":1668,"focalX":50,"focalY":50},{"id":144,"alt":"Flow builder nodes feature CodeZero","href":null,"updatedAt":"2026-03-25T11:38:02.809Z","createdAt":"2026-03-25T11:38:02.809Z","url":"/api/media/file/Flow_Builder_Nodes_Feature.png","thumbnailURL":null,"filename":"Flow_Builder_Nodes_Feature.png","mimeType":"image/png","filesize":407177,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":145,"alt":"Organization overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:30:37.189Z","createdAt":"2026-03-25T11:30:37.189Z","url":"/api/media/file/Organization_Overview_Page.png","thumbnailURL":null,"filename":"Organization_Overview_Page.png","mimeType":"image/png","filesize":340618,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":146,"alt":"Organization create page CodeZero","href":null,"updatedAt":"2026-03-25T11:30:37.164Z","createdAt":"2026-03-25T11:30:37.164Z","url":"/api/media/file/Organization_Create_Page.png","thumbnailURL":null,"filename":"Organization_Create_Page.png","mimeType":"image/png","filesize":348465,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":147,"alt":"Role overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.738Z","createdAt":"2026-03-25T11:21:38.738Z","url":"/api/media/file/Role_Overview_Page.png","thumbnailURL":null,"filename":"Role_Overview_Page.png","mimeType":"image/png","filesize":396501,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":148,"alt":"Role add page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.691Z","createdAt":"2026-03-25T11:21:38.691Z","url":"/api/media/file/Role_Add_Page.png","thumbnailURL":null,"filename":"Role_Add_Page.png","mimeType":"image/png","filesize":338014,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":149,"alt":"Role permission page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.647Z","createdAt":"2026-03-25T11:21:38.647Z","url":"/api/media/file/Role_Permission_Page.png","thumbnailURL":null,"filename":"Role_Permission_Page.png","mimeType":"image/png","filesize":613737,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":150,"alt":"Member overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.805Z","createdAt":"2026-03-25T11:13:20.805Z","url":"/api/media/file/Member_Overview_Page.png","thumbnailURL":null,"filename":"Member_Overview_Page.png","mimeType":"image/png","filesize":390811,"width":2940,"height":1668,"focalX":50,"focalY":50},{"id":151,"alt":"Member remove feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.787Z","createdAt":"2026-03-25T11:13:20.787Z","url":"/api/media/file/Member_Remove_Feature.png","thumbnailURL":null,"filename":"Member_Remove_Feature.png","mimeType":"image/png","filesize":354065,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":152,"alt":"Member assign roles feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.769Z","createdAt":"2026-03-25T11:13:20.769Z","url":"/api/media/file/Member_Assign_Roles_Feature.png","thumbnailURL":null,"filename":"Member_Assign_Roles_Feature.png","mimeType":"image/png","filesize":379400,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":153,"alt":"Member add feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.742Z","createdAt":"2026-03-25T11:13:20.742Z","url":"/api/media/file/Member_Add_Feature.png","thumbnailURL":null,"filename":"Member_Add_Feature.png","mimeType":"image/png","filesize":350024,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":154,"alt":"Project overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:05:42.234Z","createdAt":"2026-03-25T11:05:42.234Z","url":"/api/media/file/Project_Overview_Feature.png","thumbnailURL":null,"filename":"Project_Overview_Feature.png","mimeType":"image/png","filesize":330250,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":155,"alt":"Create project in CodeZero","href":null,"updatedAt":"2026-03-25T11:05:01.102Z","createdAt":"2026-03-25T11:05:01.102Z","url":"/api/media/file/Create_Project_Feature.png","thumbnailURL":null,"filename":"Create_Project_Feature.png","mimeType":"image/png","filesize":378671,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":156,"alt":"Logistic automation workflow GLS CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.175Z","createdAt":"2026-03-25T10:05:48.175Z","url":"/api/media/file/Logistic_Use-Case-1.png","thumbnailURL":null,"filename":"Logistic_Use-Case-1.png","mimeType":"image/png","filesize":113308,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":157,"alt":"Discord bot automation CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.152Z","createdAt":"2026-03-25T10:05:48.152Z","url":"/api/media/file/Chatbot_Use-Case-1.png","thumbnailURL":null,"filename":"Chatbot_Use-Case-1.png","mimeType":"image/png","filesize":74140,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":158,"alt":"AI Use Case ChatGPT MCP Claude CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.123Z","createdAt":"2026-03-25T10:05:48.123Z","url":"/api/media/file/AI_Use-Case-1.png","thumbnailURL":null,"filename":"AI_Use-Case-1.png","mimeType":"image/png","filesize":126673,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":159,"alt":"Blog sample Image","href":null,"updatedAt":"2026-03-07T05:59:34.732Z","createdAt":"2026-03-07T05:59:34.731Z","url":"/api/media/file/blog-sample-image.jpg","thumbnailURL":null,"filename":"blog-sample-image.jpg","mimeType":"image/jpeg","filesize":75240,"width":864,"height":576,"focalX":50,"focalY":50},{"id":160,"alt":"Marius Ahsmus Bild","href":null,"updatedAt":"2026-03-07T05:28:39.443Z","createdAt":"2026-03-07T05:15:45.957Z","url":"/api/media/file/NDOLqYAv_400x400.jpg","thumbnailURL":null,"filename":"NDOLqYAv_400x400.jpg","mimeType":"image/jpeg","filesize":28513,"width":400,"height":400,"focalX":50,"focalY":50},{"id":161,"alt":"GLS Logo","href":"https://gls-group.com/","updatedAt":"2026-02-25T11:12:48.228Z","createdAt":"2026-02-25T11:08:24.824Z","url":"/api/media/file/gls_logo.png","thumbnailURL":null,"filename":"gls_logo.png","mimeType":"image/png","filesize":19352,"width":960,"height":337,"focalX":50,"focalY":50}]
[{"id":162,"alt":"Code0 OG Image","href":null,"updatedAt":"2026-03-26T18:45:03.880Z","createdAt":"2026-03-26T18:45:03.880Z","url":"/api/media/file/og-image.png","thumbnailURL":null,"filename":"og-image.png","mimeType":"image/png","filesize":1003908,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":141,"alt":"Github action SDK CodeZero","href":null,"updatedAt":"2026-03-25T12:01:38.170Z","createdAt":"2026-03-25T12:01:38.169Z","url":"/api/media/file/Github_Action_SDK_CodeZero.png","thumbnailURL":null,"filename":"Github_Action_SDK_CodeZero.png","mimeType":"image/png","filesize":524187,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":142,"alt":"Flow builder suggestion menu CodeZero","href":null,"updatedAt":"2026-03-25T11:55:33.672Z","createdAt":"2026-03-25T11:55:33.672Z","url":"/api/media/file/Flow_Builder_Suggestion_Menu_Feature.png","thumbnailURL":null,"filename":"Flow_Builder_Suggestion_Menu_Feature.png","mimeType":"image/png","filesize":490427,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":143,"alt":"Runtime overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:53:05.308Z","createdAt":"2026-03-25T11:53:05.307Z","url":"/api/media/file/Runtime_Overview_Page.png","thumbnailURL":null,"filename":"Runtime_Overview_Page.png","mimeType":"image/png","filesize":333824,"width":2940,"height":1668,"focalX":50,"focalY":50},{"id":144,"alt":"Flow builder nodes feature CodeZero","href":null,"updatedAt":"2026-03-25T11:38:02.809Z","createdAt":"2026-03-25T11:38:02.809Z","url":"/api/media/file/Flow_Builder_Nodes_Feature.png","thumbnailURL":null,"filename":"Flow_Builder_Nodes_Feature.png","mimeType":"image/png","filesize":407177,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":145,"alt":"Organization overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:30:37.189Z","createdAt":"2026-03-25T11:30:37.189Z","url":"/api/media/file/Organization_Overview_Page.png","thumbnailURL":null,"filename":"Organization_Overview_Page.png","mimeType":"image/png","filesize":340618,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":146,"alt":"Organization create page CodeZero","href":null,"updatedAt":"2026-03-25T11:30:37.164Z","createdAt":"2026-03-25T11:30:37.164Z","url":"/api/media/file/Organization_Create_Page.png","thumbnailURL":null,"filename":"Organization_Create_Page.png","mimeType":"image/png","filesize":348465,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":147,"alt":"Role overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.738Z","createdAt":"2026-03-25T11:21:38.738Z","url":"/api/media/file/Role_Overview_Page.png","thumbnailURL":null,"filename":"Role_Overview_Page.png","mimeType":"image/png","filesize":396501,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":148,"alt":"Role add page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.691Z","createdAt":"2026-03-25T11:21:38.691Z","url":"/api/media/file/Role_Add_Page.png","thumbnailURL":null,"filename":"Role_Add_Page.png","mimeType":"image/png","filesize":338014,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":149,"alt":"Role permission page CodeZero","href":null,"updatedAt":"2026-03-25T11:21:38.647Z","createdAt":"2026-03-25T11:21:38.647Z","url":"/api/media/file/Role_Permission_Page.png","thumbnailURL":null,"filename":"Role_Permission_Page.png","mimeType":"image/png","filesize":613737,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":150,"alt":"Member overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.805Z","createdAt":"2026-03-25T11:13:20.805Z","url":"/api/media/file/Member_Overview_Page.png","thumbnailURL":null,"filename":"Member_Overview_Page.png","mimeType":"image/png","filesize":390811,"width":2940,"height":1668,"focalX":50,"focalY":50},{"id":151,"alt":"Member remove feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.787Z","createdAt":"2026-03-25T11:13:20.787Z","url":"/api/media/file/Member_Remove_Feature.png","thumbnailURL":null,"filename":"Member_Remove_Feature.png","mimeType":"image/png","filesize":354065,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":152,"alt":"Member assign roles feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.769Z","createdAt":"2026-03-25T11:13:20.769Z","url":"/api/media/file/Member_Assign_Roles_Feature.png","thumbnailURL":null,"filename":"Member_Assign_Roles_Feature.png","mimeType":"image/png","filesize":379400,"width":2940,"height":1664,"focalX":50,"focalY":50},{"id":153,"alt":"Member add feature CodeZero","href":null,"updatedAt":"2026-03-25T11:13:20.742Z","createdAt":"2026-03-25T11:13:20.742Z","url":"/api/media/file/Member_Add_Feature.png","thumbnailURL":null,"filename":"Member_Add_Feature.png","mimeType":"image/png","filesize":350024,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":154,"alt":"Project overview page CodeZero","href":null,"updatedAt":"2026-03-25T11:05:42.234Z","createdAt":"2026-03-25T11:05:42.234Z","url":"/api/media/file/Project_Overview_Feature.png","thumbnailURL":null,"filename":"Project_Overview_Feature.png","mimeType":"image/png","filesize":330250,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":155,"alt":"Create project in CodeZero","href":null,"updatedAt":"2026-03-25T11:05:01.102Z","createdAt":"2026-03-25T11:05:01.102Z","url":"/api/media/file/Create_Project_Feature.png","thumbnailURL":null,"filename":"Create_Project_Feature.png","mimeType":"image/png","filesize":378671,"width":2940,"height":1666,"focalX":50,"focalY":50},{"id":156,"alt":"Logistic automation workflow GLS CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.175Z","createdAt":"2026-03-25T10:05:48.175Z","url":"/api/media/file/Logistic_Use-Case-1.png","thumbnailURL":null,"filename":"Logistic_Use-Case-1.png","mimeType":"image/png","filesize":113308,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":157,"alt":"Discord bot automation CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.152Z","createdAt":"2026-03-25T10:05:48.152Z","url":"/api/media/file/Chatbot_Use-Case-1.png","thumbnailURL":null,"filename":"Chatbot_Use-Case-1.png","mimeType":"image/png","filesize":74140,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":158,"alt":"AI Use Case ChatGPT MCP Claude CodeZero","href":null,"updatedAt":"2026-03-25T10:05:48.123Z","createdAt":"2026-03-25T10:05:48.123Z","url":"/api/media/file/AI_Use-Case-1.png","thumbnailURL":null,"filename":"AI_Use-Case-1.png","mimeType":"image/png","filesize":126673,"width":1920,"height":1080,"focalX":50,"focalY":50},{"id":159,"alt":"Blog sample Image","href":null,"updatedAt":"2026-03-07T05:59:34.732Z","createdAt":"2026-03-07T05:59:34.731Z","url":"/api/media/file/blog-sample-image.jpg","thumbnailURL":null,"filename":"blog-sample-image.jpg","mimeType":"image/jpeg","filesize":75240,"width":864,"height":576,"focalX":50,"focalY":50},{"id":160,"alt":"Marius Ahsmus Bild","href":null,"updatedAt":"2026-03-07T05:28:39.443Z","createdAt":"2026-03-07T05:15:45.957Z","url":"/api/media/file/NDOLqYAv_400x400.jpg","thumbnailURL":null,"filename":"NDOLqYAv_400x400.jpg","mimeType":"image/jpeg","filesize":28513,"width":400,"height":400,"focalX":50,"focalY":50},{"id":161,"alt":"GLS Logo","href":"https://gls-group.com/","updatedAt":"2026-02-25T11:12:48.228Z","createdAt":"2026-02-25T11:08:24.824Z","url":"/api/media/file/gls_logo.png","thumbnailURL":null,"filename":"gls_logo.png","mimeType":"image/png","filesize":19352,"width":960,"height":337,"focalX":50,"focalY":50}]
2 changes: 1 addition & 1 deletion export/pages.json

Large diffs are not rendered by default.

Binary file added media/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"migrate": "payload migrate",
"migrate:create": "payload migrate:create",
"migrate:status": "payload migrate:status",
"generate:importmap": "payload generate:importmap",
"lint": "next lint",
"knip": "knip",
"generate": "payload generate:types",
Expand Down
Binary file added public/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 28 additions & 15 deletions scripts/import-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,11 @@ type ImportedBlogDocument = {
} | number | string | null
id?: number | string
meta?: {
title?: Record<string, string | null> | null
description?: Record<string, string | null> | null
image?: {
id?: number | string
} | number | string | null
keywords?: Record<string, string | null> | null
} | null
ogImage?: {
Expand Down Expand Up @@ -572,6 +576,27 @@ const createImportReq = async (payload: PayloadInstance, importUser: ImportUser,
return createLocalReq({ locale, user: importUser }, payload)
}

const mapImportedBlogMetaForLocale = (
doc: ImportedBlogDocument,
locale: "en" | "de",
mediaIDMap: Map<string, number | string>
) => {
const title = doc.meta?.title?.[locale] ?? doc.title?.[locale] ?? undefined
const description = doc.meta?.description?.[locale] ?? undefined
const imageSource = doc.meta?.image ?? doc.ogImage ?? doc.twitterImage ?? doc.heroImage
const image = remapKnownRelationshipID(normalizeRelationshipID(imageSource), mediaIDMap)

if (!title && !description && image === undefined) {
return undefined
}

return {
description,
image,
title,
}
}

const syncLocalizedDocument = async (
payload: PayloadInstance,
importUser: ImportUser,
Expand Down Expand Up @@ -895,27 +920,15 @@ const importBlogCollection = async (
createdAt: doc.createdAt,
heroImage: remapKnownRelationshipID(normalizeRelationshipID(doc.heroImage), mediaIDMap),
id: normalizeNumericID(doc.id),
meta: doc.meta
? {
description: doc.meta.description?.en ?? undefined,
keywords: doc.meta.keywords?.en ?? undefined,
}
: undefined,
ogImage: remapKnownRelationshipID(normalizeRelationshipID(doc.ogImage), mediaIDMap),
meta: mapImportedBlogMetaForLocale(doc, "en", mediaIDMap),
shortDescription: doc.shortDescription?.en ?? undefined,
slug: doc.slug ?? "",
title: doc.title?.en ?? "",
twitterImage: remapKnownRelationshipID(normalizeRelationshipID(doc.twitterImage), mediaIDMap),
updatedAt: doc.updatedAt,
}),
buildGermanData: (doc) => ({
content: doc.content?.de ? mapBlogContentForImport(doc.content.de, mediaIDMap) : undefined,
meta: doc.meta
? {
description: doc.meta.description?.de ?? undefined,
keywords: doc.meta.keywords?.de ?? undefined,
}
: undefined,
meta: mapImportedBlogMetaForLocale(doc, "de", mediaIDMap),
shortDescription: doc.shortDescription?.de ?? undefined,
title: doc.title?.de ?? "",
}),
Expand Down Expand Up @@ -1021,7 +1034,7 @@ const formatImportError = (error: unknown) => {
return String(error)
}

const cause = error.cause as
const cause = (error as Error & { cause?: unknown }).cause as
| {
code?: string
column?: string
Expand Down
7 changes: 7 additions & 0 deletions src/app/(landing)/[locale]/about-us/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,16 @@ import { Aurora } from "@/components/ui/Aurora"
import { LandingContainer } from "@/components/ui/LandingContainer"
import { MarkdownLayoutBlock, getLandingPage, getTeamMembers } from "@/lib/cms"
import { isSupportedLocale } from "@/lib/i18n"
import { getLandingPageMetadata } from "@/lib/pageMetadata"
import { convertLexicalToHTML } from "@payloadcms/richtext-lexical/html"
import type { Metadata } from "next"
import { notFound } from "next/navigation"

export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise<Metadata> {
const { locale } = await params
return getLandingPageMetadata("about-us", locale)
}

export default async function AboutPage({ params }: { params: Promise<{ locale: string }> }) {
const { locale } = await params
if (!isSupportedLocale(locale)) notFound()
Expand Down
Loading
Loading