Um microserviço criado com Elixir e Phoenix. Provê uma API REST para um loja virtual e com o checkout lógico (sem escrita no banco) de acordo com os preços e promoções. O software segue o The Twelve-Factor App.
- Linguagem Elixir
- Phoenix Framework
- PostgreSQL
- Docker
- Heroku
- A maneira mais fácil de levantar a stack completa do serviço é executando o comando
docker-compose up -d
. - Caso queira ter a aplicação rodando direto na máquina host, basta executar
mix deps.get; mix phx.server
. - É necessário ter um banco de dados PostgreSQL disponível. Caso queira ter disponível
docker-compose up -d postgres_database
. - Para executar os testes:
mix test
. - Para realizar a migração dos dados
mix ecto.migrate
.
O microserviço é composto por duas aplicações que ficam no diretório apps:
- store_core: provê a camada de negócio e camada de dados.
- store_web: provê a camada web da API REST JSON.
Cada aplicação é composta por diferentes camadas com responsabilidade distintas.
- lib/store_core/contexts: camada de negócio
- lib/store_core/schemas: mapeamento e validações das entidades que são persistidas
- lib/store_core/repo.ex: repositório do Ecto para a comunicação com o banco de dados.
- lib/store_web/controllers: implementação de cada recurso da API.
- lib/store_web/views: provê a camada view de cada recurso.
- lib/store_wb/router.ex: declara as rotas da API. Encapsula validações e parsers dos dados da API.
- lib/store_web/channels: comuicação via websocket. Não é utilizado no momento.
Ver em apps/store_web/docs/api.md