Categories and course discovery

Courses appear across GraphAcademy in different places: the homepage learning-path cards, category pages, and internal filters. Assigning the right categories ensures your course is discoverable and passes automated checks.

In this lesson, you will learn where categories are used, how they are structured, and what the category tests require.

Where categories are used

Categories control how courses are listed and filtered on the GraphAcademy website.

Homepage learning-path cards

The GraphAcademy homepage shows four learning-path cards. Each card corresponds to a category that is a child of the homepage parent (with an order). Courses that include one of these categories appear under that path:

  • In-depth Cypher (cypher) — Getting started with Neo4j, Cypher, modeling, and importing

  • Generative AI & GraphRAG (generative-ai) — LLMs, GraphRAG, and GenAI integrations

  • Graph Application Development (app-development) — Building applications with drivers and frameworks

  • Graph Data Science (graph-data-science) — Graph algorithms and GDS courses

To show your course on a homepage card, add the corresponding category slug to your course’s :categories: attribute. The optional number after the slug (e.g. cypher:2) controls the order of the course within that category.

Paths and personas

Two other parent categories drive course listing pages:

  • Paths (paths) — Curated progressions such as "Build a Neo4j-backed Application" and "Deploy Neo4j with Aura". Child categories (e.g. build-applications, deploy-with-aura) group courses into these paths.

  • Personas (persona) — Role-based browsing: Developer, Data Scientist, Context Engineer, Data Engineer, Administrator. Child categories (e.g. developer, data-scientist) tag courses by audience.

Internal classification

Some categories are used for internal organisation and filtering. They are children of the internal parent and are required for every course:

  • Content type: coredb (core Neo4j/Cypher/app/administration), gds (Graph Data Science), or genai (Generative AI and GraphRAG). Every course must include at least one of these.

  • Level: beginners, intermediate, or advanced. These help Marketing Ops to categorize courses for reporting purposes.

You must include at least one internal classification in :categories:.

Workshops

Instructor-led workshops use the workshops category. Any course whose slug starts with workshop- must include the workshops category.

How to set categories on a course

In your course’s course.adoc, set the :categories: attribute to a comma-separated list of category slugs. You can append an optional display order with a colon:

asciidoc
:categories: cypher:2, app-development:1, beginners:2, coredb
  • Each entry is a category slug; the optional number (e.g. :2) controls order within that category’s listing.

  • At least one slug must be an internal classification (coredb, gds, genai, beginners, intermediate, advanced).

  • All slugs must match an existing category file in asciidoc/categories/ (e.g. developer.adoc).

Category tests and what they enforce

The test suite tests/categories.test.js runs when you run npm run test cat (or as part of broader tests). It enforces the following.

Every course must have at least one category

The :categories: attribute must be present and contain at least one slug. If it is missing or empty, the test fails with a message asking you to add at least one category.

Every category slug must exist

Each slug in :categories: must correspond to a file asciidoc/categories/<slug>.adoc. If you reference a slug that has been removed or never existed (e.g. a typo), the test fails and reports which categories do not exist.

Every course must include an internal classification

At least one of the slugs in :categories: must be an internal classification: a category whose :parent: includes internal. In practice these are:

  • Content type: coredb, gds, or genai

  • Level: beginners, intermediate, or advanced

If your course has no internal classification, the test fails and lists the valid options.

Workshop courses must include the workshops category

If the course slug starts with workshop-, the :categories: attribute must include the slug workshops. Otherwise the test fails.

Parent references in category files

Category files can declare a parent with :parent: (e.g. :parent: homepage:0, paths:2). The tests ensure that every parent slug in any category file refers to an existing category. So when adding or changing categories, keep parent slugs in sync with existing category files.

Running the category tests

To run only the category tests:

bash
npm run test cat

To run all tests (including category validation):

bash
npm run test

Fix any reported missing categories or missing internal classifications before submitting your course.

Summary checklist

When releasing a course, confirm:

  • :categories: is set and contains at least one slug

  • ❏ Every slug in :categories: has a corresponding file in asciidoc/categories/<slug>.adoc

  • ❏ At least one slug is an internal classification (coredb, gds, or genai, and optionally beginners/intermediate/advanced)

  • ❏ If the course slug starts with workshop-, workshops is included

  • ❏ You have run npm run test cat and all category tests pass

Summary

In this lesson, you learned how categories control where courses appear: on the homepage learning-path cards, on path and persona pages, and in internal filters. Every course must have at least one category, all slugs must reference existing category files, and every course must include an internal classification (e.g. coredb, gds, or genai). Workshop courses must include the workshops category. The category test suite enforces these rules; run npm run test cat to validate your course before release.

Chatbot

How can I help you today?

Data Model

Your data model will appear here.