Desenvolver um mini sistema de controle financeiro para gerenciar contas de entrada e saída utilizando Angular. O candidato deve demonstrar habilidades em desenvolvimento front-end, boas práticas de codificação, e criação de uma interface de usuário (UI) intuitiva.
- 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
- Exibir uma lista de todas as transações cadastradas, com as seguintes colunas:
- Tipo (Entrada ou Saída)
- Descrição
- Valor
- Data
- Mostrar o saldo total atual (diferença entre entradas e saídas).
- Exibir o total de entradas e o total de saídas separadamente.
- 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 (ex. campos obrigatórios, valores numéricos para o valor da transação).
- Persistência de Dados: Simular a persistência dos dados utilizando LocalStorage ou SessionStorage.
- Responsividade: A interface deve ser responsiva, adaptando-se a diferentes tamanhos de tela.
- Qualidade do código: Organização, uso de boas práticas, e clareza.
- Usabilidade da interface: Simplicidade, clareza, e facilidade de uso.
- Validações de dados e tratamento de erros.
- Utilização de componentes e serviços de forma reutilizável.
- Estrutura de rotas organizada.
- Responsividade da aplicação.
- Documentação do projeto (README explicando como rodar o projeto e a estrutura do código).
- Uso de TypeScript avançado (Interfaces, Enums, Generics).
- Boas práticas de acessibilidade.
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.