Appmint Content Studio Part 2: Interactive Courses, Forms and Gated Content
Earlier tutorials and recordings (3)
These recordings may show an earlier interface or an older cut. Follow the current written instructions below.
Written guide
Overview
Appmint Content Studio supports an article as well as a structured document, course or eBook. We will create readable content with media, organize pages and then use the course controls for enrollment and review. The publishing check is a real reader view: saving in the editor is only one part of the result.
Start with the right content editor
In Studio Manager, open DAM → Content Studio. The dashboard is titled Content Manager, with New post and Multi-page document as separate creation paths. Use a single post for one article; use a multi-page document when readers need ordered pages, such as documentation, a course or an eBook. Do not use the post-progress record type to author an article.

Create an article draft: Select New post → Post. Enter a descriptive title in Title, then author the body in Content. The editor offers Visual, HTML, Split and Preview. Visual is the normal writing route; HTML is useful when you already have formatted markup. Allow the editor to finish loading before typing. The controls above the form are Save Draft and Publish: choose Save Draft while preparing and reviewing the content.
Check the result: Return to the dashboard and reopen the saved title. Confirm the title and body survived, and that its state is Draft before continuing. Merely entering a title does not save the record.



Actual local result: Content Studio rehearsal — welcome guide was saved as an unpublished article, returned to the dashboard, and reopened. Both its title and HTML body matched the saved content.
Multi-page entry: Choose Multi-page document → Post in the current training organization. The menu is driven by the organization’s collection variants; here it offered Post and Post Progress, rather than a separate Documentation/Course/eBook creation menu. Do not invent menu choices that are not present.

Choose Settings for the document’s overall Title, Slug and Summary. Choose Add first page, then Content for Page Title and Add a page summary…. These fields apply to different levels. The left Contents panel identifies the selected page.


Actual local result: The saved root Title Content Studio rehearsal — media guide, Summary, page title Choose reusable media and added page body all survived Save Draft → Dashboard → reopen. The single article remained intact when checked again. After editing Settings, reopen the document to check that both document and page fields are retained.
Follow the save all the way through: Wait until saving finishes before selecting Dashboard. Open the exact title again, check Settings for the overall name, then Content for the page title/body. A displayed input value alone does not prove persistence.
Limitations: The remaining media, course enrollment, review and publishing chapters are documented scope awaiting complete live rehearsal. They are not claims of completed reader outcomes.
1. Understand the content and page levels
Why this matters
Multi-page content has an overall title and individual page titles. Editing the current page should not accidentally rename the entire course or book.
Follow these steps
Open the relevant Content Studio content type. Create a new draft and enter its title and summary. For multi-page content inspect Settings for the root title and use the page navigation to select a page. Enter Page Title and its page summary. Return between pages to confirm which item is active. Save the draft and reopen it before adding more material.
Check the result:
The saved record and its selected page retain distinct titles after reopening.
2. Build a readable page with media
Why this matters
The editor’s Add menu inserts content into the current page. Media can come from File Manager; video can also use a YouTube or Vimeo link. A visible editor embed still needs a reader playback test.
Follow these steps
- Open the saved document, select its page in Contents, and choose Visual. Use the control titled Insert beside the visual editor. Its menu includes layouts, text, media, questions/forms and other items. The current control is labelled Insert, not a permanent Add button.

- Choose Image / gallery, then Choose from File Manager. Open the folder containing the image. Check only the intended file. The lower status line confirms 1 file(s) selected.
- Click Use selected files (the checkmark) in File Manager’s top toolbar to return the selection. Hovering the checkmark shows Use selected files; the adjacent number opens Review selected files. The X is Clear selection. Do not confuse the Delete action with confirmation.

- The image is inserted directly; there is no separate Add to page step for this image picker. Inspect it inside the visual editor, then select Save Draft and wait for saving to finish.

- Select the document’s Preview control, whose tooltip is Open on the site, as a reader sees it. This differs from the editor’s own Preview tab. A new tab opens the site reader. On the document cover, select Start to open its first page.


