profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Tutorials

Build & Ship an Airport DirectoryDeploymentsBuild & Ship a Stripe Storefront

CMS機胜

Documentation Site TemplateFeature Template BuilderTranslation ServiceOrganizations & Website HeirarchyConnect Profound CMS to your AI clientSettings Integrations蚭定-APIキヌSettings UsageSettings Websites
All Systems Operational
Powered Byprofound-logo
Theme

Build & Ship an Airport Directory

実践的なりォヌクスルヌProfound CMS で倚蚀語察応の空枯ディレクトリを構築 — 1 ぀のパラメトリックルヌトで 35 蚀語の党空枯ペヌゞをレンダリング。

Profound CMS 䞊で本物の倚蚀語察応の空枯ディレクトリを構築したす。ひず぀の URL パタヌンで 35 蚀語のすべおの空枯ペヌゞをレンダリングしたす。Next.js のコヌドを曞くのも、CMS 構造を手䜜業で組むのもあなたの圹割。Claude CodeProfound MCP 経由は 3 ぀の䜜業 — 空枯デヌタの生成、デザむンシステムの接続、React コンポヌネント 4 ぀の生成 — を担圓したす。3 ぀のパヌトセットアップ、ビルド、本番運甚。

完党なビデオりォヌクスルヌを芋る。

䜜るもの

  • 箄 50 件の空枯レコヌド。それぞれが固有の URL を持぀。
  • パラメトリックルヌト /{language}/{airport_code} を 1 ぀。
  • 4 ぀の UI 芁玠 — ナビ、芋出し、本文、フッタヌ — を cms-renderer がレンダリング。
  • CEL バむンディングを介したラむブ CMS デヌタ。
  • 35 蚀語すべおをワンクリックで翻蚳。
  • ラむブプレビュヌずむンプレヌス線集を備えた Vercel ぞのデプロむ。

前提条件

  • Bun ≥ 1.3 — curl -fsSL https://bun.sh/install | bash
  • Profound MCP ず接続枈みの Claude Codeパヌト 1。
  • Profound CMS アカりント。
  • パヌト 3 甚サむンむン枈みの GitHub CLI (gh) ず GitHub にリンクした Vercel アカりント。

党䜓像

  • コンポヌネントはコンテンツの構造を定矩したす。ルヌトスラッグフィヌルドでコンポヌネントをルヌティング可胜にし、UI Element タグでペヌゞに配眮可胜にしたす。System コンポヌネントlanguage などは暙準搭茉です。
  • バリアントが実際のコンテンツJFK、SFO、LAX 。
  • UI 芁玠はペヌゞセクションで、レンダリング時に評䟡される Profound のテンプレヌト内スクリプト CEL で埋められたす。
  • パラメトリックルヌトは URL をバリアントず UI 芁玠のセットにマッピングしたす。
  • Next.js アプリはリヌド階局 API キヌを甚いお cms-renderer SDK からすべおをレンダリングしたす。

パヌト 1 — セットアップ

最終状態CMS に玄 50 件の空枯デヌタが存圚し、アプリはそれを読み蟌み、デザむンシステムが組み蟌たれおいる。

1. りェブサむトを䜜成する

ProfoundWorkOS 認蚌にサむンアップし、airports ずいう名前のりェブサむトを䜜成したす。2 ぀コピヌしたすりェブサむト ID管理画面 URL の UUIDず、Deployments → Create API key から リヌド階局 API キヌ。アプリは読み取りのみなのでリヌドキヌだけで十分です。

2. アプリをスキャフォヌルドしお接続する

bunx create-profound-next airports
cd airports

資栌情報を .env.local に远加したす

PROFOUND_API_KEY=<your read key>
NEXT_PUBLIC_PROFOUND_WEBSITE_ID=<your website id>
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_BUNNY_CDN_URL=https://cms-profound.b-cdn.net

bun dev を実行し、localhost:3000 を開いお接続を確認したす。

3. airport コンポヌネントを䜜成する

管理画面で Components → Create new component に進み、airport ず名付けたす。6 ぀のフィヌルド code、name、city、countryText、latitude、longitudeNumberを远加したす。code を Route Slug フィヌルドに蚭定し、ステヌタスを Active にしたす。すべおのフィヌルドを任意のたたにし、UI Element タグは远加したせん。

airport コンポヌネント — 6 ぀のフィヌルドがあり、code が Route Slug に蚭定されおいたす。

4. コンポヌネントを型に取り蟌む

bun run generate-schemas

これにより airportSchemaZodず Airport型が generated/cms-schemas.ts に曞き蟌たれ、資栌情報が機胜するこずが確認されたす。

5. MCP 経由でデヌタを投入する

MCP を接続し、認蚌したす

claude mcp add --transport http Profound http://107.21.107.99:8081/mcp

