Usar com Next.js
Exemplos para consumir conteúdo do Acachy CMS em App Router do Next.js.
Variáveis de Ambiente
No site Next.js:
ACACHY_API_URL="https://api.example.com"
ACACHY_API_KEY="<content-read-api-key>"Não use NEXT_PUBLIC_ se quiser manter a API key apenas no servidor.
Client no Servidor
import { createAcachyClient } from '@repo/client'
export const acachy = createAcachyClient({
baseUrl: process.env.ACACHY_API_URL!,
apiKey: process.env.ACACHY_API_KEY!,
})Listar Posts
export default async function BlogPage() {
const posts = await acachy.findMany('posts', {
limit: 12,
sort: 'publishedAt',
order: 'desc',
})
return (
<main>
{posts.data.map((post) => (
<article key={post.id}>
<h2>{String(post.title)}</h2>
<p>{String(post.excerpt ?? '')}</p>
</article>
))}
</main>
)
}Página Dinâmica por Slug
export default async function PostPage({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params
const post = await acachy.findBySlug('posts', slug)
return (
<article>
<h1>{String(post.title)}</h1>
<div>{String(post.body ?? '')}</div>
</article>
)
}Gerar Metadata
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params
const post = await acachy.findBySlug('posts', slug, 'title,excerpt')
return {
title: String(post.title),
description: String(post.excerpt ?? ''),
}
}Cache e Revalidação
Para conteúdo editorial, use cache do Next.js e revalide com webhook quando publicar.
Se precisar controle avançado de cache, use fetch direto com opções do Next em vez do client.