Project Launchpad logoProject Launchpad
MainAIPricingBlogAbout
Project Launchpad logoProject Launchpad

A production-ready Next.js 16 starter template with authentication, i18n, and best practices built-in.

Product

  • Pricing
  • AI

Company

  • About
  • Pricing
  • Blog

Legal

  • Privacy Policy
  • Terms of Service

© 2026 Project Launchpad. All rights reserved.

HomeBlogpythonArticle Details

Shared Content Platform: Architecture, Publishing, Permissions, and Daily Workflows

8/10/2026
Shared Content Platform: Architecture, Publishing, Permissions, and Daily Workflows
Learn what the shared content platform solves, how responsibilities are divided between the platform and product teams, and how content moves from draft to production. This guide also covers permissions, reusable components, publishing workflows, and day-to-day work in the admin panel.

Table of Contents

  1. Table of Contents
  2. 1. What It Is and What Problems It Solves
  3. Problem 1: Integrating a New Product Is a Cross-Team Engineering Project
  4. Problem 2: Permissions Cannot Support Real Organizational Structures
  5. Problem 3: Content Capabilities Are Rebuilt Repeatedly and Inconsistently
  6. Problem 4: Pages Are Configured as a Whole, So Every Change Requires Engineering
  7. Problem 5: No Way to See Who Changed What, with Separate Accounts for Every System
  8. 2. What It Takes to Integrate a New Product
  9. 3. Why the Operations Team Can Publish Content Independently
  10. 4. What the Platform and Product Teams Each Manage
  11. Integrate without changing the product database
  12. The product's own admin panel remains in place and can be integrated
  13. V. How content moves through the workflow
  14. 1. Two environments, with promotion one stage at a time
  15. 2. Changes made in the admin panel are drafts; the live site changes only after publishing
  16. 3. One primary language, with all other languages following automatically
  17. 4. Automatic checks before publishing
  18. VI. What each section can do
  19. Landing pages
  20. Blog
  21. Component Library
  22. Categories and Tags
  23. Multiple Languages and Translation
  24. What AI Can Do
  25. Publishing and Unpublishing
  26. 7. The Day-to-Day Workflow
  27. 8. Potential future enhancements
  28. What to read next

This document explains what problems the system solves, what the platform and each product are responsible for,
how content flows through the system, what each part can do, and exactly how to work in the admin panel.

You can read it without a technical background. If you just want to get started quickly, skip straight to Section 7, “Day-to-Day Workflow.”

Table of Contents

Document

What It Covers

This document

The problems the system solves, the boundaries between the platform and products, how content flows, what each part can do, and day-to-day workflows

Publishing Workflow

The full draft → test → production workflow, what publishing checks cover, going live and taking content offline, and the differences between landing pages and blog posts

Component Library

Why we moved from configuring entire pages to building with modular components, where components come from, and what they protect you from

Roles and Permissions

What you can see and do, how operations and development responsibilities are divided, and how to sign in

Frequently Asked Questions

When something goes wrong, troubleshoot it by following “symptom → cause → solution”


1. What It Is and What Problems It Solves

A shared content platform for multiple products.

It is not meant to solve a lack of editors, but five problems that are already slowing everyone down.

Problem 1: Integrating a New Product Is a Cross-Team Engineering Project

Previously, every product’s admin panel was packed into the same system. Integrating a new product meant changing code, adding menus, and adding permission checks, then releasing the entire system again. This created three forms of tight coupling:

  • Coupled release schedules — A small feature for Product A had to wait for a shared release window; a bug in Product B could block Product A’s release

  • Coupled blast radii — A crash or memory leak in any module could spread to every product’s admin panel

  • Coupled technology stacks — A new product’s admin logic had to be written in that system, preventing the product from using its own repository and release cadence

As a result, integrating a product became increasingly expensive. Eventually, no one wanted to do it, so each team built its own system—bringing us back to a collection of separately maintained admin panels.

Now: Each product is deployed independently, and the platform communicates with it only through interfaces and sign-in. Integration requires no platform code changes and takes up no release window; a product issue cannot spread to the platform, and the platform cannot access the product’s business data or secrets.

Problem 2: Permissions Cannot Support Real Organizational Structures

Previously, permissions were approximated using “the ids of the products you can view.” This could not express “张三 works in operations for Product A, in development for Product B, and has read-only access to Product C,” let alone whether 张三 could access the production environment.

