Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iagoantunes/tractian_test

:iphone::large_blue_circle: Mobile Software Engineer test
https://github.com/iagoantunes/tractian_test

flutter getx test

Last synced: about 8 hours ago
JSON representation

:iphone::large_blue_circle: Mobile Software Engineer test

Awesome Lists containing this project

README

        

# :large_blue_circle:TRACTIAN Test

English version of the documentation: [English Version](https://github.com/IagoAntunes/tractian_test/blob/main/README_en.md)

:iphone::large_blue_circle: Mobile Software Engineer test

Os ativos são essenciais para o funcionamento da indústria e podem incluir desde equipamentos de fabricação até veículos de transporte e sistemas de geração de energia. O gerenciamento e a manutenção adequados são cruciais para garantir que eles continuem a operar de forma eficiente e eficaz. Uma forma prática de visualizar a hierarquia dos ativos é através de uma estrutura em árvore.

- Visualize abaixo o aplicativo: [Imagens e Vídeo](#em-uso--imagens-e-video)
- Arquitetura: [Arquitetura](#arquitetura)
- Tecnologias e Ferramentas: [Tecnologias e Ferramentas](#tecnologias-e-ferramentas)

- Video:

https://github.com/IagoAntunes/tractian_test/assets/63758301/d7598d91-8600-4cda-b2d3-12dc5583835a

### Desafio

📌 **Build a Tree View Application that shows companies Assets.**

A árvore é composta basicamente por componentes, ativos e localizações.

## Introdução

Clique para Expandir!

Bem-vindo ao projeto Tree View Application! Este projeto foi desenvolvido como parte de um desafio técnico para construir uma aplicação que exibe os ativos das empresas em uma estrutura hierárquica de árvore. A visualização dos ativos em forma de árvore facilita a compreensão da relação entre localizações, ativos e componentes, permitindo uma gestão mais eficiente e eficaz dos recursos industriais.

Nesta aplicação, você poderá:

- Visualizar a hierarquia dos ativos em uma estrutura de árvore.
- Filtrar ativos com base em diferentes critérios, como status, texto, qrCode.
- Armazenar e recuperar dados de ativos localmente para suportar o funcionamento offline.
- Visualizar os status dos ativos de uma unidade

A seguir, você encontrará as instruções para instalação, uso e para este projeto.

## Instalação

Clique para Expandir!

To install this project, follow these steps:

1. Clone the repository:
```sh
git clone https://github.com/IagoAntunes/tractian_test.git
```
2. Install the dependencies:
```sh
flutter pub get
```
3. Run:
```sh
flutter run
```

## Tecnologias e Ferramentas

Clique para Expandir!

### Tecnologias
- Flutter

### Ferramentas
- [GetX](https://pub.dev/packages/get) - Utilizado para gerenciamento de estado, navegação, injeção de dependencias.
- [dio](https://pub.dev/packages/dio) - Package utilizado para realizar consultas(não foi usado por os dados estarem mockados).
- [get_storage](https://pub.dev/packages/get_storage) - Package utilizado para armazenamento de dados permitindo o uso offline do aplicativo.
- [internet_connection_checker](https://pub.dev/packages/internet_connection_checker) - Utilizado para verificar se o usuário possui conexão com internet.
- [qr_code_scanner](https://pub.dev/packages/qr_code_scanner) - Utilizado para ler dados de um QrCode e filtrar os ativos.
- [path_provider](https://pub.dev/packages/path_provider) - Utilizado para consultar dados mockados na pasta assets, tornando a consulta em tempo de execução dinamica sem dados fixos.

## Testes Unitarios

Clique para Expandir!

```Coverage é uma métrica que indica quantas linhas de código, instruções, condições ou caminhos do programa são testados pelo conjunto de testes unitários.```

**Coverage:** 81,2%

Os testes de unidade são usados para testar unidades individuais de código. No Flutter, os testes de unidade são escritos usando a biblioteca `flutter_test`, com auxilio de outras bibliotecas [**mocktail**](https://pub.dev/packages/mocktail)

Para executar os testes de unidade, siga estas etapas:

```dart
flutter test
```

## Arquitetura

Clique para Expandir!

Este projeto utiliza a **Clean Architecture** para organizar o código de maneira modular e desacoplada, facilitando a manutenção e evolução do sistema. A estrutura de pastas está organizada da seguinte forma:

### Estrutura de Pastas

```
lib

├── core

├── features
|
├── settings

```

- **domain:** Contem os códigos e regras que são compartilhadas entre as funcionalidades do aplicativo.
- **features** Contem os códigos de cada funcionalidade.
- **settings** Contem configuração de tema como estilo de cores,textos alem de injeção de dependencia.

```
features

├── domain
│ ├── entities
│ ├── models
│ ├── repositories
│ └── requests
│ └── responses

├── external
│ ├── datasources
│ └── dao

├── infra
│ ├── repositories
│ └── datasources
│ └── dao

└── presentation
├── controllers
├── pages
└── widgets
```
- **domain:** Contém as abstrações do repositório e modelos (entities) que representam os dados fundamentais da aplicação.
- `entities:` Modelos que representam os dados.
- `repositories:` Interfaces dos repositórios.
- `usecases:` Casos de uso que representam as regras de negócio da aplicação.

- **external:** Responsável pela implementação das fontes de dados externas e objetos de acesso a dados (DAO).
- `datasources:` Implementação de fontes de dados externas, como APIs.
- `dao:` Objetos de acesso a dados para armazenamento local.

- **infra:** Contém a implementação dos repositórios e abstrações das fontes de dados.
- `repositories:` Implementação das interfaces de repositórios definidas no domínio.
- `datasources:` Interfaces das fontes de dados externas.

- **presentation:** Contém os códigos relacionados à interface do usuário (UI) e controladores.
- `controllers:` Controladores que gerenciam a lógica de apresentação.
- `pages:` Páginas da aplicação.
- `widgets:` Componentes reutilizáveis da UI.

### Abstração de Pacotes

Para evitar acoplamento do código a pacotes específicos, foram utilizadas abstrações para pacotes como **Dio** (para requisições HTTP) e **GetStorage** (para armazenamento local). Isso garante que a aplicação mantenha a flexibilidade e possa ser facilmente adaptada ou substituída por outras implementações sem a necessidade de grandes alterações no código base.

## Em Uso | Imagens e Video

Clique para Expandir!

[Warpnet](HomePage)
[Warpnet](AssetsPage)
[Warpnet](AssetsPageFilterEnergy)
[Warpnet](AssetsPageFilterAlert)
[Warpnet](AssetsPageFilterAlert)
[Warpnet](AssetsPageFilterQr)

Paginas em Inglês!

[Warpnet](HomePageEnglish)
[Warpnet](AssetsPage)

## Redes Sociais

Clique para Expandir!

Redes Sociais abaixo:

- [LinkedIn](https://www.linkedin.com/in/iagoaferreira/)