MastriaDocs

Home & catalogs

The academy home is a curated shelf that organizes itself as your course list grows — and lets you take the wheel when you want to. Catalogs and learning paths are the two ways to group courses on top of it: a catalog promises a destination worth browsing (courses and paths under one name, with its own page), a path promises an order and a finish line. All of it lives under Admin → Home, Admin → Catalogs, and Admin → Learning paths.

Important

One rule holds everywhere: who can see a course is decided on the course (its visibility and account access), never on a page. The home, every catalog, every path, and search show a viewer only what that viewer could already open — so there is no second place where a permission can be set, forgotten, or contradict the first.

The academy home

The academy home is a curated shelf, not a database dump: your course order (Admin → Home → Course order), one featured course, and cards built from each course's course-card settings. As the shelf grows, browse mechanics switch themselves on — there's nothing to configure:

  • Topic chips sit above the All courses grid (they go with it if you take the grid row off a customized home) and appear once two or more courses share a tag — a chip that leads to one card would be noise. Each chip opens the All courses page with that tag ticked, and reads the tag's name from Admin → Course tags ("Data engineering" rather than data-engineering). If more than twelve tags earn chips, the ten most-shared stay in the row and the rest tuck behind More topics: chips stay a glance, never a wall. All courses opens the page with nothing ticked.
  • With labs is a built-in chip that opens All courses filtered to courses with runnable labs. It shows once at least two courses have labs, and at least one doesn't — a filter that matches everything filters nothing. Hiding a filter group (Course tags) also takes its chips off the home, since they could no longer filter.
  • Search lives in the header of every academy page: click the search box next to your avatar, or press ⌘K (or /). A dialog opens, arrow keys move through the results, and Enter opens the selected course, path, or catalog. It matches titles, descriptions, tags (as typed and by the name set in Course tags), and the facts shown on each card (level, duration, "N runnable labs") — deliberately never lesson bodies, so results are always courses, not fragments. Every word you type must match somewhere ("sql window" finds the course that is both), and search always sweeps every published course.
  • From twenty published courses, the unfiltered automatic home reorganizes itself into curated topic rows — your most-shared tags, three cards each, with a View all N link into All courses filtered by the tag — above the full All courses grid, which never paginates and never shrinks. Every row of course cards lines up with that grid: three across on a wide screen, the same card width throughout.

Signed-in learners also get a Continue learning strip and progress on every card they've touched — see Progress & tracking.

All courses and the filter sidebar

All courses (/courses on your academy) lists every course a learner may see, in your course order, with a filter sidebar beside the cards. Nobody keeps it up to date: it's built from the same rules as the home grid — published and listed courses, a learner's account-only courses, coming-soon teasers — so a course appears there the moment it's published, and hidden or unlisted courses never do. Link to it from your header (Admin → Brand → Header links, /courses), as many vendor academies do with a "Courses" or "Modules" item.

  • The sidebar's groups are Level, Hands-on (courses with runnable labs), Type, Your progress, and the groups of tags you set up in Admin → Course tags — see Course tags & filters. A group shows only when it splits the page: two options with courses, or one option only some courses have.
  • Ticks inside a group widen (Beginner or Intermediate); ticks across groups narrow (Intermediate and SQL). Every option shows how many courses it would bring back, and an option that would leave nothing can't be ticked. If a search or a shared link still leaves nothing, the page says so, with buttons to clear either.
  • What's ticked is listed above the cards with an × on each, beside the result count ("7 courses") and Clear all. A search box narrows the same cards by what they show (title, description, level, duration, tags) as you type.
  • The address bar holds the view (/courses?tag=sql&level=beginner), so a filtered page can be shared, and Back from a course returns to it.
  • On a phone, a Filters button (with the number ticked) opens the groups full screen, ending in "Show 7 courses".

All learning paths and All catalogs

Two more pages list everything of one kind, built from the same rules as the home, so nobody keeps them up to date:

  • All learning paths (/paths) shows every published path with at least two courses the viewer can see, in your Learning paths order.
  • All catalogs (/catalogs) shows every published catalog with at least one member the viewer can see, sorted by title.

