App Repositories - Bootcamp Inter Android Developer Digital Innovation One

āđāļŠāļĢāđŒ
āļāļąāļ‡
  • āđ€āļœāļĒāđāļžāļĢāđˆāđ€āļĄāļ·āđˆāļ­ 8 āļ.āļĒ. 2024
  • 🊐ApresentaçÃĢo do app desenvolvido no mÃģdulo Criando um App para Apresentar seu PortfÃģlio do GitHub do bootcamp Inter Android Developer na Digital Innovation One, instrutor Ezequiel Messore. O app foi desenovlido em Kotlin e, alÃĐm dos conceitos desenvolvidos nas aulas, emprega as seguintes tecnologias e soluçÃĩes:
    - Layout funcional e amigÃĄvel. Telas com layout elegante e funcional, aplicando melhores prÃĄticas de UI/UX e valorizando as informaçÃĩes do usuÃĄrio.
    - Tela de entrada / troca de usuÃĄrio. Com instruçÃĩes para entrada dos dados e validaçÃĢo junto à API; erros sÃĢo informados por meio de `SnackBar`.
    - VerificaçÃĢo de usuÃĄrio. O app verifica as informaçÃĩes (username) do usuÃĄrio no endpoint `users/{username}` da API e somente entra na tela principal apÃģs a validaçÃĢo. Essa funcionalidade tambÃĐm possibilita obter mais informaçÃĩes sobre o usuÃĄrio como, por exemplo, a contagem de repositÃģrios pÚblicos.
    - PersistÊncia de usuÃĄrio. Os dados do Último usuÃĄrio consultado ficam gravados no armazenamento local, acelerando o acesso ao se abrir o app novamente.
    - OrdenaçÃĢo dos resultados. Os resultados da busca podem ser ordenados por nome do Repo ou por data do Último push. Isso ÃĐ possível por meio de novas buscas na API, adicionando o parÃĒmetro `sort` conforme indicado na documentaçÃĢo. As chamadas foram encapsuladas numa classe `Query`, o que permite abstrair os parÃĒmetros e reaproveitar a classe `UseCase[Param, Source]`.
    - EstÃĐtica on brand. Cores, fontes e estilo visual conforme projeto grÃĄfico do app e sua "marca".
    - Items clicÃĄveis. Os cliques na RecyclerView foram implementados por meio de uma classe ClickListener, com os comportamentos sobrescritos durante a instanciaçÃĢo do Adapter.
    - Detalhes do Repo. Os detalhes de um RepositÃģrio sÃĢo exibidos na em uma tela (fragmento) à parte; se o repositÃģrio tiver um arquivo README.md, seu conteÚdo ÃĐ exibido numa bottom sheet na tela de detalhes.
    - ExibiçÃĢo de screenshots. Os nomes de arquivos .jpeg, .jpg e .png presentes no README sÃĢo extraídos por meio de expressÃĩes regulares (Regex) e as imagens sÃĢo carregadas em um carrossel no fundo da tela de detalhes do Repo.
    - Github raw content. Usa os dados do repositÃģrio para acessar os endpoints no domínio `raw.githubusercontent.com` e exibir o conteÚdo do README.
    - Uso avançado de string resources. Uso de Strings para a formataçÃĢo de texto e string arrays para a seleçÃĢo contextual da String.
    - Chips expressivos. Esses elementos da UI sÃĢo deixados mais comunicativos por meio do uso de cor, ícone e texto. Foi usado `Map` para manter as constantes.
    - Data do Último push. Usa um Chip para apresentar a data do Último push, formatada para o padrÃĢo brasileiro.
    - DataBinding e Listener Bindings. Adotei essas soluçÃĩes, sempre que possível, para reduzir o acoplamento do cÃģdigo e ter mais flexibilidade. A visibilidade de componentes ÃĐ controlada por variÃĄveis do ViewModel.
    - BindingAdapters. O DataBinding ÃĐ facilitado por meio dos BindingAdapters.
    - Boas prÃĄticas de uso de estilos, dimensions, etc. Procurei adotar melhores prÃĄticas para a padronizaçÃĢo dos componentes visuais nos arquivos XML, tais como o uso de estilos standard do Material Design, extraçÃĢo de atributos @dimen e @string e outras ferramentas, visando a uniformidade, acessibilidade e manutenabilidade do app.
    - Testes de unidade e TDD. Foi utilizada a tÃĐcnica de Test Driven Development para implmentaçÃĢo de algumas funcionalidades do app.
    - DocumentaçÃĢo extensiva. Cada classe traz comentÃĄrios para explicar o funcionamento e as decisÃĩes de projeto.
    - Moshi. Adotei a biblioteca Moshi para o parseamento de arquivos JSON.
    - Arquitetura MVVM baseada em Fragments. Optei por organizar o app em Fragments com ViewModel; a MainActivity tem somente a responsabilidade de manter o NavHostController. Adotei essa soluçÃĢo por ser uma arquitetura mais atual.
    - Android Navigation Component. Optei por essa soluçÃĢo, em conjunto com os Fragments, porque acredito que dÃĄ mais flexibilidade e permite fluxos de navegaçÃĢo mais sofisticados.
    - Safe Args. Fluxo de dados entre fragmentos facilitado por meio do plugin safe-args.
    - ListAdapter e ViewHolder. Adotei melhores prÃĄticas como a delegaçÃĢo das responsabilidade de inflar o layout e fazer o binding dos dados a partir da classe ViewHolder, e nÃĢo nos mÃĐtodos da classe ListAdapter.
    - Corrotinas. Uso extensivo de corrotinas e flow para todas as operaçÃĩes de consulta à API.
    - Clean Architecture. Funcionalidades foram adicionadas seguindo princípios de Clean Architecture
    - Versionamento segundo princípios de GitFlow.
    🎎Explore o processo criativo desse app na playlist:
    â€Ē Inter Android Develope...
    ðŸ’ŧRepositÃģrio no GitHub:
    github.com/chi...
    🎧
    Lights by Sappheiros - / sappheirosmusic
    Creative Commons - Attribution 3.0 Unported - CC BY 3.0
    Free Download / Stream: bit.ly/LightsS...]
    Music promoted by Audio Library â€Ē Lights - Sappheiros (N...

āļ„āļ§āļēāļĄāļ„āļīāļ”āđ€āļŦāđ‡āļ™ • 3

  • @dev_wes
    @dev_wes 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Ãģtimo conteÚdo, ficou sensacional todo o processo! Mestre

  • @javajaveiro6321
    @javajaveiro6321 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Muito bom Chico, parabÃĐns!

  • @orlanildoads
    @orlanildoads 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    ParabÃĐns Chico, esses seus vídeos salvam o/