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.


Installation and Introduction to Crystal

Installing Crystal, writing hello world, and using a dependency.


Crystal Language basics

Learning about the playground, types, method overloading, classes and modules, generics, and macros.


Language basics II

Learn about classes, modules, generics, and macros.


Web server

Make a project with Kemal, a “Fast, Effective, Simple web framework for Crystal”


JSON & Databases

Add a database to your Kemal project with crystal-db.


The code in the applications was produced by:

./crystal core team

Crystal Core Team

Creators and maintainers of the Crystal programming language. Read more about Crystal at

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.