Funzionalità

Costruito per chi pubblica.

Forge dà agli sviluppatori lo schema-as-code e ai team di contenuti un vero editor, su un'infrastruttura che resta in Europa.

Tutto ciò che serve al tuo
team di contenuti.

content/article.ts
import { collection, field } from '@forge/sdk'

export const Article = collection({
  name:   'article',
  fields: {
    title:   field.text({ required: true }),
    body:    field.richText(),
    author:  field.relation({ to: 'author' }),
    cover:   field.media(),
    status:  field.select(['draft', 'published']),
  }
})

Schema nel codice, non in pannelli.

Definisci i tipi di contenuto in TypeScript. Campi tipizzati, versionati nel repo, confrontabili nelle pull request. Nessuna sorpresa dalla GUI quando cambia un campo.

StringRichText RelationMedia
GET /v1/content?type=article&locale=en POST /v1/content GET /v1/assets/{id} PATCH /v1/content/{id} WH content.published → endpoint

Distribuito dall'Europa. Veloce.

REST, GraphQL, SDK TypeScript: stessi dati, scegli tu. CDN solo UE con invalidazione intelligente. Webhook su ogni modifica, firmati HMAC con retry esponenziale.

<50ms
TTFB, edge UE

Collaborazione in tempo reale

Più editor, commenti inline, scritture concorrenti senza conflitti.

Multi-lingua nativo

Decine di lingue con fallback intelligenti e override per singola lingua.

GDPR-native by design

Hosting solo UE. Nessun dato lascia l'Europa. DPA inclusa in tutti i piani a pagamento.

Distribuzione ultra-veloce

CDN globale, invalidazione cache intelligente. TTFB sotto i 50ms. Il tuo frontend non aspetta mai.

Un'API.
Tre stili.

Usa quello che si adatta al tuo stack: SDK TypeScript, REST o GraphQL. Stessi dati, stessa potenza, zero lock-in.

import { Forge } from '@forge/sdk'

const forge = new Forge({ apiKey: 'fgk_live_...' })

const posts = await forge.content({
  type:   'article',
  locale: 'en',
  where:  { status: 'published' }
})
// → typed Article[], TTFB <50ms
GET https://cms.altovar.net/api/v1/content
  ?type=article&locale=en

Authorization: Bearer fgk_live_...
X-Project: acme-blog

200 OK
{ "data": [{ "id": "..." }],
  "meta": { "total": 42 } }
query Articles($locale: String!) {
  articleCollection(locale: $locale, limit: 10) {
    items {
      title
      slug
      author { name }
    }
  }
}

I tuoi contenuti. Il tuo server. Pubblica oggi.

Piano gratuito, nessuna carta richiesta. In esecuzione in UE: i tuoi dati non lasciano l'Europa.