Desenvolver um mini sistema de controle financeiro para gerenciar contas de entrada e saída, utilizando Angular no front-end e Laravel no back-end. O candidato deve demonstrar habilidades em desenvolvimento full-stack, boas práticas de codificação, e integração entre front-end e back-end por meio de uma API REST.
- Deve ser possível cadastrar transações financeiras com as seguintes informações:
- Tipo de transação: Entrada ou Saída
- Descrição da transação
- Valor
- Data
- As transações devem ser armazenadas em um banco de dados via API REST desenvolvida com Laravel.
- Exibir uma lista de todas as transações cadastradas, com as seguintes colunas:
- Tipo (Entrada ou Saída)
- Descrição
- Valor
- Data
- A listagem de transações deve ser consumida da API Laravel.
- Mostrar o saldo total atual (diferença entre entradas e saídas).
- Exibir o total de entradas e o total de saídas separadamente.
- O cálculo do saldo e dos totais deve ser feito no back-end e retornado pela API.
- Filtro por tipo de transação (Entrada ou Saída).
- Ordenação das transações por data ou valor.
- Framework: Utilizar Angular (versão 11 ou superior).
- Roteamento: Implementar uma estrutura de rotas para navegação, por exemplo:
- Página de Cadastro de Transações
- Página de Listagem de Transações
- Página de Resumo Financeiro
- Estilização: Utilizar CSS ou Sass (preferencialmente com Angular Material ou Bootstrap para estilização de componentes).
- Validação de Formulário: Implementar validações nos formulários utilizando os recursos do Reactive Forms do Angular.
- Responsividade: A interface deve ser responsiva, adaptando-se a diferentes tamanhos de tela.
- Framework: Utilizar Laravel (versão 10 ou superior) para construir a API REST.
- API: Implementar os seguintes endpoints:
GET /api/transacoes: Listar todas as transações.POST /api/transacoes: Criar uma nova transação.GET /api/transacoes/{id}: Obter uma transação específica.PUT /api/transacoes/{id}: Atualizar uma transação.DELETE /api/transacoes/{id}: Excluir uma transação.GET /api/resumo: Obter o resumo financeiro (total de entradas, saídas e saldo).
- Banco de Dados: Utilizar MySQL para armazenar as transações.
- Validações: Implementar validações no back-end para garantir que os campos obrigatórios sejam preenchidos e os valores sejam válidos.
- Autenticação: Utilizar JWT para autenticar as requisições da API (não obrigatório, mas um diferencial).
- Full-stack: Integração correta entre front-end e back-end por meio de requisições HTTP.
- Qualidade do código: Organização, boas práticas, clareza e estrutura do código tanto no front-end quanto no back-end.
- Usabilidade da interface: Simplicidade, clareza e facilidade de uso.
- Validações de dados e tratamento de erros: Validações de formulários no Angular e validações no back-end com Laravel.
- Utilização de componentes e serviços reutilizáveis no front-end.
- Estrutura de rotas organizada no Angular e na API.
- Documentação: README explicando como rodar o projeto localmente e as rotas da API.
- Uso de TypeScript avançado no Angular (Interfaces, Enums, Generics).
- Implementação de autenticação com JWT no Laravel e integração com o front-end.
O candidato deve disponibilizar o código em um repositório público no GitHub e incluir instruções de como rodar o projeto localmente, tanto o front-end quanto o back-end.
mini-sistema-financeiro/
├── backend/ # Diretório Laravel
│ └── ...
└── frontend/ # Diretório Angular
└── ...