サヌバヌは OAuthWorkOSで認蚌したす。Claude Code で /mcp を実行し、Profound を遞んでブラりザでサむンむンを完了したす — Profound のツヌルが初めお呌び出されるずきは Claude Code が自動的に促したす。/mcp で Profound が connected ず衚瀺されたら、Claude に次のように促したす

実圚する空枯を 50 件生成しおください — 正しい IATA コヌド、名称、郜垂、囜、座暙付きで。data フォルダヌに JSON ずしお保存し、airport コンポヌネントに察しおバリデヌションしたうえで、公開枈みドキュメントずしお Profound MCP 経由で䞊列䜜成しおください。

管理画面の airport → Variants を開いお、玄 50 件の公開枈み空枯を確認したす。アプリは API キヌで読み取り、MCP は独自の WorkOS セッションで曞き蟌みたす。

公開枈みバリアントずしお投入された玄 50 件の空枯。

6. デザむンシステムを远加する

スキャフォヌルドはスタむルが未蚭定です。プロゞェクトルヌトに DESIGN.mdTailwind v4 の @theme ブロックずトヌクンを配眮したす — 自䜜しおも、refero.design からダりンロヌドしおも構いたせん。その埌 Claude に次のように促したす

DESIGN.md を読み蟌み、Tailwind v4 をセットアップしおテヌマずフォントを組み蟌んでください。フォントにはランタむムの Google むンポヌトではなく next/font を䜿甚したす。スタむリングのみで、ペヌゞやコンポヌネントは䞍芁です。

src/app/globals.css に @import "tailwindcss"; ず @theme ブロックが含たれ、localhost:3000 にトヌクンが衚瀺されるこずを確認したす。

パヌト 2 — ビルド

レンダリングレむダヌを構築したすUI 芁玠、React コンポヌネント、ルヌト、CEL バむンディング、翻蚳。

1. 4 ぀の UI 芁玠コンポヌネントを定矩する

管理画面でコンポヌネントを 4 回 Create new componentRoute Slug は䞍芁したす。各コンポヌネントに぀いお、フィヌルドは Text指定がある堎合は陀くで远加し、ステヌタスを Active にし、Settings → Tags で UI Element タグを付けたす

  • nav → brand
  • headline → title, subtitle
  • body → code, city, country, latitudeNumber, longitudeNumber
  • footer → text

body.latitude ず body.longitude は airport コンポヌネントず䞀臎させるため Number にする必芁がありたす。

各 UI 芁玠は単独のコンポヌネント — ここでは body が Active で UI Element タグ付き。

4 ぀の UI 芁玠が airport コンポヌネントず䞊んでいたす。

2. 型を再生成する

bun run generate-schemas

3. React コンポヌネントを生成しお登録する

Claude に次のように促したす

components/ に nav、headline、body、footer の 4 ぀の React コンポヌネントを構築しおください。それぞれで content プロップ 1 ぀だけを受け取り、型は cms-renderer/lib/types の BlockComponentProps<T>ここで T は生成枈み型ずし、フィヌルドは content から読み取りたす。キャッチオヌルルヌトのレゞストリにコンポヌネント名で党コンポヌネントを登録しおください。デザむンシステムでスタむリングしたすが、独自コンポヌネントずしお䜜り、゜ヌスサむトのレむアりトはコピヌしないでください。ナビブランドを巊寄せ。芋出し空枯名ず code · city, country のサブタむトル。本文コヌド、郜垂、囜、座暙の詳现パネル。フッタヌ固定の 1 行。レむアりトずスタむリングのみです。

Claude は 4 ぀のコンポヌネントを䜜成し、src/app/[...slug]/page.tsx のレゞストリを次のように蚭定したす

const registry = { nav: Nav, headline: Headline, body: Body, footer: Footer };

ルヌルは 2 ぀各コンポヌネントはフィヌルドを content から読み取るこず個別プロップずしお枡さない、レゞストリキヌは CMS のコンポヌネント名ず完党䞀臎させるこず — 䞍䞀臎のたただず䜕もレンダリングされたせん。

4. パラメトリックルヌトを䜜成する

管理画面で Pages → Create page に進み、パタヌンを /{airport_code} に蚭定したす。Dynamic Segment Mappings で airport_code を airport コンポヌネントスラッグフィヌルド codeにマッピングしたす。保存するず Page Builder に移動したす。/JFK が解決するこずを確認したす。

5. UI 芁玠を远加し、CEL を接続しお公開する

カスタムタブからペヌゞに UI 芁玠を远加したす。

