The first thing I tried to write in Elixir was an auction application for my fantasy football league. I built it such that it could support multiple auctions going on in different leagues concurrently. That felt like an intermediate introduction to Elixir and especially OTP. Since then I have worked on a charting library and a little toy Phoenix app that demonstrates that library.
From all of that, the advice I would give for a learning project order would be:
- Pure functional library
- Project that uses OTP (if it needs a database, just use ETS)
- Project that uses Ecto
- Project that uses Phoenix (these last two could be reversed. My Phoenix project doesn’t use a database and that has made it much simpler)
I think not starting with Phoenix made Phoenix much easier to understand at an intermediate (as opposed to “I know who to write a CRUD app with it”) level once I got to it.






















