This repository holds the course curriculum for GraphAcademy.
This repository uses docker-compose to create a local server using the latest production build of the GraphAcademy website (repo here). The docker image is stored on AWS ECR, so you will need credentials - talk to Adam.
-
Clone this repository
-
Install the AWS CLI
-
Run
aws configureto configure the AWS CLI -
Log in to docker using the credentials above:
aws ecr get-login-password --region us-east-1 | docker login -u AWS --password-stdin 715633473519.dkr.ecr.us-east-1.amazonaws.com
-
Install the dependencies using NPM
npm install
-
You will need to create a
.envfile in the project root with Auth0 configuration. You can get an example file from Adam or Martin.-
NEO4J_HOST -
NEO4J_USERNAME -
NEO4J_PASSWORD -
AUTH0_CLIENT_ID -
AUTH0_CLIENT_SECRET -
AUTH0_ISSUER_BASE_URL -
CDN_URL
-
-
Run
npm run devto start the server-
The local server will be available at http://localhost:3000
-
A Neo4j instance will be available on http://localhost:7474
-
A process will listen for changes in the
asciidoc/folder and sync the content to Neo4j
-
If you are using VS Code, you can use the devcontainer to run the application in a container.
You will need the Dev Containers extension installed and Docker running.
When the devcontainer is started, it will:
-
Install all dependencies
-
Start the GraphAcademy application and Neo4j database.
You can run the content update and sync by running the following command in a terminal:
npm run dev:watchAll content lives in the asciidoc/ directory. As you modify the content, a process will sync the course structure to Neo4j.
-
categories/- Category information -
courses/- All courses are organised into the own folder structure with modules and lessons -
emails/- The emails sent to users on enrolment, completion and a reminder email when the user has been inactive for 7 days -
languages/- i18n phrases for courses in languages other than English. -
pages/- "CMS" content displayed throughout the website, for example the/certifications/page -
shared/- Content shared across courses -
statuses/- Meta data around course statuses
asciidoc
+ courses/
+ {course-slug}/ - Course Folder
+ badge.svg - SVG badge used across the site
| overview.adoc - Course meta data and content used on the course overview page
+ modules/ - Each course is split into modules
+ {module-slug}/
| overview.adoc
+ lessons/ - A module is split into lessons
+ {lesson-slug}/
| lesson.adoc
+ questions/ - A lesson can be optional, otherwise will have questions.
| question-1.adoc
| question-2.adocWorkshops are instructor-led courses that are designed to be delivered in a classroom setting. They should not be used for self-study. The following workshops are available:
-
Introduction to Graph Databases Workshop (
workshop-fundamentals) - Learn about Graph theory, Neo4j fundamentals, and how to read and write data using Cypher.
View Workshop -
Importing Data into Neo4j Workshop (
workshop-importing) - Learn how to import your data into Neo4j
View Workshop -
Gen-AI - Hands-on Workshop (
genai-workshop) - GenAI Beyond Chat with RAG, Knowledge Graphs and Python
View Workshop -
Mastering Retrieval-Augmented Generation (RAG) (
genai-workshop-graphrag) - Learn how to implement GraphRAG with the neo4j-graphrag Python Package
View Workshop
A suite of tests have been setup to ensure courses meet the right standard.
To open the test suite run:
npm run testThis will open up a UI. Select E2E testing > Chrome and then select the course.
To create a test for your course, you can copy one of the existing files in the cypress/e2e folder to cypress/e2e/{slug}.cy.js and then change line 6 to cy.getCourseDetails('{slug}')/
You can run QA tests for all courses by running:
npm run test:qaYou can run QA tests for specific courses by setting the COURSES environment variable:
COURSES=fundamentals,aura npm run test:qaTo create a new course or modify an existing course, please create a new branch and make your changes.
Once you have finished, create a new PR and add adam-cowley as a reviewer.
git checkout -b new-course mkdir asciidoc/courses/new-course/ echo "= New Course\n:status: draft" > asciidoc/courses/new-course/course.adoc
git add asciidoc/courses/new-course/ git commit -m "Added new course" git push --set-upstream origin new-course
Before creating the PR, please rebase your branch on the main branch.
git fetch origin main git rebase main
When you create a PR, select the correct template:
The checklist must be completed before the PR can be merged.
When a new application server is created, the latest tagged version of this repository is downloaded by the server.
You can use the npm version command to create a new tag. First, run a git pull --tags to get the latest commits and tags from the server, then run the npm version command to create a new tag. Once you are done, run git push --tags.
git pull --tags origin main npm version patch git push --tags origin main
-
npm version patch- To be used when minor fixes are made to an existing course -
npm version minor- To be used when a new course is released -
npm version major- To be used when a major change is made to the repository - for example, multiple course changes, or addition of a new category
To link certifications from the certifications repository, create a symlink:
ln -s ../certifications/asciidoc/certifications/neo4j-certification asciidoc/certifications/neo4j-certificationAdditional documentation is located in the Docs folder.