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), orgenai(Generative AI and GraphRAG). Every course must include at least one of these. -
Level:
beginners,intermediate, oradvanced. 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:
: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, orgenai -
Level:
beginners,intermediate, oradvanced
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:
npm run test catTo run all tests (including category validation):
npm run testFix 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 inasciidoc/categories/<slug>.adoc -
❏ At least one slug is an internal classification (
coredb,gds, orgenai, and optionallybeginners/intermediate/advanced) -
❏ If the course slug starts with
workshop-,workshopsis included -
❏ You have run
npm run test catand 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.