profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchYlläpitäjän hallintapaneelin välityspalvelimen määrittäminenCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

PikakäynnistysSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST-ohjelmointirajapinta

REST API OverviewgetConnect your websitegetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetKäytön hakeminenpostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

Pikakäynnistys

Kirjoitus skeemoista

Luo tyyppiturvallisia Zod-skeemoja

Tämän ominaisuuden avulla saat komponenttiesi kuvauksen tyyppiturvallisen Zod-skeeman muodossa, mikä tarjoaa:

  • TypeScript-lähtöisen skeemavalidoinnin
  • Staattisen tyyppipäättelyn

Lisätietoja: https://zod.dev

Käyttöönotto

Noutaaksesi Zod-skeemasi toimi näin:

  1. Lataa tarvittavat riippuvuudet
  2. Luo skripti hyödyntämällä cms-renderer-kirjaston apuvälineitä

Projektin rakenne

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts   # skriptitiedosto

Skripti: generated-schema.ts

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config';

async function main() {
  const { cmsUrl, websiteId, apiKey } = cmsConfig;

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL ei ole asetettu. Aseta se ympäristöösi tai .env-tiedostoon.'
    );
  }

  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID ei ole asetettu. Aseta se ympäristöösi tai .env-tiedostoon.'
    );
  }

  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY ei ole asetettu. Aseta se ympäristöösi tai .env-tiedostoon.'
    );
  }

  const schemas = await fetchAllCustomSchemaFields({ cmsUrl, websiteId, apiKey });

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] API ei palauttanut komponentteja. Varmista, että PROFOUND_API_KEY on voimassa ja osoittaa oikeaan verkkosivustoon.'
    );
  }

  console.log(
    `[generate-schemas] Löydettiin ${schemas.length} komponenttia: ${schemas.map((s) => s.name).join(', ')}`
  );

  await saveZodSchemaCode(schemas, './generated/cms-schemas.ts');

  console.log('[generate-schemas] Valmis.');
}

main().catch((err) => {
  console.error('[generate-schemas] Epäonnistui:', err);
  process.exit(1);
});

CMS-konfiguraation esimerkki

export const cmsConfig = {
  cmsUrl: process.env.NEXT_PUBLIC_CMS_API_URL,
  apiKey: process.env.CMS_API_KEY,
  websiteId: '...',
};

package.json-konfiguraatio

Huomautus: Jos sinulla ei ole tsconfig.json-tiedostoa, poista --tsconfig-lippu.

{
  "name": "web",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "scripts": {
    "generate-schemas": "tsx --tsconfig tsconfig.json scripts/generate-schemas.ts",
    "...": "..."
  },
  "dependencies": {
    "cms-renderer": "0.3.1",
    "zod": "^4.3.6",
    "...": "..."
  },
  "devDependencies": {
    "tsx": "^4.21.0",
    "object-hash": "^3.0.0",
    "...": "..."
  }
}

Skriptin suorittaminen

bun run generate-schemas

Esimerkkituloste:

tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] Löydettiin 3 komponenttia: post, categories, header
[generate-schemas] Valmis.

Päivitetty projektirakenne

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # generoitu Zod-skeema

Käyttö tiedostossa page.tsx

import type { PetFoodPost, SiteConfig } from '@/generated/cms-schemas';
import { petFoodPostSchema } from '@/generated/cms-schemas';

// Käytä tyyppiturvalliseen jäsentämiseen
petFoodPostSchema.parse(obj);

Huomautuksia

  • Tutustu generoituun tiedostoon ymmärtääksesi komponenttisi rakenteen
  • Suorita skripti uudelleen aina, kun komponenttisi rakenne muuttuu:
bun run generate-schemas
  • Voit integroida tämän kehitys- tai rakennusprosessiin
  • Päivitä komponentit hallintapaneelin kautta ja generoi ne sitten uudelleen paikallisesti
Continue Reading
NextSplit Screen JSON Component Builder with LLM›