In this tutorial series, we are going to be learning the fundamentals of Adonis JS, a full-stack framework for Node JS. We will be building a library application called "Alexandria" which will serve as an admin application for managing books for a library.

Here are some of the features of the application and the Adonis JS concepts you are going to learn in this series.

  • MVC - Models, Views & Controllers
  • CRUD - how to create, read, update & delete books
  • User Authentication - only logged in users can create, edit, and delete books.
  • Validation - form validation
  • Postgres - we will be using Postgres for our database
  • Migrations, Factories & Seeds - for populating our database with dummy data while developing our app.
  • Bootstrap - we will be using bootstrap for the layout & styles

Install Node JS

I will be developing this application on Windows 10, and so many of the tools I recommend are for that operating system. If you are on a Mac or Linux, you will need to find comparable tools, I will try to provide links for those systems when I can.

First, you will need to install Node JS. The link below will allow you to install node on any operating system.

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.

Install PostgreSQL

Next, you will need to install PostgreSQL

PostgreSQL Database Download
Please Note: EDB no longer provides Linux installers for PostgreSQL 11 and later versions, and users are encouraged to use the platform-native packages. Version 10.x and below will be supported until
For this tutorial, I am using version 10.12 which also comes with PG admin 4, which is a GUI for managing our database.

If you are on a mac, the link below is by far the easiest way to get Postgres installed on your system: – the easiest way to get started with PostgreSQL on the Mac is a full featured PostgreSQL installation packaged as a standard Mac app.

Install Adonis JS

Next, open up your terminal and run the following commands to install Adonis JS CLI and create our project.

npm i -g @adonisjs/cli
adonis new alexandria
cd alexandria
adonis serve --dev
I am using version 4.0.12 of Adonis JS CLI at the time of writing this tutorial

If all goes well, you should see the following at

adonis js home screen

Database Setup

Finally, we need to connect our new application to our PostgreSQL database.

If you are on windows and using PG Admin 4, here is how to do it. After launching PG Admin 4, you will be prompted to enter your master password which you created during the installation of it. In the left hand column, select Servers > PostgreSQL 10 > right-click on "Databases" Create > Database

Give your database a name and click "save"

creating our database in pg admin

Your new database should now be under "databases" in the left hand column.

Next, we need to connect Adonis to our new db.

Open up the Adonis project in your text editor and open the .env file. In here, we will need to add our database connection details. Here are mine for reference:


Your APP_KEY should be different, and is automatically configured by Adonis, don't change this. Also, your DB_PORT might be different than mine. Postgres typically defaults to 5432, so make sure you are using the correct port for your system. Also, make sure to enter your DB_PASSWORD. The one I have above is just an example.

We will also need to install the pg npm package. Run the following command in your terminal

npm i pg

Next run the following command to run the migrations that come by default with each Adonis install.

adonis migration:run

If everything worked you should see the following output in your terminal.

adonis migration run in terminal


The code for this section can be found at the link above under the master branch.

Wrap Up

We have now successfully setup our new application and connected it to PostgreSQL. In the next lesson, we will learn about routes, layouts, views and create our Book controller for managing books.

Next Lesson

Adonis JS Fundamentals - 2. Routes, Layouts, Views, Controllers
In this section, we will be learning about routes, layouts, views and controllers. To begin, let’s first setup and configure Bootstrap which will be using for the layout and styling of our application. Run the following command to create our layouts directory and our default.edge file. adonis m…