Integrate Keystatic to edit twenty.com content (#10709)

This PR introduces Keystatic to let us edit twenty.com's content with a
CMS. For now, we'll focus on creating release notes through Keystatic as
it uses quite simple Markdown. Other types of content will need some
refactoring to work with Keystatic.


https://github.com/user-attachments/assets/e9f85bbf-daff-4b41-bc97-d1baf63758b2

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
Baptiste Devessier
2025-03-07 07:59:06 +01:00
committed by GitHub
parent 6b4d3ed025
commit 2c465bd42e
52 changed files with 3059 additions and 63 deletions

View File

@ -0,0 +1,33 @@
import { Background } from '@/app/_components/oss-friends/Background';
import { Card, OssData } from '@/app/_components/oss-friends/Card';
import { CardContainer } from '@/app/_components/oss-friends/CardContainer';
import { ContentContainer } from '@/app/_components/oss-friends/ContentContainer';
import { Header } from '@/app/_components/oss-friends/Header';
export const metadata = {
title: 'Twenty - OSS friends',
description:
'At Twenty, we are proud to be part of a global open-source movement. Here are some of our fellow open source friends.',
icons: '/images/core/logo.svg',
};
export const dynamic = 'force-dynamic';
export default async function OssFriends() {
const ossList = await fetch('https://formbricks.com/api/oss-friends');
const listJson = await ossList.json();
return (
<Background>
<ContentContainer>
<Header />
<CardContainer>
{listJson.data.map((data: OssData, index: number) => (
<Card key={index} data={data} />
))}
</CardContainer>
</ContentContainer>
</Background>
);
}