# Video Production Plan : Video 2 — Headless Foundations and Designing for Editors

### About this export

| Field | Value |
| --- | --- |
| **content_type** | lesson |
| **platform** | contentstack-academy |
| **source_url** | https://www.contentstack.com/academy/courses/video-production-plan/video-production-plan-video-2-headless-foundations-and-designing-for-editors |
| **course_slug** | video-production-plan |
| **lesson_slug** | video-production-plan-video-2-headless-foundations-and-designing-for-editors |
| **markdown_file_url** | /academy/md/courses/video-production-plan/video-production-plan-video-2-headless-foundations-and-designing-for-editors.md |
| **generated_at** | 2026-08-26T11:17:52.812Z |

> Part of **[Video Production Plan](https://www.contentstack.com/academy/courses/video-production-plan)** on Contentstack Academy. **Academy MD v3** — structured for retrieval; no quiz or assessment keys.

<!-- ai_metadata: {"lesson_id":"17","type":"text","duration_minutes":3,"topics":["Video","Production","Plan","Video","Headless","Foundations"]} -->

#### Lesson text

# Video 2 — Headless Foundations and Designing for Editors

Attribute

Details

Course

1 (Foundations)

Covers

Lessons 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.2.1, 1.2.2, 1.2.3

Priority

Core

Length

15-20 min

Format

Slides/diagrams + Contentstack UI walkthrough + good vs bad content type comparison

Status

Not started

## Why This Video Matters

Establishes the mental model that everything else depends on. If learners don't understand headless boundaries and the editor-developer relationship, every later topic is harder.

## Outline

1.  What headless really means: the CMS does not own rendering — developers own framework, hosting, and rendering strategy
2.  Compare monolithic (WordPress/Drupal renders pages) vs headless (API-first, frontend renders)
3.  Gains: framework freedom, deployment flexibility, multi-channel delivery, independent scaling, reduced security surface
4.  Losses: no built-in page rendering, no URL routing, preview requires implementation, content-to-page mapping is your job
5.  The 5 building blocks: Stacks, Content Types, Entries, Assets, Environments — walk through each in the UI
6.  Draw the boundary: what Contentstack IS vs IS NOT
7.  Content types as dual-purpose: API contract AND editor interface
8.  Field UIDs become API keys; Display Names become editor labels — show this mapping live
9.  Constraints vs flexibility: over-constraining causes workarounds; under-constraining pushes quality control to frontend
10.  Collaboration patterns that work vs anti-patterns

## Key Lines

"Headless is not just a tooling choice. It is a responsibility shift."

"A content type is not only a schema. It is also an editor interface."

"Your content model is a product. Your editors are your users."

## Detailed Talking Points

### 1\. What headless really means

*   Start with the misconception: "headless" is the most misused word in CMS marketing. Vendors slap it on everything. What it actually means is one architectural fact: the CMS does not own the rendering layer.
*   The metaphor: the "head" in a traditional CMS is the presentation layer — templates, routing, HTML output. Remove that, and you have a headless CMS.
*   Ownership, not tooling: headless is not a framework decision. You could build a headless frontend with jQuery and server-rendered PHP. The CMS is headless because it does not render — your framework choice is a separate decision.
*   In Contentstack specifically: you define content types, create entries, and the platform serves them via REST and GraphQL APIs. It does not generate a single HTML page. No template engine, no routing layer, no SSR pipeline inside the platform.
*   The Veda angle: when an editor publishes the "Matrix Link Bracelet" product entry, Contentstack makes that JSON available via API. Whether it becomes a web page, a mobile screen, or a kiosk display depends entirely on what you build.
*   The responsibility shift: everything downstream of the API — framework, hosting, rendering strategy, URL structure, page composition — is yours to build and maintain.

### 2\. Monolithic vs headless comparison

*   WordPress example: create a page, hit Publish, and the CMS writes to MySQL, selects a PHP template from your active theme, executes it, and returns rendered HTML. The CMS owns every step from storage to browser output.
*   Drupal follows the same pattern: Twig templates, render arrays, theme layer — CMS controls the full response lifecycle.
*   Contentstack: editor publishes an entry, content lands on the delivery API. Full stop. Your Next.js app, your Nuxt site, your Astro project makes an API call, gets JSON, renders it however you decided.
*   Key point: this is an architectural distinction, not a quality judgment. Calling something headless does not make it better. It means the rendering responsibility moved.
*   Tie it together: the separation means CMS and frontend have independent deployment lifecycles, separate hosting, separate tech stacks. Content publishing and code deployment are decoupled.

### 3\. What you gain

*   Framework freedom: React, Vue, Svelte, Astro, Qwik — all valid because the CMS only provides content via API. You can also switch frameworks without migrating the CMS — build a new frontend, point it at the same APIs, retire the old one.
*   Deployment flexibility: your frontend is an independent app. Deploy it to Vercel, Netlify, Cloudflare Pages, AWS, your own infrastructure. Optimize for your traffic patterns and cost constraints.
*   Multi-channel delivery: one Contentstack stack can serve a website, mobile app, digital kiosk, voice assistant. For Veda, the same product content could power the web storefront and an in-store display.
*   Independent scaling: a viral product launch puts load on your frontend and the CDN-backed delivery API, not on the content management system. Editors keep working uninterrupted.
*   Security surface reduction: end users never touch the CMS directly. No WordPress-style vulnerabilities where the same app that serves pages also processes admin requests.
*   Separation of concerns: content team works in the CMS, dev team works on the frontend. The API contract (content model) is the boundary between them.

### 4\. What you give up

*   No built-in page rendering: creating a content type and entries gives you structured data behind an API. To see a web page, you build a frontend. This includes layout, component mapping, responsive design, accessibility, performance optimization.
*   No URL routing: WordPress auto-generates /blog/my-post-title/. In headless, you design the URL structure, implement routing in your framework, and handle redirects, canonical URLs, sitemap generation yourself. This is commonly underestimated.
*   Preview requires implementation: in WordPress, "Preview" just works because the CMS renders the page. In headless, you build preview mode — configure preview tokens, set up preview-aware routing, integrate the Live Preview SDK. Preview is a feature you build, not a feature you get.
*   Content-to-page mapping is your problem: a homepage might pull from Hero Banner, Featured Products, Latest Articles, and Promotional Banner content types. The composition logic, query strategy, and rendering orchestration are all yours.
*   Editor experience depends on your investment: if you do not implement Live Preview, editors cannot see changes in context. If you skip Visual Builder, editors cannot edit on-page. Two identical Contentstack projects can have radically different editor experiences based purely on developer effort.

### 5\. The 5 building blocks

*   **Stacks:** the top-level container. Everything lives inside a stack — content types, entries, assets, environments, locales, branches, tokens, workflows, webhooks. Think of it as a project boundary. For Veda, one stack named veda-revival-web holds everything for the storefront.
*   **Content Types:** schemas that define the structure of content. Declare fields, data types, validation rules. A content type defines the shape of the JSON the API returns. For Veda: Product (title, short\_description, price, media, product\_line reference), Product Line, Category, Page with Modular Blocks.
*   **Entries:** instances of content types. The data. When an editor clicks "Create Entry" and selects a content type, they get a form generated from the schema. Entries exist independently of any page — a Product entry is structured data until your frontend fetches and renders it.
*   **Assets:** files in Contentstack's repository — images, PDFs, videos. Each gets a CDN-backed URL. Image transformation pipeline built in: append ?width=400&format=webp to resize and convert on the fly. No separate image processing service needed.
*   **Environments:** deployment targets. development, staging, production. Each has its own delivery token. Publish an entry to staging for review without it appearing on production. This is how you prevent draft content from leaking to the live site.
*   The fundamental loop: model content types, create entries, publish to environments, deliver via API. Every other feature extends this loop.

### 6\. Drawing the CMS boundary

*   The boundary principle: Contentstack is the system of record for content. Content means structured editorial material — what editors create, review, approve, and publish through editorial workflows.
*   What it IS: content storage with versioning, editorial workflows, multi-environment publishing, API delivery (REST + GraphQL + CMA), asset hosting with CDN and image transforms, webhooks for event-driven architecture, Live Preview and Visual Builder infrastructure, content branches for safe schema evolution.
*   What it IS NOT: a web host, a server-side application runtime, an end-user authentication system, an e-commerce transaction processor, a general-purpose database, a job scheduler, a URL router.
*   Concrete examples to drive the point home: Contentstack can store product descriptions for Veda, but it does not process orders — that is Shopify or commercetools. It can store a URL slug in a field, but it does not enforce that as a route — your frontend does that. It manages CMS user access, but it has no concept of your website's visitors.
*   Why this matters: clear boundaries keep the CMS performant and make team responsibilities unambiguous. A system that tries to do everything does nothing well.

### 7\. Content types as dual-purpose

*   This is the single most important concept for developers working in a headless CMS: a content type is simultaneously an API contract AND an editor interface.
*   When you open the Content Type Builder and add fields, every field you drag onto the canvas appears as an input element in the entry editor. You are writing a schema and designing a UI at the same time.
*   The field's Display Name becomes the label editors read. The field's help text becomes the guidance they rely on. The field's position determines the order editors work through.
*   For Veda: a Product content type is both the JSON shape your Next.js app consumes and the form an editor fills out 50 times a day.
*   Consequence: if you name fields for the API and ignore the editor, you get a technically clean schema with a terrible editing experience. If you design only for editors without thinking about the API, you get messy JSON that is painful to consume.

### 8\. Field UIDs become API keys

*   Every field has two names: the UID (machine-readable, used in API responses — becomes a JSON key) and the Display Name (human-readable, shown to editors).
*   Developers focus on UIDs because that is what appears in code. Editors never see UIDs — they only see Display Names.
*   Show this mapping live: a field with UID short\_description and Display Name "Marketing Tagline (max 120 chars)" — the editor sees the friendly label, the API returns the clean key.
*   Good Display Names communicate purpose, not just data type. Not "Image" but "Hero Image (1920x1080)." Not "URL" but "External Link (full URL including https)." Not "Body" but "Product Description (long-form content)."
*   Help text is inline documentation editors actually read. It answers: What goes here? Why does it matter? What are the constraints? Example: "Write a 150-160 character summary of this page. This appears in Google search results below the page title."
*   Field order matters: editors work top to bottom. Put identity fields first (title, slug), then primary content, then supporting content (images, references), then metadata (SEO) last.

### 9\. Constraints vs flexibility

*   Over-constraining forces workarounds: if every field is mandatory, editors upload placeholder images, enter dummy text, misuse fields. The data becomes unreliable not because editors are careless but because the system gave them no legitimate path.
*   Veda scenario: a Product content type with a mandatory "Featured Image" field. The team wants to publish a placeholder product without an image yet. They upload a blank white square. The frontend now displays a meaningless image.
*   Under-constraining pushes quality control to the frontend: no mandatory fields means inconsistent content. One author adds SEO descriptions, another skips them. One uploads 1920x1080 hero images, another uploads phone screenshots. The developer writes defensive code for every variation — expensive to build, hard to maintain.
*   The guideline: make a field mandatory only if the frontend breaks without it. Use help text as a behavioral guardrail for everything else.
*   Modular Blocks as the sweet spot: define a set of named blocks (Hero, Rich Text, Image Gallery, CTA, Video Embed), each with their own fields. Editors compose pages by selecting and ordering blocks. They get creative freedom within developer-defined structure. The API response is a typed array — no surprises.
*   Start loose, tighten based on data: at launch, keep constraints minimal. After three months, you have real usage data. See which fields are always filled (candidates for mandatory), which follow patterns (candidates for validation), which are never used (candidates for removal).

### 10\. Collaboration patterns vs anti-patterns

*   **Pattern: Content model co-design** — 30-minute session per content type with one or two editors. Open the Content Type Builder, walk through each field together. Developers learn editors call "Summary" "Teaser Text." Editors learn the Hero Image needs 16:9 aspect ratio. Both discover the Author reference needs to allow multiple authors.
*   **Pattern: Staged rollout** — do not deploy a new content type directly to production. Use dev environment first, invite editors to create test entries with real content (not lorem ipsum), gather feedback, iterate, then deploy to production. Adds a few days but prevents weeks of rework.
*   **Pattern: Documentation as conversation** — put documentation in the content type itself. Help text on every field, content type description explaining when to use it. External wikis decay. In-context help travels with the content type.
*   **Pattern: Preview-driven development** — implement Live Preview early, not as post-launch polish. When editors see their changes rendered in real time, they need less guidance about constraints. An editor who uploads a low-res image and sees it blurry in preview understands the requirement viscerally.
*   **Anti-pattern: "Dev builds, editor adapts"** — developer designs content types in isolation, editor sees them for the first time when entering content. Result: field names do not match editor vocabulary, order is wrong, help text is missing, constraints are either too tight or nonexistent. Two hours to design, two weeks to stabilize.
*   **Anti-pattern: "Editor-designed content types"** — editors specify exactly what fields they want, developers implement without pushback. Editors think in pages and layouts — they request "Left Column Text" and "Right Column Text" which encodes layout into the content model. When design changes, field names become misleading.
*   **Anti-pattern: "Change on request"** — every editor request becomes a field addition. Over months, content types accumulate 35 fields, most empty in 90% of entries. This is field sprawl — the content modeling equivalent of tech debt.

## Screen: What to Show

### 1\. What headless really means

*   Open a simple diagram (prepared slide) showing: CMS box on the left labeled "Content Storage + API," arrow pointing right to multiple frontend boxes (web, mobile, kiosk). Contrast with a monolithic diagram where everything is one box.

### 2\. Monolithic vs headless comparison

*   Side-by-side slide: left side shows WordPress flow (Content -> PHP Template -> HTML -> Browser, all inside one box). Right side shows Contentstack flow (Content -> API -> \[gap\] -> Your Frontend -> Browser, with the gap highlighted as "your responsibility").

### 3\. What you gain

*   Quick slide listing the six gains with icons. No need to linger — this is a verbal section.

### 4\. What you give up

*   Same format: slide listing the five losses. Highlight "Preview requires implementation" with a callout box — this surprises people the most.

### 5\. The 5 building blocks

*   Switch to the Contentstack UI. Open the Veda stack.
*   Show the stack dashboard — point out the left-hand navigation sections.
*   Click into Content Models and open the Product content type. Show the field list in the Content Type Builder.
*   Click into Entries and show the list of Product entries. Open the "Matrix Link Bracelet" entry to show the editor form generated from the content type.
*   Click into Assets and show the folder structure with Veda product photography.
*   Click into Settings > Environments and show the three environments (development, staging, production) with their base URLs.
*   Briefly show the relationship: "Content type defines the schema, entry is an instance, assets are referenced, published to an environment, delivered via API."

### 6\. Drawing the CMS boundary

*   Return to the slide deck. Show a two-column slide: "Contentstack Does" on the left (content storage, workflows, API delivery, asset CDN, webhooks, Live Preview infra, branches) and "Your Responsibility" on the right (hosting, rendering, routing, auth, e-commerce, scheduled jobs, URL management). Draw a clear vertical line between them.

### 7\. Content types as dual-purpose

*   Back in the Contentstack UI. Open the Product content type in the Content Type Builder. Point at the field list and say: "This is simultaneously the API contract and the editor interface."
*   Then open an entry of that content type side by side (or switch between tabs) to show how each field in the builder maps to an input element in the entry editor.

### 8\. Field UIDs become API keys

*   In the Content Type Builder, click on a field (e.g., the short\_description field on the Product content type). Show the UID field and the Display Name field side by side in the field settings panel.
*   Then open a browser tab with the Contentstack API Explorer or a raw JSON API response for a Product entry. Point at the JSON key that matches the UID. Show that the Display Name does not appear in the API — it is only for editors.
*   Scroll through the entry editor and point out help text on fields, showing how it appears directly below the label.

### 9\. Constraints vs flexibility

*   In the Content Type Builder, open the Product content type. Click on a field and show the "Mandatory" toggle and validation rules (min/max length, regex).
*   Create or show a comparison: a content type with every field marked mandatory vs one with sensible defaults. If possible, show a screenshot of the editor hitting a wall of red validation errors vs a clean save experience.
*   Open a Page content type that uses Modular Blocks. Show the block type definitions (Hero Block, Rich Text Block, CTA Block). Switch to an entry and show how editors add and reorder blocks — the compositional freedom within guardrails.

### 10\. Collaboration patterns vs anti-patterns

*   Show a slide with two columns: "Patterns That Work" (co-design, staged rollout, in-context docs, preview-driven dev) and "Anti-Patterns" (dev builds alone, editor-designed types, change on request).
*   Quick screenshare: open a content type and show the Description field (where you document when to use this content type). Show a field's help text as an example of documentation that lives in-context.
*   If Live Preview is configured on the Veda stack, show the Live Preview panel — editor changes a product title, preview updates in real time. This is the money shot for this section.

## Veda Scenario Thread

*   **Opening (building blocks):** introduce the Veda stack as the running example. "We are building the storefront for Veda: The Revival Collection — a luxury jewelry brand. Everything we talk about today, we will see in this stack."
*   **Stacks:** the Veda stack (veda-revival-web) is the project container. All product content, collection pages, and campaign assets live here. If Veda launches a mobile app later, it can consume from the same stack — multi-channel from a single content source.
*   **Content Types:** walk through Veda's Product content type (title, short\_description, price, media, product\_line reference, category reference), Product Line content type (Digital Dawn collection), and Page content type with Modular Blocks for the homepage.
*   **Entries:** show real Veda entries — "Matrix Link Bracelet" at $295 in the Digital Dawn product line. Show a Page entry for "The Revival Collection" homepage composed from modular blocks.
*   **Assets:** Veda product photography, collection hero images, brand logo — all managed in the asset repository with CDN delivery and image transforms.
*   **Environments:** Veda's three environments — development (where devs test rendering), staging (where editors preview before go-live), production (the live storefront).
*   **CMS boundary:** Veda sells jewelry, but Contentstack does not process orders. Product content lives in the CMS; transaction processing lives in the commerce platform. The URL /products/matrix-link-bracelet is defined by the frontend, not the CMS.
*   **Dual-purpose content type:** the Product content type is both the JSON shape the Veda Next.js app consumes and the form editors fill out when adding new jewelry pieces to the catalog.
*   **Constraints:** the Product title and price are mandatory (the frontend breaks without them). The promotional tagline is optional with help text. The featured image is strongly recommended via help text but not mandatory — because sometimes a product is listed before photography is ready.
*   **Collaboration:** when the Veda team designed the Product content type, they sat with the merchandising editor and walked through each field. The editor pointed out that "short\_description" should be labeled "Marketing Tagline (max 120 chars)" because that matches their content brief. That 30-minute session prevented weeks of confusion.

## Transitions

1.  From intro to headless definition: "Before we touch any code or UI, we need to get one foundational concept right — what headless actually means, in terms of responsibility, not buzzwords."
2.  **From headless definition to monolithic comparison:** "To make this concrete, let's compare what happens when you hit Publish in WordPress versus what happens in Contentstack."
3.  **From comparison to gains:** "That separation sounds like you are losing features — and you are — but you are gaining something significant in return."
4.  **From gains to losses:** "Now let's be honest about the other side of that trade, because pretending headless is universally better does not help anyone build real projects."
5.  **From losses to building blocks:** "Alright, you understand the architecture and the tradeoffs. Let's get hands-on and look at the five building blocks you will work with every day."
6.  **From building blocks to CMS boundary:** "Now that you have seen the pieces, let's draw a clear line around what Contentstack is responsible for and what is yours."
7.  **From boundary to dual-purpose content types:** "This boundary leads directly to a concept that changes how you think about content modeling: your content type is not just a schema."
8.  **From dual-purpose to field UIDs:** "Let's zoom in on the mechanics — how field UIDs map to API keys and Display Names map to editor labels."
9.  **From field UIDs to constraints vs flexibility:** "Now that you see how fields shape both the API and the editor experience, the question becomes: how tightly do you control what editors can do?"
10.  **From constraints to collaboration patterns:** "Getting the constraints right is not something you do alone — it requires working with the people who actually use the system every day."
11.  **Closing transition to Video 3:** "You now have the mental model: headless architecture, the five building blocks, content types as dual-purpose contracts, and how to work with editors. In the next video, we go deep on the content modeling itself — field types, references, Modular Blocks, and the design patterns that separate a clean content model from a messy one."

## Common Mistakes to Call Out

1.  **Equating "headless" with "better":** headless describes architecture, not quality. A poorly implemented headless site is worse than a well-maintained WordPress site. The architecture enables flexibility; it does not guarantee outcomes.
2.  **Assuming the CMS handles routing or page generation:** developers from WordPress/Drupal expect the CMS to produce pages or manage URLs. In headless, the CMS produces structured content via APIs. Routing, URL generation, page composition, and HTML rendering are entirely the frontend's job.
3.  **Treating headless as a framework decision:** choosing React or Next.js is not what makes a CMS headless. The CMS is headless because it does not own rendering. The framework is your choice; the architecture is the CMS's characteristic.
4.  **Adopting headless without frontend development capacity:** the most expensive version of this mistake is an organization that chooses a headless CMS, then discovers every page change requires developer involvement because no one anticipated the frontend build cost.
5.  **Underestimating preview and editorial tooling investment:** developers focus on the API and rendering pipeline. Editors need to see content in context. Treating Live Preview and Visual Builder as optional polish leads to editor frustration and slower content operations.
6.  **Comparing CMS license cost instead of total cost of ownership:** frontend development, hosting infrastructure, preview tooling, deployment pipelines, and ongoing maintenance are all costs that exist in headless but are partially absorbed in traditional CMS setups.
7.  **Confusing content types with pages:** a content type called "Page" defines fields, not a rendered page. Multiple entries from different content types compose a single page, and a single entry might appear on multiple pages.
8.  **Using one environment for everything:** running dev, staging, and production through a single environment removes the ability to preview and validate content before it reaches end users — and risks leaking draft content to the live site.
9.  **Storing non-content data in content types:** feature flags, app config, transactional records — these clutter the editorial interface and push the CMS beyond its design. Use environment variables or dedicated configuration services.
10.  **Naming fields for the API instead of the editor:** using terse names like "desc" or "img\_alt" as Display Names forces editors to decode developer shorthand. Always write Display Names in plain language that describes what the editor should enter.
11.  **Skipping help text entirely:** developers assume editors understand the content model. They do not. Every field without help text is a field where editors must guess or ask.
12.  **Making every field mandatory on the first iteration:** developers who have not seen real content overestimate what is required. Start with only structurally essential fields as mandatory and tighten after observing real editorial usage.
13.  **Treating content type design as a one-time task:** content types designed before editors start working almost always need revision. Plan for iteration and build a feedback loop into your project.
14.  Relying on external documentation instead of in-context help text: a Confluence page with content type docs is better than nothing, but it decays within months. Put essential guidance inside the content type itself.
15.  Skipping preview integration because it is "not a priority": Live Preview is the single most effective tool for reducing editor errors and support requests. Implementing it early saves more time than almost any other developer investment.

## Notes

Use this space for recording notes, script drafts, or post-production feedback.

#### Key takeaways

- Connect **Video Production Plan : Video 2 — Headless Foundations and Designing for Editors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

## Supplement for indexing

### Content summary

Video Production Plan : Video 2 — Headless Foundations and Designing for Editors. Video 2 — Headless Foundations and Designing for Editors Attribute Details Course 1 (Foundations) Covers Lessons 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.2.1, 1.2.2, 1.2.3 Priority Core Length 15-20 min Format Slides/diagrams + Contentstack UI walkthrough + good vs bad content type comparison Status Not started Why This Video Matters Establishes the mental model that everything else depends on. If learners don't understand headless boundaries and the editor-developer relationship, every later topic is harder. Outline 1. What headless really means: the CMS does not own rendering — developers own framework, hosting, and rendering strategy 2. Compare monolithic (WordPress/Drupal renders pages) vs headless

### Retrieval tags

- Video
- Production
- Plan
- Headless
- Foundations
- video-production-plan
- lesson 17
- Video Production Plan : Video 2 — Headless Foundations and Designing for Editors
- video-production-plan lesson

### Indexing notes

Index this lesson as a primary chunk tagged with lesson_id "17" and topics: [Video, Production, Plan, Video, Headless, Foundations].
Parent course slug: video-production-plan. Use asset_references URLs as thumbnail hints in search results when present.
Never surface LMS quiz content or assessment answers from this file.

### Asset references

_No image or video thumbnail URLs were extracted._

### External links

| Label | URL |
| --- | --- |
| Contentstack Academy home | `https://www.contentstack.com/academy/` |
| Training instance setup | `https://www.contentstack.com/academy/training-instance` |
| Academy playground (GitHub) | `https://github.com/contentstack/contentstack-academy-playground` |
| Contentstack documentation | `https://www.contentstack.com/docs/` |