Conventions and people’s memories were the only safeguards, creating a high risk of unauthorized access and making incidents difficult to explain.

Now: Permissions are defined across three dimensions—product × role × environment—and denied by default; the operations and development domains are isolated from each other.

Problem 3: Content Capabilities Are Rebuilt Repeatedly and Inconsistently

Every product needs landing pages, SEO, multilingual content, and structured data, so these capabilities were rewritten for every new product. Implementations were inconsistent, and SEO behaved differently in Product A and Product B; sitemap was hard-coded, and operations had to ask development to release a new version just to change landing-page copy.

Now: These capabilities are built once in the platform and shared by every product. Operations can make and publish changes independently, and production updates automatically after publication, with no product redeployment required.

Problem 4: Pages Are Configured as a Whole, So Every Change Requires Engineering

Previously, each landing page had its own configuration, which hard-coded the sections included on that page. That configuration belonged only to that page: Changing the order, removing a section, or adding an introduction required changing the configuration structure or even the code; If page B needed a section built for page A, the only option was to copy it. The two copies would then evolve independently and become increasingly different.

The more pages there were, the more fragmented the configurations became and the more expensive changes were.

Now, a page is not a single configuration but a sequence of component instances. Product teams turn reusable sections into components, while operations teams drag components onto a page, arrange them, and add content — they can add a section, remove one, or change the order themselves. The same component can be reused across any number of pages, so every improvement benefits them all. The same applies to blog posts, where components can be inserted directly into the body.

(See the component library for details.)

Problem 5: No Way to See Who Changed What, with Separate Accounts for Every System

Previously, there was no unified audit trail or single sign-on — each admin system had its own login, and each product maintained its own accounts.

Now: one login, with a complete audit trail for every action.


2. What It Takes to Integrate a New Product

One of this system's design goals is to ensure that integrating another product is no longer an engineering project.

Before

Now

Platform code

Modify the shared admin system, add menus, and add permission checks

No changes

Deployment

Redeploy the entire shared admin system, with multiple products queued and handled sequentially

Not required

Content admin system (landing pages/blogs/SEO/localization)

Build it separately for each product

No need to build it — the platform provides it for everyone

The product's own database

Create a set of content tables

No tables to create

Account system

Build its own login and permissions system

Integrate with the platform's single sign-on

What must be built for a new product

Admin system + content capabilities + login

Only define what its own pages look like

The fourth row is not an estimate but a measured result: in one real project that has already been integrated, its own database contains only 2 tables (and both are used for visitor login on its public site), with 1 database migration script file. Landing pages, blogs, categories and tags, SEO, and every language version are all stored on the platform.

This has two direct benefits: integration is lightweight, and integration is reversible — if the product stops using the platform one day, its database remains clean.


3. Why the Operations Team Can Publish Content Independently

Whether the operations team can manage content independently depends on what happens when something goes wrong. This system uses several structural safeguards to minimize the cost of errors:

Mechanism

What It Prevents

Two environments with sequential promotion only

Content cannot reach the production site until it has been verified on the test site

Automated pre-publish checks

Structure, component availability, multilingual completeness, categories, and SEO are all checked at once; publishing is blocked if any blocking issue is found

Forms generated from component declarations

The product team defines what can be entered, the permitted length, and whether each field is required, making the forms impossible to break through data entry

Production component versions are locked

If the product team breaks a component, pages already in production remain unaffected

Reference checks before deletion

This prevents scenarios where deleting a component suddenly leaves a page blank

Permissions by product × role × environment

Anything not explicitly permitted is off-limits; the operations and development domains are mutually isolated

Complete audit trail

You can see who changed what and when

As a result, the operations team can update copy without waiting for an engineering release. Production updates automatically after publication, so the product team does not need to redeploy either.


4. What the Platform and Product Teams Each Manage

The system intentionally draws a clear boundary:

Managed by the Platform

Managed by the Product Team

Content (landing pages, blog posts, categories, SEO, and multiple languages)

✅ Stored on the platform and maintained in the platform admin

—

How pages look (layout, styling, and components)

—

✅ Defined in the product team's own code

Business data (users, orders, etc.)

—

✅ Neither stored by nor accessible to the platform

Sign in

✅ Provided out of the box

Connect it and start using it—there is no need to build a separate system

