ACACHY

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.

On this page