Project ideas - fully-forged/elixir-training GitHub Wiki
Enumerable (1hr)
Topics: pattern-matching, function application and recursion
Description: implement from scratch reverse/1, map/2, reduce/2 and
reduce/3 (for finite collections).
Triangles (1hr)
Topics: pattern-matching, guard clauses
Description: a module capable of categorising/validating a triangle spec.
Planetarium (2hrs)
Topics: structs and protocols
Description: model a star system data structure with planets. Needs to be
able to update/delete planet information and perform basic calculations
(average mass, etc.).
Let's build a worker (2hrs)
Topics: processes, messages and monitoring
Description: step by step exercise on how to build a process with an acceptor
loop and a monitor. Used to introduce some ideas that will be referenced
later on when talking about OTP.
A key-value store (3hrs)
Topics: OTP, workers, supervisors, ets
Description: starting from a simple gen_server, building a simple key-value
store. First as a standalone process, then a named process, then introducing
ets as a storage backend.
Asynchronous data fetch (full day)
Topics: OTP, external libraries, supervision trees
Description: create a system that can dynamically add and remove workers that
fetch information about a specific github user. One worker per username. All
workers need to be supervised, data needs to survive crashes and fetching needs
to be asyncronous. Optimize for fast reads.
Railway oriented programming (4hrs)
Topics: Phoenix, functional patterns, macros
Description: how to model and structure application flow according to the
railway paradigm. Flow includes parsing some data, validating, storing and
some extra background processing.