Great question, that’s one thing I missed while learning Elixir - more examples of real-world code and patterns.
I’d suggest also taking a look at https://github.com/evercam/evercam-media, it’s an open source project which is used to communicate with CCTV cameras.
Tech feature-wise, it has:
- HTTP API which uses Phoenix (serving mainly json and jpeg responses)
- Streaming data to a Rails dashboard using Phoenix Channels
- Models/data layer which uses Ecto
- Caching responses and queries using ETS (with ConCache)
- Communicating with legacy Ruby app through Exq (it only enqueues tasks which are handled by Sidekiq on the other end)
- Sending emails via Sendgrid
- Simple communication with OS processes (starting and killing ffmpeg processes)
- GenServers + Supervisors + GenEvent
- It also used a Nif until recently, uploading to S3, etc.
FWIW, there are about 8k lines of Elixir code in evercam-media, 8.5k in hexweb. I’d guess that the code quality is probably higher in hex_web and it has had many more experienced developers contributing to it, but looking at evercam-media may still be a good way to see how Elixir/Phoenix is being used in the real world.
But I can’t really say for certain as I’m obviously biased