CMS Pages table as the live content map of files and routes
Pages content map

Appifio Creator · Lesson AS10 · Intermediate · Aura series

Content map
why file names must match

CMS already has 3 “Published” posts but the blog page is empty? Usually the page and CMS are not reading the same ledger.

Learning goals: Understand the content map (manifest); ask AI to read it before naming files; fix “CMS full / web empty”.

Previous: AS08 · Next: AS11 · CMS + Prompt / custom types: AS19-AS21 · ~12 minutes

__cms_manifest__.json __cms_ui_contract__.json Coder Save changes Files

1. “Same ledger” map

CMS Security tab listing storage names per content type
Storage catalog
Content map declares: posts → file A
CMS writes to file A ✓
Blog page reads file B ✗ → empty list
Fix: page reads file A (the declared name)

__cms_manifest__.json is like a library catalog: it says “which shelf holds posts.” You do not hand-edit system files - tell AI to read the catalog first.

2. Glossary

TermMeaningWhere you see it
Content mapDeclares content type ↔ data file name (data_file)__cms_manifest__.json (Files)
UI contractHTML page + hook ids (#post-list, #de-item-list…) when editing layout__cms_ui_contract__.json
Matching file nameThe site reads the same ledger CMS writes - always from the live map, not from memoryPrompt / page code

3. Steps when the page is empty

  1. Confirm CMS really has Published posts.
  2. Creator · Coder: “Read the CMS content map first; use the declared post data file name; fix the blog page to read that ledger.”
  3. Quick check: post count in CMS vs list on the page.
  4. Save changes → hard-refresh the live page.
Do not ask AI to “delete / rewrite panel system files at random.” Only fix the page so it reads the declared ledger.

3b. Hands-off system files & standard entities

Some system files must not be hand-edited / read-written like normal data:

FileDo it the right way
login.jsonOnly via login / Admin Management / CMS Accounts (AS05)
routes.jsonRoutes tab · Add Route (AS04) - do not overwrite the file casually
cms-settings.jsonCMS settings / admin rights - light editors usually cannot edit
Internal shard foldersSystem-managed - do not ask AI to “open / edit shards”

When CMS is on, standard ledger names (from the map):

TypeCommon file nameGuest append?
Postsblog-posts.jsonNo
Contactscontacts.jsonYes (form)
Products / OrdersUsually shop-products.json / shop-orders.json - re-read the manifest if your site differsOrders: usually yes (checkout)
Pages / Categories / Tagspages.json, blog-categories.json, blog-tags.jsonNo
Custom type (e.g. real estate)Per the data_file you declare (e.g. properties.json)No (CMS admin only)

Custom types: create in the Panel (AS20) or ask AI to merge the two files correctly (AS21) - do not invent parallel file names. Prompt overview: AS19. Coder / security enforce: AM11. Security UI: AS11.

Built-in blog filters with status === 'published'. Custom types filter with publish_state === 'published'. Wrong field → empty list even when CMS has items.

4. Comparisons

  • WordPress: theme queries the wrong post type → empty even though admin has posts.
  • Airtable + frontend: wrong table name → empty UI.

5. Limits

You can

  • Fix with a clear prompt

Do not

  • Do not dig into internal CMS panel code

6. Checklist

  1. Does the prompt say “read __cms_manifest__.json first”?
  2. When editing layout: did you keep hooks from __cms_ui_contract__.json?
  3. Filter on status (blog) or publish_state (custom types)?
  4. Did you Save changes and refresh live?

Next

AS11 - Content security settings

CMS + Aura detail: AS19 · Custom types / real estate: AS20 · AI merge two files: AS21

Appifio Creator · Aura series · AS10