Drafts, thin paths, and anything restricted to another account never appear. With nothing to list, each page says so and points to All courses (it never answers 404, so a header link to it is always safe). Link them from Admin → Brand → Header links (/paths, /catalogs). A path's page leads back to All learning paths, and a catalog's page to All catalogs.

The New badge

Courses first published within the last 30 days carry a New chip, and when there are two or more, a New row fronts them on the home. Two things make the badge worth a learner's trust:

  • The clock is the course's first publish, stamped once and never reset. Unpublishing and republishing doesn't refresh it, editing doesn't, and a duplicated course starts its own clock. There is no action that makes an old course look new — the same honesty rule as the derived "Updated" stamp on the course page.
  • When more than half your published courses are inside the window (a brand-new academy, a launch wave), nothing is badged. "New" marks recent additions to an established shelf; an academy where everything is new has nothing to point at yet. The badges arrive on their own as your academy ages.

Composing the home yourself

When you want to decide how the home reads instead, Admin → Home turns the automatic layout into rows you arrange. That page owns the home's presentation in two tabs — Sections (the rows and the featured course) and Course order — while catalogs and learning paths sit beside it in the sidebar. Customize home starts from exactly what the automatic home shows today — never a blank page — and from there you can reorder rows, rename them, cap how many cards each shows, remove them, and add more.

The rows

  • Catalog rows front a catalog's courses with a View all N link into its browse page (where its learning paths sit too); when the row already shows every card, the link reads Open catalog. Topic rows do the same for a tag (View topic).
  • Featured course, Learning paths, and New courses are the automatic rows as movable pieces. The Featured course row is one course's own card, shown large; a Banner is your own words and a button. On a customized home you pick the featured course inside the Featured course row (Edit); the automatic home keeps a Featured course card on the Sections tab instead.
  • Continue learning (the personal strip signed-in learners see when they have a course to resume) and All courses (the full grid) are rows too — move them, rename them, or take them off.
  • Announcements are a typed callout: text, an optional link, and an optional last-day-shown date after which it removes itself.
  • Banner, Cards and HTML block are content rows you write yourself (next section) — what you'd build as a hero or a promo on another platform, with the markup kept by us and styled by you from Custom CSS.

These three rows carry content of your own instead of mounting a group of courses. Each is edited on its row and shows nothing until you save it (the row says "Not set up yet"). A button on a banner or a card goes to a course, a learning path, a catalog, or a web address; a course, path or catalog button renders only while that thing is live and visible to the viewer — a button never leads to a 404, and the editor chips a row whose button is currently hidden for a signed-out visitor.

  • Banner — a title, text, a button, an image (left or right) and an optional person (portrait, name, role). Full width, on a card. The shape of "New: the getting-started course — Start learning" with the instructor beside it.
  • Cards — an optional heading and two to four tiles, each with an icon (from a fixed list) or an image, a title, a subtitle, text and a button with a quiet outline. The shape of "New here? / Already a customer?".
  • HTML block — your own markup, up to 32 KB, for anything the typed rows don't cover. It is cleaned on save, and the save tells you exactly what it removed ("Removed: 1 <script>, onclick on 2 elements").

Note

What an HTML block keeps: headings, text, lists, tables, figures, sections and spans; images from https:// addresses; links to https://, mailto: or a site path (a link that opens a new tab gets rel="noopener noreferrer"); class on anything; and inline style that follows the custom-CSS rules (no url() but https or data, no expression()). What never stays: scripts, style elements, frames, embeds, forms and inputs, SVG, event handlers, id and name (nothing of yours can shadow something of ours), javascript: or http:// links. A block with nothing left after cleaning is refused. Scripts stay out for the same reason they stay out of the stylesheet: a script runs as the learner and could read or change what the page records.