Observed result: The private PNG loaded in both the visual editor and the site’s draft reader. It was selected from the existing library, not uploaded again. The inserted source uses a signed URL; this proves current retrieval, not permanent link availability. Before publishing long-lived content, verify the asset access/lifetime appropriate to that audience.
Important preview boundary: The reader banner says every page is open and nothing you do here is saved. Use this mode to check appearance/navigation/media. It cannot prove learner prerequisites, recorded progress, submitted work or enrollment permissions.
Other media to check separately: Insert → Video supports File Manager or a YouTube/Vimeo link and an Add to page action. Audio and PDF use their own file pickers; PDF can offer an I’ve read it completion control. Button/link asks for Text and Link before Add to page. These alternatives remain pending playback/submission checks; a working image does not establish that all media types work.
Check the result:
The page displays the intended text and playable/openable media; the button reaches the intended destination.
3. Use page starters and collection forms
Why this matters
A starter provides page structure; it does not erase an already populated page in the inspected implementation. A collection form uses the collection’s current fields.
Follow these steps
Choose Start this page as… and select the intended starter. Supply the required video, audio or PDF when requested. On a populated rehearsal page inspect how the starter is appended. For a form choose Form from a collection, search and select the correct Collection and enter Button text. Choose Add to page, save and preview. Submit a controlled example in the reader view and inspect the intended collection record before calling the form operational.
Check the result:
The inserted form displays the expected fields and its test response reaches the intended collection, subject to live verification.
4. Create questions and scoreable choices
Why this matters
An open question captures a written answer. Multiple choice can be a scored question or an ungraded survey. Correct answers are stored separately from the page HTML by this editor.
Follow these steps
Choose Question, enter the prompt and Add to page. Add Multiple choice with at least two filled options. Leave Has a right answer enabled for the quiz and mark the correct option; use Select all that apply only when multiple answers are intended. Add option or remove an unwanted option as needed. For a survey turn Has a right answer off. Save and test submission as a learner, not only in editor preview.
Check the result:
The question renders with the intended choices, and a learner submission produces the expected response or score after live testing.
5. Organize chapters and learning conditions
Why this matters
Chapters group pages. Conditions on a chapter apply to everything inside it, so a condition at the wrong level can block more material than intended.
Follow these steps
Open course settings and Add chapter. Add existing pages through Add a page to the outline. Move items with Move up and Move down. Inspect the warning for pages not in the outline. Add a condition selecting the prerequisite item, check and any minimum required by that check. Add reviewers to a page requiring review. Save and inspect the sequence as a learner. Remove a rehearsal outline item only after reading that the page itself stays.
Check the result:
The course outline has the intended pages and order. Gating is proven by learner behavior rather than the presence of a saved condition.
6. Enroll people and review submitted work
Why this matters
A course must exist as a saved record before people can be enrolled. The reviewer decides the submitted item, not the entire course indiscriminately.
Follow these steps
Save the course. In Enroll people enter controlled learner email addresses and choose Enroll. Wait for confirmation and reload the roster. Have one controlled learner complete a reviewable item. Open the review queue, identify that learner and item, add a note and choose the approval or changes decision. Refresh the queue and return to the learner’s view to inspect the resulting state.
Check the result:
Roster and review state persist after refresh, and the learner sees the corresponding outcome.
7. Publish and check the actual reader experience
Why this matters
Draft, Published and Archived are different states. The publish control saves before publication in this implementation, but reader access, media and course conditions still need checking.
Follow these steps
Review Settings and categorization, then use the publish control for the intended record. Open its actual reader destination. Test navigation, media, links and forms. For a course also test a new learner, a learner with a completed prerequisite and an item sent back for changes. Make one small edit, save/publish through the current control and verify it in the reader destination.
Check the result:
The intended content version is visible to its intended audience with working navigation and the verified course behaviors.
8. Edit the content metadata and presentation
Why this matters
Settings describe the whole content item. The page editor describes the current page. Keep the overall title, URL identity and reader presentation deliberate so the content is recognizable wherever it appears.
Follow these steps
Open Settings → Post Settings. Set Title, Slug and Summary. The standard Slug accepts letters, numbers, underscores and hyphens, has a 3–100 character range, is normalized and is defined as unique. Inspect the resulting value. Choose Cover Image and inspect the stored file. Use Foreword for a preamble before the first page rather than accidentally placing it inside chapter one. Set Author name, bio, email and website where intended. Add Media attachments only when they belong to this content. Template selects a ViewComponent-backed template; inspect the actual list and reader output rather than assuming all organizations have the same entries.
Save, reopen Settings and inspect each changed value. If the organization uses a custom post subschema, its collection schema controls additional fields; distinguish that custom form from the standard fields taught here.
Check the result: Metadata persists and the actual reader/listing presentation uses the intended title, summary and cover where supported by its template.
9. Categorization, sharing and reader access
Why this matters
Categories help organize the item; access settings decide who can open it. These are different controls. An email-address prompt is not equivalent to proving ownership of an email account.
Follow these steps
Open Categorization. Select Categories in the tree and Tags in the combo selector. Choose the sharing, commenting, rating and related-content options deliberately, and choose associated Images as needed. Save and inspect the reader because a renderer must support those controls to display them.
Return to Settings and the access fields. Choose open for the public rehearsal, code for a shared access code, or participants for a named list. For a participants example add each controlled participant’s email, name, accessCode and role; invitedAt and inviteCount are read-only observations. Choose Authentication Type deliberately: none asks nothing; email collects an address; magic-link and code require mail delivery; password requires the sign-in path. Set Start Date and End Date only if time-limited availability is intended. Choose Invitation Template from the available message templates. Save, then test an allowed reader and a reader without access in separate sessions. Mail-dependent flows require the configured delivery service and a controlled inbox; editing the template does not prove an invitation was sent.
Check the result: Access follows the saved rule on the actual reader endpoint. Capture denial and successful access as separate outcomes; do not infer enforcement from the settings form.
10. Author with AI without losing the intended scope
Why this matters
Content Studio’s AI bar can work on the current page or a selected passage. Expand, Rephrase, Shorten and Rewrite are focused editing actions; the active-page and selection indicators show what the request refers to.
Follow these steps
Open the page to edit and inspect the AI bar’s active page indicator. Select a short paragraph and inspect the selection chip. Choose Shorten, or enter a precise instruction such as Shorten this selected paragraph while preserving the product names and steps. Send with Enter; use Shift-Enter for a new line. Wait for the response and compare the actual edited content against the original intention. The selection is cleared after sending, so select again before another focused edit. Use Clear selection when the next request should target the page rather than that passage.
Demonstrate Expand, Rephrase and Rewrite on separate short disposable examples. For a larger task enter Add a chapter on followed by the intended scope; inspect the resulting pages and outline. For fill metadata, inspect Settings field by field rather than accepting generated facts. Use Stop generating to end an unwanted request, then inspect changes already applied. Command history recalls a prior request; check the active page before resending. Save only after reviewing content, then reopen and test the reader version.
Check the result: The correct passage/page changes, metadata is reviewed, and saved content matches the accepted result. AI availability and successful mutations remain live-provider checks; no generation occurred during script writing.
11. HTML, visual editing and learner presentation alternatives
Why this matters
The page editor offers Visual, HTML, Split and Preview views of the same content. Course layout controls are a separate choice about how the learner navigates that content.
Follow these steps
Switch from Visual to HTML on a disposable page. Make one small wording edit, return to Visual and inspect it. Use Split to compare markup and its editable rendering; use Preview for the page’s display. Test forms through the real reader because the visual editor can show collection placeholders rather than the final interactive form. When opening older BlockNote content, inspect the converted result; if conversion reports a failure, preserve the original instead of replacing it with an empty page.
In course settings choose Layout sidebar or steps. Compare Navigation sidebar, top or none in the real course reader. Set dueInDays only when a completion target is intended. In page conditions distinguish done, approved, score, watched and percent: score/watched/percent use a minimum, and a chapter condition applies to its contained pages. Check an actual learner record and blocked/unblocked item before claiming the condition works. Change one presentation setting at a time, save and reopen so the comparison has a clear cause.
Check the result: The page content persists across editing views and the reader navigation matches the saved course presentation. Conversion, gating and authentication behavior require their own live checks.
Troubleshooting, recovery and alternatives
If the operation fails, keep the error text and inspect the saved state before retrying. A confirmation message is not enough: reopen the item or reader/output destination. Do not repeat a create action while the original request is pending. Use the smallest disposable example to distinguish a missing permission, unavailable backend or incomplete implementation from a content mistake. Keep explanations of prerequisites separate from the continuous task demonstration.
Next steps
You now have the module’s main path and the checks that tell you whether the result is ready to use. Keep the editable source, verify the output where your audience will see it, and return to the relevant chapter when you need an alternative.
Limitations and checks
Current source read covers the Add menu, modern form, navigation and course controls. Standard metadata, access, categorization, HTML views and AI-authoring controls are covered from the current UI and SDK source. Custom subschema fields and actual reader/provider behavior require deployment-specific live verification. Course enrollment, scoring, watched-percent conditions and review persistence were not executed in this pass. A source UI description of tracking is not a measured playback result. No live publish or enrollment was performed.
Appmint Categories — supporting guide
**Course written guide draft · Current source and schema reviewed 2 October 2026 **
Opening and overview
Why this matters “Categories gives you a reusable hierarchy for organizing content. A category record holds the tree; selecting a node opens that node's properties. We'll create a tree, add and arrange its children, save the structure and reopen it to check that the changes persisted.”
Visual: Depict a named parent with two related children, then move to the actual tree editor. Use one tree throughout. A category hierarchy is not itself a navigation menu or a published product filter; show those consuming features only when their actual binding is configured.
1. Create the category record
Why this matters “Name is the stable identifier. Title is the readable label. The schema also provides a description and image. Children are edited through the tree rather than as a raw array field.”
Follow these steps
Open DAM → Categories. On narrow screens, open the Categories panel. Choose New Category, enter name learning_topics, title Learning topics, a description and an owned image if needed. Complete the schema form's save action. Return to Category List, select the saved category and show the tree.
Result: The named record is selected and its editable tree is visible. The editor supplies an initial New Node for an empty tree; it is a starter to edit, not evidence that a meaningful child was already created.
Name rules: The current schema specifies a unique 3–50 character name with letters, numbers, underscores and dashes and URI transformation. Avoid spaces or punctuation in the technical name. Use an available name rather than overwriting an unrelated record after a uniqueness error.
2. Add and edit child nodes
Concept illustration: A category record and its selected child are different editing scopes. Sidebar Save persists the tree. Reopen the category and inspect both children. This is not an application screenshot or evidence that the action has run.
Keep the record, tree and selected node separate
flowchart TD
R["Category record: learning_topics"] --> T["Tree root: Learning topics"]
T --> A["Child: Getting started"]
T --> B["Child: Advanced setup"]
A --> P["Select node → Properties edits this node"]
B --> P
P --> S["Sidebar Save → persist the whole tree"]Concept diagram, not a screenshot. It explains which part of the category the controls change.
Use a two-child example first. Select Getting started, change its description, then select Advanced setup and confirm that its fields are different. Save the complete tree, leave the editor and reopen learning_topics. Expand its root and check both children and their order. This catches editing the wrong selected node and forgetting the whole-tree save before you attach categories to real content.
If adding a child appears to replace another, do not continue entering the whole hierarchy. Reopen the last saved tree and compare the selected parent and insertion position. The current node-property handler preserves the selected node's existing children; a missing branch after reopening needs investigation rather than recreating all records.
Why this matters “The tree shows structure; Properties edits the selected node. Keep the selected node and its position visible before changing its title.”
Follow these steps
Select the starter node. In Properties, enter a stable child name such as getting_started, title Getting started, and its description/image. Use the tree's add control to create another child, select it and give it a distinct name/title such as advanced_setup / Advanced setup. Expand and collapse the parent to inspect its children. Use the category sidebar Save after the coherent edit.
The current node editor updates the working category immediately and hides its own Save buttons. The sidebar Save persists the complete category. Demonstrate that exact save destination instead of inventing a Save button within Properties.
Result: Reopen the category and inspect both child names and their hierarchy. A changed label before Save proves an edit buffer, not persistence.
3. Reorder and remove deliberately
Why this matters “Reordering changes placement. Removing a child changes the tree itself. Read the selected branch before acting so you do not remove the parent while intending to remove one child.”
Follow these steps Drag a non-root node to a before/after position, using the insertion indicator, then Save. Reopen and confirm the order. Add a temporary child, use its delete control, complete any confirmation actually shown by that shared control, Save, and reopen to show only the intended children remain. Do not promise that the root can be dragged; the current tree ignores root drag operations.
4. Maintain the category record and recover the view
Use Edit category on the Category List card for the record's base fields. Return to the tree for child properties. Use Refresh list to reload the records. If No Category Node Selected appears in Properties, select the intended node in the tree; it is not a reason to recreate the category.
On a narrow display, demonstrate opening Categories and Close categories without losing the selected record. If a loading error appears, the sidebar supplies an inline failure state and retry; show its actual result. An empty list and a failed request should not be narrated as the same condition.
Use Delete category only for a separate disposable record after inspecting dependencies. The current list handler calls the delete route directly; do not script a confirmation dialog unless the live shared behavior actually supplies one. Removing the category does not prove that every content reference was migrated or removed.
5. Use the tree in a consuming feature
Why this matters “A saved hierarchy is ready to be referenced. The content or website feature that uses it must select the intended category and decide how it appears to readers.”
Demonstration requirement: In the intended content/product form, inspect the actual category picker and select the saved category or child it supports. Save and reopen that consuming record. Then inspect the corresponding reader/filter experience if configured. Do not substitute a different module's category schema or claim that creating this tree automatically adds public navigation. Exact consumer picker captions and hierarchy behavior remain a capture dependency; the core category editor procedure above is documented.
Why this matters “You have a saved category structure with deliberate names, editable children and a verified order. Keep that structure and its consuming records together when changing identifiers or removing branches.”
Limitations and checks
Schema read: . Core fields and save behavior are documented; exact live create/save/reorder/delete outcomes and a consuming feature's picker remain unverified. Video should preserve continuous actions with concise commentary, supported by a separately explained hierarchy overview.
Appmint Comments: browse and search — supporting guide
**Course written guide draft · Current module source reviewed 2 October 2026 **
Opening and scope
Why this matters “Comments brings responses from your content into one place so you can find a particular comment and inspect its context. This screen is currently a read-only table. We'll use it to locate a response and distinguish a matching record from an empty search or a loading problem.”
Visual: A real content item and its comment lead into the Comments table. Use the actual configured column names at capture time. Do not illustrate approve, reply, delete or moderation queues: the current module supplies no such row actions.
Before you start
Use an organization where you can read the intended content comments. Retain the known comment text and the original content identifier; two responses can contain the same words. The sidebar entry is singular Comment, while the opened page says Comments. This distinction helps locate the correct screen without looking for a nonexistent moderation area.
No matching comment-table screenshot was available for this pass. The procedure is checked against the mounted read-only component; its current column and search behavior still need a browser check with a real fixture.
Find a comment
Concept illustration: Comments is a read-only lookup, not a moderation workflow. Finding a row does not approve, hide or delete a comment. This is not an application screenshot or evidence that the action has run.
Before the demonstration: Prepare one non-sensitive comment whose distinctive wording and source content are known. Obtain it through the appropriate content experience, not through an invented Add Comment button on this read-only screen. If the source content does not currently support that route, keep fixture preparation as a production dependency rather than claim a visitor submitted it.
Why this matters “A search result helps you locate the record. Its text and source information let you confirm that it is the response you intended to inspect.”
Follow these steps Open DAM → Comment (the page heading is Comments). Let the table finish loading. Read the actual column headings and locate the known record. Use the table's visible search control with the distinctive phrase, inspect the matching row's text and its available content/user/time fields, then clear the search. Search for an intentionally nonexistent phrase and show the empty result, then clear it and return to the original record.
Result: The viewer sees the expected record disappear and return as the search changes. Do not narrate fields absent from the current schema.
Use the available table controls
Show sorting, filters or page navigation only where the actual read-only DataTableView exposes them on this build. For each visible control, choose a meaningful value and inspect the resulting rows. Treat the table's loaded result count and page boundaries as displayed; do not describe an unlimited complete history if pagination is active.
Why this matters “No matches and failed loading need different responses. Clear your search and filters first when a record seems missing. If the view reports a request error, use the displayed retry or reload route and preserve the error if it repeats.”
Keep these checks separate from the main search operation. Do not spend the main demonstration waiting over an unchanged table while explaining unrelated content publishing.
What this screen does not currently execute
The mounted CommentView sets readOnly: true and rowActions: []. It cannot be taught as a demonstrated moderation, deletion or reply workflow. An older app-directory description mentions moderation, but the mounted implementation is the evidence for this course's current scope. Use the underlying content experience for any separately verified reply/moderation operation; do not invent a button here.
Why this matters “Use Comments to locate and inspect responses across your content. Keep the original content identity with the result so a matching phrase is not mistaken for a different conversation.”
Limitations and checks
Exact shared-table column captions, search behavior, filters and pagination still need a current browser rehearsal. This module is read-only; editing and moderation actions are not available here.
