In school I'm learning about Clean Architecture for C#. Does Elixir also have a recommended way to structure your program?

Basically, what is the code and file structure of an average Elixir program? Are there any conventions? etc etc

Unlike Rails framework, Phoenix is working more like a library. The core ecosystem is written in a way to allow everyone do many different things. The conventions may be different not even between communities, but also between companies or groups.

Over years the our community developed patterns for the most common use cases. Those you can see in generated code (mix new, mix etc.) for example Phoenix contexts. However such common practices were created for a good developer experience. There are excellent at the start and they require minimum amount of work to match your specific use case.

However there is no rule to cover all cases. I would recommend reading a discussion for a different directory structure: