profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchAdminipaneeli puhverserveri seadistamineCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

KiirkÀivitusSplit Screen JSON Component Builder with LLMComponent Zod Pull

RESTi API

REST API OverviewgetConnect your websitegetMarsruutide hankiminegetGET /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 /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

KiirkÀivitus

Postitus skeemide kohta

Loo tĂŒĂŒbiturvalisi Zodi skeeme

See funktsioon vĂ”imaldab saada oma komponentide kirjelduse tĂŒĂŒbiturvalise Zodi skeemi kujul, pakkudes:

  • TypeScripti-keskne skeemivalideerimine
  • Statiline tĂŒĂŒbituletus

Lisateave: https://zod.dev

Seadistamine

Et Zodi skeemi alla laadida, tee jÀrgmist:

  1. Laadi vajalikud sÔltuvused
  2. Loo skript, kasutades cms-rendereri tööriistu

Projekti struktuur

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

Skript: 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 mÀÀratud. Sea see oma keskkonnas vÔi .env-failis.'
    );
  }

  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID ei ole mÀÀratud. Sea see oma keskkonnas vÔi .env-failis.'
    );
  }

  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY ei ole mÀÀratud. Sea see oma keskkonnas vÔi .env-failis.'
    );
  }

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

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] API ei tagastanud ĂŒhtegi komponenti. Kontrolli, et PROFOUND_API_KEY on kehtiv ja osutab Ă”igele veebisaidile.'
    );
  }

  console.log(
    `[generate-schemas] Leiti ${schemas.length} komponenti: ${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] EbaÔnnestus:', err);
  process.exit(1);
});

CMS-i konfiguratsiooni nÀide

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

package.jsoni seadistus

MĂ€rkus: Kui sul ei ole faili tsconfig.json, eemalda lipp --tsconfig.

{
  "name": "veeb",
  "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",
    "...": "..."
  }
}

Skripti kÀivitamine

bun run generate-schemas

NÀidisvÀljund:

tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] Leiti 3 komponenti: post, categories, header
[generate-schemas] Valmis.

Uuendatud projekti struktuur

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # genereeritud Zodi skeem

Kasutamine failis page.tsx

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

// Kasuta tĂŒĂŒbiturvaliseks parsimiseks
petFoodPostSchema.parse(obj);

MĂ€rkused

  • Uuri genereeritud faili, et mĂ”ista oma komponendi struktuuri
  • KĂ€ivita skript uuesti iga kord, kui komponendi struktuur muutub:
bun run generate-schemas
  • Saad selle integreerida oma arendus- vĂ”i ehitusvoogu
  • Uuenda komponente administreerimispaneeli kaudu ja genereeri need siis lokaalselt uuesti
Continue Reading
NextSplit Screen JSON Component Builder with LLMâ€ș