Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Teste/danilo costa santos #15

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

DanCostaSF
Copy link

@DanCostaSF DanCostaSF commented Jan 27, 2025

Documentação

Foi utilizada a arquitetura MVVM + Clean Architecture no deselvolvimento do app, com o seguinte fluxo:
image
image

Utilizei somente um repository para centralizar todas as chamadas do service.
Criei uma usecase para cada tela/funcionalidade, para separar as responsabilidades e as regras.
Criei mappers na camada de domain para facilitar a montagem das telas posteriormente, e não ter que ficar validando valores nulos. Além de fazer os itens chegarem "mastigados" na screen.
Utilizei flow para manipular os dados e enviar os estados para a screen de forma mais dinâmica.
image
image

As tecnologias utilizadas foram:

  • Jetpack Compose - Para criação de layouts responsivos e performáticos, para carregar os marcadores de forma mais dinâmica.
  • Google Map - Mapa para mostrar os marcadores dos ônibus e as paradas.
  • Koin - Biblioteca para injeção de dependência
  • Retrofit - Client para requisições HTTP

O app inicia no mapa. Você pode ver quais ônibus estão em volta do local destinado, coloquei um limitador para quando você diminuir o zoom do mapa (O app agrupa os ônibus para diminuir o Lag).
Tive que adicionar um algorítimo que verifica o tamanho da tela e agrupa os ônibus caso o usuário diminua o zoom.
Ao pesquisar na aba "Linhas", precisei controlar o job da requisição na pesquisa, quando continuasse escrevendo ele iniciava outra chamada, e sobrecarregava caso ficasse repetindo indefinidamente.
Ao pesquisar você consegue selecionar a linha, e irá mostrar todas as paradas da linha escolhida.
Ao selecionar uma parada, você abre uma tela de "Previsão", que mostra a previsão de chegada para todos os ônibus que estão em percurso que ainda não passaram na parada.
Na mesma tela de previsão você consegue clicar nos ônibus que estão em percurso, e verificar em tempo real onde estão os mesmos.
Também consegue ver onde fica a parada selecionada no mapa ao clicar na parada em cima.

Também tive um problema relacionado a TabBar. mesmo após eu mudar de aba e navegar entre as screens, a screen do mapa continuava chamando a api, levando a dar timeout quando ficava muito tempo sem abrir o mapa. Resolvi controlando os jobs de corrotinas manualmente .
image
image

Como fazer o app funcionar

  1. Add o token da api Olho Vivo no arquivo local.properties, adicione á frente do token: API_TOKEN=seu token aqui(sem aspas)
  2. Add a key da api do google maps no AndroidManifest.xml, terá um meta-dado com o nome: com.google.android.geo.API_KEY, basta adicionar a key no value dele.
  3. Tudo certo! Só buildar. :)

App overview

video-aikoo.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant