A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.


Each lesson focuses on a single aspect of building the project, like modeling the data, building a GraphQL server in Elixir, or building a mobile client for it in Flutter.

GraphQL on Rails

How to start with GraphQL in Rails

Setting up your Rails API

A starting point for building our open source custom forms API.

Testing and Documenting our API

Creating tests and docs for our Rails API with rspec_api_documentation, and controlling our JSON with active_model_serializers

Set up your Rails Prototype

Kick start your Rails prototype

Setting up our controllers + views

Working with controllers and views on Rails

Wrapping a REST API

Using Faraday to build a gem to interact with a remote API

Testing HTTP Requests with VCR

Using webmock and VCR to mock HTTP requests when testing our API client

Deploying to Heroku

Deploying a Rails app to Heroku and adding SSL

Working with Nested Attributes

How to use Nested Attributes with has many through relations

Importing Our React Library with Webpacker

Using Rails 5.1 and webpacker to easily import the React library we've been building into our Rails application


Elm components in a Rails application

How to use Elm Components in a Rails Application

Payments in Rails with Braintree

Accepting payment in a Rails application using the Braintree

Recurring Payments on Rails

Using Braintree to make recurring payments on Rails

Custom payment widget using Braintree

Enable a custom payment widget using braintree

Using Braintree webhooks

Updating our application using webhooks

Generating Invoice PDF from Braintree

How to create a PDF invoice from a Braintree subscription

Changing Devise views and using Materialize CSS

Customizing Devise views and using a Material Design CSS library

Posting to Slack

Posting to Slack when new users sign ups

Code clean up and linting

Letting some tools help our code

Testing our app

Using rspec and testing our models


Introduction to Formulae

Formulae: an MIT-licensed form builder, written in Rails and React

Formulae: The back-end

Important things in the rails back-end


Using Formulae and Testing

Creating a gem to Formulae and Testing it


Building a To-Do List in Rails Via TDD, Part 1

Test-driven development of a production checklist app, starting with acceptance tests.


Building a To-Do List in Rails Via TDD, Part 2

Test-driving our model layer


Implementing the Checklist screen from our acceptance tests

Using acceptance tests to implement features


Implementing the Checklist screen from our acceptance tests, Part 2

Sharing checklists


Making our app prettier

Improving layout and implementing other functionalities


The code in the applications was produced by:

./franzé jr

Franzé Jr

Software Engineer with experience working in multi-cultural teams, Franze wants to help people when he can, and he is passionate about programming and Computer Science. Founder of RemoteMeetup.com where he can meet people all over the World. When Franze is not coding, he is studying something about programming.

./josh adams

Josh Adams

I've been building web-based software for businesses for over 18 years. In the last four years I realized that functional programming was in fact amazing, and have been pretty eager since then to help people build software better.

Featured Lessons

Our content library is pretty great, here are a few lessons we think you might like.

What our Superusers are Saying!

Some other people were willing to publicly state that they like us!

Taylor Dolezal

Software Architect

Smooth Terminal has easily been one of the most helpful resources on my journey to better understand Elixir and the Phoenix web framework.

James Edward II


With any language there are so many details to learn. What functions are built-in? How should I structure my code? What tools are available for improving my workflow? It’s rare to find one source that can answer so many of these questions, but Smooth Terminal does this and more.

Rex Van Der Spuy

Game developer

Smooth Terminal is by far the best resource for learning Elm anywhere, and among the very best online learning platforms, period.