Integrate without changing the product database

The platform does not create any content tables in the product database.

In one real-world project that has already been integrated, its own database has only 2 tables, both used for visitor sign-in on the frontend; there is only 1 database migration file. Landing pages, blog posts, categories and tags, SEO, and all language versions are stored on the platform.

This makes the integration reversible—if you stop using it one day, the product database remains clean.

The product's own admin panel remains in place and can be integrated

The platform manages content, while the product manages its own business operations (the platform cannot and should not access users, orders, or similar data).

The product's own admin panel does not need to be replaced. It can be embedded in the platform: open “Project Admin” from the sidebar, and the product's own admin interface runs there, with the platform carrying over the signed-in session—no need to sign in again.

For users, content and business operations are in one place, so there is no need to switch back and forth between systems.


V. How content moves through the workflow

This section lays the foundation for everything that follows. Four rules apply throughout the site.

1. Two environments, with promotion one stage at a time

你在后台改  →  发布到测试站  →  升级到生产站
   (草稿)      (自己验收)      (用户可见)

You cannot skip testing and push directly to production. The version in production is always the version that was verified in testing.

2. Changes made in the admin panel are drafts; the live site changes only after publishing

This is the easiest rule to overlook: after you make and save changes in the admin panel, the live site does not update immediately—you need to publish them.

The same applies to categories and tags. Selecting a category for a post changes the draft; the live site will not reflect the change until the post is published again. The interface displays a notice telling you that “there are unpublished changes.”

3. One primary language, with all other languages following automatically

Each page or post has a primary language (labeled “Baseline” in the interface).

  • A field that has not been edited separately → automatically follows the primary language and changes whenever the primary-language content changes

  • A field that has been edited or translated → becomes independent from that point on, and subsequent changes to the primary language will not overwrite it

There is no need to maintain a “Follow primary language” toggle—the system determines whether a field should follow based on the field's content itself.

4. Automatic checks before publishing

When you click Publish, the system first checks structural integrity, whether the components used are available in the current environment, whether all languages intended for release are complete, whether categories are valid, and whether the SEO and structured data are valid.

Any issues are listed, and blocking issues must be fixed first. Each one includes a link that takes you directly to where it can be fixed. After publishing succeeds, the live site updates automatically, and the product does not need to be redeployed.


VI. What each section can do

Landing pages

Build a page from components. The page structure is on the left, a live preview is in the center, and the fields for the currently selected component are on the right.

You can:

  • Create a new page, or select **“Duplicate as New Landing Page”** from an existing page

  • Drag and drop components to reorder them. You can also choose which components to place in fixed positions such as the header and footer (called slots in the interface).

  • Fill in SEO and structured data

  • Full-page AI copy: review all the text on the page at once

  • Excel import and export: export an entire page or a single component to a spreadsheet, make your changes, and import it again — ideal for bulk copy edits and adding multiple languages in bulk

Blog

Write body content just as you would in a document editor, and insert components directly into the body (such as quote blocks, key-point cards, and pricing tables).

The four tabs on the right are:

  • Content — article title, summary, path, cover image, categories and tags, and display preferences

  • Table of contents — automatically generated from headings in the body; click an entry to jump to it

  • SEO — search title, description, and keywords; social sharing card copy; and structured data

  • Components — select a component in the body, then fill in its fields here. Plugin slots, such as those in the sidebar and footer, are also configured here

You can upload a cover image or generate one with AI.

Component Library

See which components the product has, which fields each component contains, and which pages use them (“Usage locations”).

Components are declared in the product's own code, and the platform generates forms from those declarations. This means:

  • You can't enter invalid content — the declaration determines what you can enter, how long it can be, and whether it is required

  • The version currently used in production is locked — if the product team breaks something, the live site remains unaffected

  • Before deleting a component, you'll be told where it's used — so you won't “delete a component and suddenly find a page empty”

When the product team updates a component, click “Sync Components” here to pull in the update.

Categories and Tags

  • Categories are hierarchical, and you can create subcategories. Blog posts must be assigned to the lowest level; landing pages can be assigned to any level

  • The identifier (slug) is optional — if provided, the product can use it for routing or filtering; otherwise, it is used only for internal categorization in the admin

  • Categories and tags have their own test/production status, shown by two small dots in each row: test on the left and production on the right (gray = unpublished, green/blue = published, amber = changed but not yet republished)

  • When you publish content, the categories it uses are automatically published with it, so you don't need to publish them separately first

  • You can't unpublish a category while content that uses it is still live — otherwise, that content would suddenly disappear from archive pages

