Who Should Take this Course and Why?
An overview of this course, along with the prerequisites and requirements.
We'll cover the following
Learning objectives
In this course, we’ll learn:
-
How to use a layer-based approach in designing Elixir applications.
-
How to make Elixir
mix
projects. -
The different datatypes used in Elixir and their pros and cons. This will aid us in making important decisions later on.
-
How to use OTP GenServers.
-
Good coding practices that will make it easier for us to create and use our project.
-
Testing techniques that will be used to test some of the layers of our project.
Contents
We’ll go through the following phases in order:
-
Look at an overview of the six layers we’ll be using to build our main project.
-
Create a small
mix
project which demonstrates the behavior of a simple counter. It will contain only three of the six layers to give us an idea of how different layers work. -
Discuss the following datatypes used in Elixir:
-
Primitive types
-
List
-
Stream
-
Map and Struct
-
String
-
Tuple
-
Function
-
-
Learn about the data layer and the properties of functional languages.
-
Create our second
mix
project, which will simulate the behavior of a user giving online quizzes. -
Identify the main data that will track the user giving the quiz, and use structs to store this data in the project.
-
Create the functional core layer of this project which consists of functions to utilize the data defined previously in the data layer.
-
Learn the following techniques when writing functions:
-
How to use appropriate names for our functions.
-
How to break down our code into several small functions which perform one specific task.
-
Learn about abstractions in code.
-
-
Test our functional core using
ExUnit
, a unit testing library in Elixir. -
Create a boundary layer to make our two GenserServers for storing and taking quizzes.
-
Create a lifecycle layer that will use dynamic supervisors to create and handle processes in our quiz. This will allow multiple users to give the quiz concurrently, each with a different process.
-
Learn how to use dependencies, concurrency, and how to pool resources together. These techniques can aid in creating our worker layer.
-
Build a third
GenServer
, which makes our quizzes timed. -
Learn how to make a poncho project to manage different dependencies.
-
Create a Postgres table to store the user’s responses.
-
Get some insight on how to integrate our application into existing frameworks, including:
-
Phoenix Channels
-
LiveView
-
Scenic projects
-
-
Test our boundary layer using the same
ExUnit
library.
Prerequisites
This course requires a working knowledge of Elixir, including the following concepts:
-
mix
projects -
OTP GenServers
-
Supervisors and processes
Requirements
The mix
projects we’ll build in the application use the following:
-
Elixir: 1.12.2
-
Postgresql database