OTP (Open Telecom Platform) is a collection of Erlang runtime system, ready-to-use components and design principles. It is used to build scalable, distributed, concurrent and fault-tolerant applications. OTP behaviours are formalized design patterns that encapsulate common patterns (think of them as contracts or interfaces in object-oriented languages). They consist of a generic part (behaviour module) and a specific part (callback module). This article will focus on two behaviours: GenServers and Supervisors. We will see how we can use them to store todos.