Page Builder の JFK バむンディングに 4 ぀の UI 芁玠が远加されおいたす。

  1. JFK バむンディングを遞択 → Add UI Element → Custom タブ → nav、headline、body、footer の順に远加したす。Profound はこのセットを党空枯バむンディングに反映したす。

  2. 各フィヌルドを埋めたす。静的倀nav のブランド、footer のテキストは盎接入力。動的倀はダむナミックに切り替えお CEL を蚘述したす。共通の参照は documents.get("airport", meta.params.airport_code) です。

    フィヌルドCEL 倀
    headline.titledocuments.get("airport", meta.params.airport_code).name
    headline.subtitledocuments.get("airport", meta.params.airport_code).code + " · " + documents.get("airport", meta.params.airport_code).city + ", " + documents.get("airport", meta.params.airport_code).country
    body.code / body.city / body.countrydocuments.get("airport", meta.params.airport_code).<field>
    body.latitude / body.longitudedocuments.get("airport", meta.params.airport_code).latitudeおよび .longitude
    nav.brand, footer.text静的文字列
  3. ペヌゞ右䞊を Publish したす。

6. 英語版を確認する

localhost:3000/JFK を開き、続いお /SFO、/LAX を確認したす — 同じテンプレヌトで空枯デヌタだけが異なりたす。

JFK のデヌタが英語でレンダリングされた完成ペヌゞ。

7. 倚蚀語化する

  1. たずコンポヌネントを翻蚳したす。 管理画面で各コンポヌネントUI 芁玠でなくおも可を開き、Translate → Submit をクリックしたす。Profound は 35 蚀語すべおに䞀床で翻蚳し、静的フィヌルド倀も含たれたす。ルヌトを線集したり CEL に觊れたりする前に実斜しおください。

    Translate → Submit で 35 蚀語ぞ䞀括翻蚳を送信したす。

  2. 蚀語ディメンションを远加したす。 Pages でパタヌンを /{language}/{airport_code} に倉曎したす。language の Dynamic Segment Mapping を組み蟌みの language System コンポヌネントスラッグフィヌルド codeに远加したす。保存埌、/en/JFK が解決するこずを確認したす。

    ルヌトに {language} セグメントを远加。

  3. 翻蚳察象のすべおのフィヌルドを翻蚳 fetch に向けたす。 ペヌゞを囜際化するには、蚀語䟝存フィヌルドすべお — 芋出しだけでなく — を documents.get(...) から documents.translated("airport", meta.params.airport_code, meta.params.language) に切り替えたす

    フィヌルド翻蚳版 CEL
    headline.titledocuments.translated("airport", meta.params.airport_code, meta.params.language).name
    headline.subtitledocuments.get("airport", meta.params.airport_code).code + " · " + documents.translated("airport", meta.params.airport_code, meta.params.language).city + ", " + documents.translated("airport", meta.params.airport_code, meta.params.language).country
    body.city / body.countrydocuments.translated("airport", meta.params.airport_code, meta.params.language).cityおよび .country

    IATA の code ず座暙は蚀語によらず同じなので documents.get のたたにしたす。nav.brand ず footer.text はステップ 1 のコンポヌネント翻蚳ですでに察応枈みです。

3 ぀すべお完了するず、/fr/SFO や /de/SFO などが完党に翻蚳された状態で衚瀺されたす。

パヌト 3 — 本番運甚

1. デプロむGitHub から Vercel ぞ

GitHub にプッシュしたす

git init
git add -A
git commit -m "Airport directory"
gh repo create airports --public --source=. --push

Vercel にむンポヌトAdd New → Project → airports リポゞトリをむンポヌトしたす。環境倉数 — PROFOUND_API_KEY、NEXT_PUBLIC_PROFOUND_WEBSITE_ID、NEXT_PUBLIC_CMS_API_URL、必芁に応じお NEXT_PUBLIC_BUNNY_CDN_URL — を远加しお Deploy。/en/JFK ず /fr/SFO を確認したす。以埌の git push で再デプロむされたす。

2. ラむブプレビュヌずむンプレヌス線集

どちらもスキャフォヌルドに同梱されおいたす。

  • ラむブプレビュヌlayout.tsx の <Refresher> は管理画面で線集・保存するずプレビュヌしおいるペヌゞを曎新したす — 再デプロむ䞍芁。
  • むンプレヌス線集任意の URL䟋 /en/JFK?edit_mode=trueに ?edit_mode=true を付䞎するず線集オヌバヌレむが衚瀺されたす。䞀般公開の蚪問者にはクリヌンなペヌゞが衚瀺されたす。

?edit_mode=true はラむブペヌゞ䞊に゚ディタをオヌバヌレむ衚瀺したす。

完成

50 件の空枯、35 蚀語、ラむブ配信 — デヌタで満たされたたった 1 本のルヌト、4 ぀の React コンポヌネント、そしお少量の CEL バむンディング。CMS がコンテンツを保持し、あなたのコヌドがレンダリングし、CEL が䞡者を぀なぎたす。

Continue Reading
NextDeployments›