Versão inicial com algumas refatorações

Exemplo do projeto como foi entregue ao cliente.