Desafio técnico proposto pela empresa Miio, em que o intuito da implementação é construir um aplicativo, que permita listarmos posts de usuários e filtra-los através de texto utilizando uma fake API. Sendo o foco da avaliação a arquitetura do projeto e conhecimentos nos processos de testes unitários.
- Telas desenvolvidas
- Arquitetura do projeto
- Pré-requisitos para executar o aplicativo
- Configuração do ambiente
- Executando o aplicativo
Como a ideia do aplicativo era representar uma porção de um sistema que poderia ser multidiscplinar/escalável, foi optado por utilizar como base a proposta do clean arch do Reso Coder, que possuí uma alta aderência na comunidade do Flutter.
Baseado nessa estrutura, foi possível derivar uma arquitetura com objetivo de sanar alguns gaps que se tornaram conhecidos com o tempo, como o uso de downcasting de modelos para entidade. Exposto isso, foi utilizado no projeto a seguinte arquitetura, seguindos os principios estabelicidos pelo Uncle Bob.
Para tornar possível essa arquitetura de maneira legível a estrutura de pastas, ficou definida do seguinte modo:
lib
├── app
│ ├─ modules
│ │ ├── name_module
| │ │ ├── domain -> Responsável pelos usecases, entidades e interfaces de repositories
| │ │ ├── presentation -> Responsável pela UI
| | | └── data -> Responsável pelos datasources e class concretas dos repositories
| | ...
| |
| ├── app_widget
| └── app_injection_container
|
├── data -> Camada de data compartilhada
├── domain -> Camada de dominio compartilhada.
├── core
| ├── adapters -> Wrappers de packages que compõem regras de negócio.
| ├── config -> Constants, Flavors e etc;
| ├── managers -> Gerenciadores de strings, imagens, ícones e invocadores de componentes
| ├── theme -> Design system da aplicação
| └── widgets -> Componentes compartilhados
|
└── main.dart -> Run App
- Flutter SDK: versão 3.10.0 ou superior.
- Ambiente de desenvolvimento (IDE) recomendado: Visual Studio Code ou Android Studio.
Siga estas etapas para configurar o ambiente de desenvolvimento:
- Faça o download e a instalação do Flutter SDK em https://flutter.dev.
- Instale o Dart SDK a partir do site oficial do Dart em https://dart.dev/get-dart.
- Certifique-se de que o Flutter e o Dart estejam configurados corretamente adicionando-os ao seu PATH de ambiente.
- Verifique a instalação do Flutter e do Dart executando
flutter doctor
em seu terminal. Este comando fornecerá uma visão geral do estado do seu ambiente e ajudará a identificar possíveis problemas. - Instale as dependências do projeto executando
flutter pub get
na raiz do projeto.
Siga estas etapas para executar o aplicativo:
- Abra seu terminal ou IDE preferido na raiz do projeto.
- Certifique-se de ter um dispositivo Android ou iOS conectado ou um emulador configurado.
- Execute o comando
flutter run
para compilar e iniciar o aplicativo no dispositivo/emulador.