The three rows carry stable hooks for your stylesheet (banner, banner-body, banner-media, banner-person, tiles, tile, html-block — see Custom CSS), so the look is yours and the markup keeps working through every release.

Editing the home

Every row keeps itself honest: it updates live from what it points at, and a row with too little to show for a given viewer simply doesn't render. The editor says why for each row that's currently hiding — judged for a signed-out visitor, since account-restricted courses can only add cards for their accounts — and links to where it's fixed. Rows that are only waiting their turn read as quiet words: "Shows once a course is featured", "Shows once a path is published", "Shows once 2 courses are new", "Shows once a course is published" — or, while more than half your courses are new, "Hidden while most courses are new" (a young academy reads as a launch, not additions). Nothing is wrong with them, and they start showing on their own as your academy grows — that's why a brand-new academy's customized home keeps them. A row you pointed at something that now hides it (a draft catalog, too few visible courses on a topic, cards or a button aimed at something unpublished, blank or expired text) is chipped in amber.

Every row says what it shows. Under each row's title a quiet line names its source — "Catalog: Getting started", "Tag: SQL", a banner's or card's button target ("Button → Learning path: Analytics Engineer"), an announcement's link — so a renamed heading never hides what the row really mounts. Open a row's editor with its title or Edit.

What applies when. Reordering, adding, pausing, and removing rows apply to the live home at once — after a move, the row says "Moved from 1 to 2." with an Undo. A row's text fields (heading, announcement text, card count) apply when you press Save on that row, and the row says "unsaved changes" until you do; leaving the page is blocked while any row has unsaved text.

  • Open the home as, at the top of the page, opens the live home in a new tab as a signed-out visitor or as a learner at an account — type to find the account. Only accounts that hold access to a restricted course are offered, because only they can see a different home; when no course is restricted, there's nothing to choose — the button opens the visitor's home, which every account sees.
  • Add a section lists every kind of row with one sentence each, grouped by what it shows: your own content (Banner, Cards, Announcement, HTML block), courses and learning paths (Featured course, catalog and topic rows, New courses, Learning paths, All courses), and signed-in learners (Continue learning). A row the home can hold only once reads "On the home" when it's there.
  • Position — pick a slot from the row's position control (1 is the top) instead of clicking arrows. A new row opens for editing where you'd expect it: banners, announcements, the Continue learning strip and the Featured course at the top, every other row just above the All courses grid (or at the bottom when the home has no grid).
  • Pause — a paused row dims in the list, keeps every setting, renders nothing, and doesn't count toward the twelve-section cap; expired announcements don't count either. Seasonal rows park instead of being rebuilt.
  • Change the source — a catalog or topic row can switch to another catalog or tag in place; its position and settings stay.
  • Skip cards already shown above — an option on the All courses row: the grid leaves out cards a row above it already fronts, which is what the automatic home does with its hero and New cards. Customize home sets it to match the layout it started from, so the fork renders exactly what you saw.
  • Reset to automatic brings the self-arming home back whenever you want it, and keeps your previous arrangement in this browser tab: an Undo reset button brings it back (rows whose catalog or tag no longer exists are dropped).

Tip

Removing the All courses row is allowed, and the editor tells you what it costs: it counts the published courses no remaining row carries. Those courses are still one search away (the header search always sweeps every published course), and their pages, links, paths, and catalogs keep working — curation decides what the home shows, never what exists.

Customizing means the automatic layout stops evolving on its own; your arrangement is yours until you reset it.