Multiple Languages and Translation

Switch languages at the top of the editor. To translate, open “AI Assistant” and switch to “Translate.” Available scopes:

Scope

What gets translated

Components/plugins only

Only fields in components on the page or in the body

Body only

Only text in the body

Page content

Titles and summaries

Page SEO

Copy in the SEO fields

Entire article

All

There is also a **“Correct to Current Language”** option: if a field contains text in another language, click it to convert the text in place to the current language.

Translation does not alter the structure. Code blocks, inline code, and link URLs in long-form content remain unchanged character for character before and after translation; images and category tags are not translated either.

What AI Can Do

Capability

Description

Write, rewrite, and polish copy

Entire landing pages, blog content, component fields, titles, and summaries

Translate

See the previous section

Optimize SEO

Search titles, descriptions, and keywords + social card copy—all seven fields at once

Generate images

Save images directly to the project's image storage and set them as the cover image

Add category and tag names in other languages

Complete them with one click under “Categories / Tags”

AI does not touch non-copy fields such as link URLs, image URLs, code, or prices—so it cannot break the page.

Configure and switch providers under “AI Settings”: OpenAI, Anthropic, Google, DeepSeek, OpenRouter, Fal, and Replicate. You can choose separate providers for copywriting and image generation.

The structured data (JSON-LD) section is not generated by AI—it recommends content according to rules based on the page's existing content. Just click “Generate with One Click”; it is more accurate than asking a model to guess.

Publishing and Unpublishing

  • Publish from the editor: select a language → run checks → publish. Because content must pass the checks before going live, publishing can only be initiated from the editor.

  • Unpublish directly from the list: each language, staging site, and production site is managed independently, and you must confirm the action.

  • The top button accurately reflects the status: 发布到测试 / 重新发布到测试 / 已发布到测试


7. The Day-to-Day Workflow

Using a multilingual blog post as an example, here is the process from scratch to launch:

  1. Create—click “New Post” in the blog list to open the editor.

  2. Write in the primary language—confirm at the top that the current language is labeled “Baseline,” then write the title, summary, and body content.

  3. Featured image — Upload a cover image in the “Content” tab on the right, or click “AI Generate” (Describe a scene in the prompt; don’t write “based on the article content”—the AI can’t see the article body during generation.)

  4. Insert components — Use “Insert” to add components to the article body. After selecting a component, fill in its fields in the “Component” tab on the right.

  5. Categorize — Select categories and tags in the “Content” tab.

  6. Add SEO — In the “SEO” tab, click “AI Optimize SEO” to generate all seven fields at once, then click “Generate with One Click” to add structured data.

  7. Translate — Switch to another language, then select “AI Assistant” → “Translate” → choose “Entire Article” as the scope → select the target language → send → apply.

  8. Preview — Click “Preview” at the top. You can switch between desktop and mobile views, and between light and dark modes.

  9. Publish to test — Click “Publish to Test” at the top, select the languages, and publish after the checks pass.

  10. Review — Check it on the test site.

  11. Promote to production — Select “Promote to Production.” Only languages that are live on the test site and whose content exactly matches the test version can be promoted. (The interface labels these as Test exact online.)

The landing page workflow is the same, except that steps 2~4 involve dragging in components and filling in fields.


8. Potential future enhancements

  • Long-form writing: Creating and rewriting entire articles are currently supported. Outline planning and section-by-section continuation could be added in the future.

  • Terminology consistency: Translation currently preserves structure and links. A site-wide glossary could be added in the future to keep proper nouns consistent across articles.

  • More relevant images: Images are currently generated from prompts. In the future, the generator could use the article content when creating them.


What to read next

  • Want to fully understand the publishing pipeline? → Publishing Workflow

  • Want to understand how pages are built? → Component Library

  • Want to know what you can do and why some things can’t be changed? → Roles and Permissions

  • Have a specific issue? → Frequently Asked Questions

Recommended Reading

刀豆 Console Engineering Design: Control Plane, Runtime Plane, and Communication Boundaries

刀豆 Console Engineering Design: Control Plane, Runtime Plane, and Communication Boundaries