Nossa solução para a Rinha de Backend V2, organizada pelo @zanfranceschi.
Mais detalhes sobre o desafio podem ser encontrados na descrição oficial do projeto.
A ideia deste projeto e desta versão tem o foco em apresentar mais detalhes sobre a linguagem de progrmamação Elixir, além de apresentar soluções robustas para um desenvolvimento que usa programação funcional e distribuída.
Com isso, queremos democratizar o conteúdo de criação de aplicações distribuídas, usando Elixir, para o público, além de de participar do desafio com uma stack já bem conhecida para solucionar o problema proposto desde o uso do Erlang na década de 80 até os dias atuais, por exemplo, pelo Whatsapp.
Usamos docker e/ou nix para desenvolver localmente.
Basta executar docker compose up -d e você terá o projeto rodando em ambiente de "prod".
TODO: ambiente de dev
Para executar o ambiente de dev com nix, basta executar o comando nix develop na raiz do projeto ou, caso use o direnv: direnv allow.
Dessa forma será instalado os pacotes de elixir, nginx e postgresql para desenvolvimento local.
Para baixar dependências:
mix deps.getPara configurar o banco de dados bem como as seeds:
mix ecto.setupPara levantar o servidor web (apenas de uma instância):
mix phx.serverCaso queria um REPL junto ao servidor, basta executar: iex -S mix phx.server
Espero que gostem!