How to build a Neo4j Application with Go
Tags: javascript, neo4j, go, webdev
Published: 2022-03-23 14:00:21

**Are you a Go developer tasked with learning Neo4j, or are you just interested in learning something new?**

If this sounds like you (or even if it doesn't), then the [Building Neo4j Applications with Go](https://graphacademy.neo4j.com/courses/app-go) course on GraphAcademy is for you!

This is a course that I have been working hard on for the past month, and I'm happy to share it with you now.

## What is GraphAcademy?

[Neo4j GraphAcademy](https://graphacademy.neo4j.com/) is our free, self-paced, hands-on online learning platform.

We on the Neo4j DevRel team have been working hard to build a brand new website and course curriculum that provides a fun, engaging and hands-on learning experience.  You can [read more about the changes that we have made on the Neo4j Developer blog](https://medium.com/neo4j/introducing-the-new-graphacademy-45b0df491a23).



## About the course

![The working UI](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z4sxarvxskaxa48rp7a.png)

In the course, you will learn all about the [Neo4j Go Driver](https://github.com/neo4j/neo4j-go-driver) by adding it into an [existing project](https://github.com/neo4j-graphacademy/app-go), and then modifying a set of services to interact with Neo4j.

You will learn all about database sessions, read and write transactions, how to execute a Cypher query and handle results.

At the end of the course, the accompanying UI will be populated with data held in a Neo4j Sandbox](https://sandbox.neo4j.com) instance.

![Courses for Neo4j Beginners on GraphAcademy](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eco67a5soeb82afgco09.png)

## Assumptions

We assume that you have a prior working knowledge of Go.  We also assume that you have some previous experience of working with Neo4j.  

If you have no prior experience with Neo4j, you can follow the [Beginners Learning Path](https://graphacademy.neo4j.com/categories/beginners/).  There are four courses designed to teach you the basics in approximately six hours.

## What you will learn

The course is split into three modules which will guide you from complete beginner to expert.

In the first module, _Project Setup_, you are guided through setting up the project and registering configuration variables so that the API can communicate with the [Neo4j Sandbox](https://sandbox.neo4j.com) instance created during the enrolment process.

In the second module, _The Neo4j Go Driver_, you will learn all about the  Neo4j Driver and how it should be used within an application.  This included installing the `github.com/neo4j/neo4j-go-driver/v4` dependency using `go get`, building a connection string, creating a Driver instance using the `NewDriver()` method and verifying that the credentials used to create the driver instance were correct.

The third module, _Interacting with Neo4j_ teaches you about the Driver lifecycle; how to open new database sessions, execute read and write transactions and how to consume the results.  The module also teaches you how to handle potential errors thrown by the driver.  Throughout this module, you will be challenged to modify the existing project and run tests to verify that the code has been written correctly.

The final module allows you to practise the skills learnt in the previous three modules by implementing the remaining features.

At the end of the course, you will have a working API that serves data to the SPA included in the project. The API will allow you to register a new user and sign in, browse the movie catalogue, rate movies and create a list of favourite movies.

**The course is free of charge and there is no time limit to complete the course!**

## Enrol Now

You can enrol now, for free, by registering for [GraphAcademy](https://graphacademy.neo4j.com/) and clicking **Enroll Now** on the [Building Neo4j Applications with Go page](https://graphacademy.neo4j.com/courses/app-go/).

If you have any comments or feedback you can [get in touch with me on Twitter](https://twitter.com/adamcowley) or use the feedback widgets on each page.

Good luck!