The Course order tab sets the order courses appear in — the home grid, topic rows, and search all follow it — with ↑↓ arrows that apply at once, judged as a signed-out visitor sees the home (courses that visitor can't see sit in their own list, without arrows). Below it, Not in any catalog, learning path, or featured spot lists the published courses nothing curated points at yet — learners still reach them through search and the All courses row — each linking to its settings, where the Catalogs and Learning paths cards place it.

The home is the one composed page. A catalog's page is a shelf — title, description, image, and its cards in the order you chose — on purpose: one level of curation plus a composed home covers what nested catalog pages promise elsewhere, without the "which page am I on" taxonomy learners complain about.

Catalogs

A catalog is a curated destination inside your academy with its own browse page: "Getting started", "For platform engineers", "Certification prep". It holds courses and learning paths under one name. Where a path promises an order and a finish line (numbered syllabus, progress, Continue), a catalog promises a shelf — a named set of cards worth browsing together.

Create one from Admin → Catalogs (New catalog, name it), stock it with the same searchable picker for courses and for learning paths, and publish from one item up. The editor reads in that order, top to bottom: the courses and learning paths in the catalog, Publish, On the home, then the details (title, description, image) with their own Save details, and Delete last. Every save, add, publish, and delete answers in words right where you acted — including refusals ("give the catalog a name", an image URL that isn't https, a delete the home won't allow).

  • The editor says what visitors actually see. Under the title: "Visitors see 2 of 3 courses and 1 of 1 learning path", judged for a signed-out visitor (account-restricted courses add cards only for their accounts). A published catalog nothing is visible in yet says so — its page answers 404 for learners until a member becomes visible — and a draft says it's a draft. Preview page opens the catalog page as staff at any time, with a banner naming why learners can't see it yet; once it's live for everyone the link reads View page and the shareable URL sits beside it with a copy button.
  • Getting onto the home is one click. Catalog rows exist only on a customized home, so publishing a catalog changes nothing on the home by itself. The editor's On the home card says where it stands — "Row 3 of 6 on the home", "Not on the home", or "Not on the home (automatic layout)" — and offers Add a row to the home. On an automatic home the button reads Customize the home and add a row: it customizes first (starting from today's layout), then adds this catalog's row just above the All courses grid and opens it under Home. A mounted row links to Arrange under Home; a row that currently hides (a draft catalog, fewer than two visible courses) carries the same chip the Home workspace shows.
  • Membership is editable from both sides. The catalog editor adds courses and paths to a catalog; a course's own settings page has a Catalogs card that places it in every catalog it belongs to in one Save, and a path's editor has the same card — so publishing something new never means a tour of every catalog. In the editor each member links to its own settings and says where else it appears ("Also in 2 other catalogs").
  • Being on no catalog costs nothing. The home grid, All courses, search, and topic rows list every published course regardless — catalogs curate, they never gate reachability.
  • Big catalogs get the filter sidebar. From eight cards, a catalog page shows the same sidebar and search box as All courses, over just the courses and paths you picked. Paths match a tag when one of their courses carries it, and the Type group (courses or learning paths) appears when the catalog holds both. Smaller catalogs stay a plain grid.
  • Order can maintain itself. Each catalog picks its order beside its course list, and the choice applies at once: your manual order, newest first (by each course's first publish or each path's publish, with coming-soon teasers up front), or title A–Z. The editor previews exactly what learners will see. On the catalog page, learning paths sit in their own block above the course cards.
  • The image heads the catalog page beside the title, and fronts the catalog's thumbnail in search results. Home rows show the courses' own cards. Empty is fine.
  • A catalog has no audience of its own. Members render through the same rules as everywhere else — drafts, hidden, unlisted, and account-restricted courses aren't part of that viewer's shelf, a path shows only when its own card would show on the home, and the editor chips any member in one of those states. To make a catalog "for one customer", restrict its courses to that account: every surface adjusts, and nothing can leak. A coming-soon tease, though, is a real card — it shows on the shelf too.
  • Unpublish and delete name their consequences before you confirm. Unpublishing stops the page, drops the home row, and takes it out of search; publish again any time. Deleting removes the catalog and its home row; courses, paths, progress, and records are untouched — and the Catalogs page offers Undo right after, which brings back the catalog as it was — same page address, and any banner or card button that pointed at it works again — and its home row where it stood (just above the row that followed it), with its heading, card count, and pause. If the home has gone back to the automatic layout or is at its section cap by then, the catalog still returns and the message says why its row didn't. Undo on the Learning paths page brings a path back the same way (last in the order).

The Catalogs page finds and manages: search by name or description, sort by Name, Recently updated, or Created, filter Published / Draft, 25 a page. Each row shows the status, whether it's on the home, the stock ("3 courses, 1 path"), what a visitor sees, the last edit, and the description; its Actions menu opens the editor, views or previews the page, adds a home row, publishes or unpublishes, and deletes with undo. Published catalogs join search ranked with paths, above courses, and each gets its shareable /catalogs/… page. On a home row that already shows every card, the corner link reads Open catalog instead of promising more.

Learning paths

A learning path is a named, ordered set of courses with its own card and landing page: "Analytics Engineer", "Certification prep", "Onboarding week one". Create one from Admin → Learning paths (New learning path, name it), then pick and order its courses with the same searchable picker the settings page uses — or add a course from its own settings page, where a Learning paths card lists every path (a new membership joins at the end; the path editor owns the order). Publishing needs at least two courses: a one-course path is just a course. The editor leads with the courses, then Publish, On the home, the details (title, description, certificate, catalogs — one Save), and Delete last. Every save, add, publish, and delete answers in words right where you acted.

Getting a path onto the home. On the automatic home a published path with two visible courses shows in the Learning paths row by itself. A customized home needs a Learning paths row: when it has none, the path editor's On the home card says so ("Published, but the home has no Learning paths row") and offers Add a Learning paths row to the home — or Resume the Learning paths row when it's paused — then opens that row under Home.

What paths deliberately are — and aren't:

  • A path guides, it never gates. Learners can open any course in any order; the path's numbered syllabus and its Continue path button (always the first not-yet-completed course, in your order) do the steering. There are no prerequisites to enforce and no drip schedule — forced sequence is where "rigid path" complaints come from on other platforms, and honest completion data beats coerced ordering.
  • The path stays in view. A course opened from a path (or that sits in one) says so under its title — "Step 2 of 4 in Analytics Engineer" — and its completion card points at the next course in the path instead of the authored successor; the last step points back at the path. The home's Continue learning strip names the path too.
  • The syllabus is steps. The current step is marked "Up next" (or "In progress") and carries the verb; completed steps get a check; the facts line adds the path's total length (4 courses, 2 runnable labs, ~5.5 h) once every course has a duration.
  • Progress is derived, never enrolled. A path shows "1 of 4 courses completed", computed live from the member courses' own progress, and its bar is lesson-weighted — five lessons into a seven-lesson first course is not 0% of the path. There's nothing to enroll in, so there's nothing to get out of sync, and deleting a path deletes pointers, never content or learner records.
  • A path can never show a course its viewer couldn't see. Members render only when the learner's own home would show them: drafts, hidden, unlisted, and account-restricted courses simply aren't part of that learner's view of the path — and the path editor chips any member in one of those states. Setting a course to Unlisted or Hidden in its settings warns you which paths it sits in.
  • Paths leave a record. A learner's profile, printable training history, and admin learner page list every path they walk with its progress and certificate; Admin → Course analytics shows each path's funnel — how many learners started it, finished it, and how far the starters got at each step.

A path can also award a learning path certificate — switch it on in the path editor. It is earned when every course in the path is complete and every certificate those courses award is held, derived exactly like path progress; see Certificates.

The Learning paths page finds and manages: search by name or description, sort by Home order, Name, or Recently updated, filter Published / Draft, 25 a page. The ↑↓ arrows (under Home order) are the order of the home's Learning paths row and of every catalog's paths block. Each row shows the status, its place on the home, its length, what a signed-out visitor sees, the last edit, and the description; the Actions menu opens the editor, views or previews the page, publishes or unpublishes, and deletes with undo (a path that issued certificates can't be deleted — unpublish it instead). In the editor, details, the certificate, and the catalogs apply in one Save; the header says what visitors see and links View page only when the page is live, else Preview page — staff can open a draft or thin path with a banner naming why learners can't. Path cards carry a face composed from the first member courses' images; in search results paths rank above courses.