Skip to content

Stonks é um projeto mobile desenvolvido para a plataforma Android, utilizado para aplicar meus conhecimentos mais recentes sobre a plataforma, abordando estratégias de arquitetura, componentes e ferramentas mais atuais como Jetpack Compose.

License

Notifications You must be signed in to change notification settings

jonathanarodr/stonks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3303211 · May 8, 2024
May 8, 2024
May 8, 2024
May 8, 2024
May 6, 2024
May 8, 2024
May 5, 2024
May 8, 2024
May 8, 2024
May 3, 2024
May 5, 2024
May 8, 2024
May 5, 2024
Apr 27, 2024
Apr 26, 2024
May 6, 2024
Apr 27, 2024
Apr 27, 2024
Apr 27, 2024
Apr 27, 2024
May 3, 2024

Repository files navigation

Stonks

Introdução

Stonks é um projeto mobile desenvolvido para a plataforma Android, utilizado para aplicar meus conhecimentos mais recentes sobre a plataforma, abordando estratégias de arquitetura, componentes e ferramentas mais atuais como Jetpack Compose.

TLDR;

Para o processo de instalação e execução do projeto, instale a versão mais recente do Android Studio e ao carregar o projeto, siga os passos abaixo:

  • Certifique-se que o arquivo gerando na pasta .gradle/config.properties contém o mesmo caminho presente na variável de ambiente JAVA_HOME configurado em seu usuário;
  • Acesse o arquivo build.gradle do módulo network e informe a chave de autorização do GitHub no AUTHORIZATION_KEY (saiba mais);
  • Execute o script de setup do projeto para instalação do hook de pre-commit responsável pela execução do detekt:
sh ./tools/setup.sh

Caution

Caso esteja executando o projeto em um ambiente com restrições de rede com proxy, certifique-se que as dependências utilizadas no gerenciador de dependências possui as versões utilizadas por este projeto (saiba mais).

🚩 Features

  • Módularização: distribuição funcional entre os módulos;
  • Home: feature responsável pela exibição da carteira de ativos e histórico transacional;
  • Stock alert: feature responsável pela gestão de alerta de ativos;
  • Comparador de preços: feature responsável pela comparação de preços do ativo x alerta;
  • Push: motor responsável pelo disparo de push's para o cliente;

Tip

Para que o comparador de preços funcione, ao cadastrar novo alerta utilize alguma das ações parametrizadas no mock de stock-alert.

📚 Tech Stack

🧪 Quality

Tip

Para executar o analisador de código estático, na raiz do projeto execute o seguinte comando:

./gradlew detekt

📈 Coverage

Para geração do relatório de cobertura de testes, foi aplicado o uso da biblioteca Kover.

Tip

Para executar o relatório de cobertura de todos os módulos, na raiz do projeto execute o seguinte comando:

./gradlew koverHtmlReportDebug

🏗️ Arquitetura

A arquitetura do projeto foi baseada nas práticas recomendadas pelo Android Guide Arch abordando padrões como SOLID, MVVM, Single source of truth (SSOT), Unidirectional Data Flow (UDF) e práticas de modularização funcional.

🧩 Modularização

  • :app: módulo principal do aplicativo responsável por conter toda lógica de inicialização do app;
  • gradle-build: módulo responsável pela configuração de build system do projeto provendo plugins reutilizáveis em qualquer novo módulo kotlin-library ou android-library eliminando duplicações de scripts de build;
  • :testing : módulo responsável pelas lógicas comuns para desenvolvimento de testes, deve ser utilizado somente com testImplementation ou androidTestImplementation;
  • :common : módulo responsável pelas lógicas comuns entre os módulos, como abstrações genéricas, formatadores, utilitários, etc;
  • :design-system : módulo responsável por contér design tokens e componentes reutilizáveis entre as features;
  • :infrastructure:network : módulo responsável por conter lógicas estruturais do projeto, atualmente contendo apenas lógicas relacionadas a camada de serviço;
  • :feature:home : módulo responsável por contér lógicas da home principal do app;
  • :feature:stocks : módulo responsável por contér lógicas da feature de alerta de ativos/produtos;

A modularização funcional dos módulos no Gradle é essencial para a organização, reutilização e manutenção eficiente do código. Por este motivo este projeto utiliza a biblioteca Module Graph Assert que auxilia neste processo.

Tip

Para executar a análise do grafo ou relatório de distribuição dos módulos, na raiz do projeto execute os seguintes comandos:

# analyzing dependency graph
./gradlew assertModuleGraph

# generating dependency graph
./gradlew generateModulesGraphvizText

📦 Automação

Com o objetivo de automatizar o processo de contribuição neste projeto, foi incluído um workflow via GitHub Actions responsável por executar todos os gates de qualidade e build dos artefatos.

About

Stonks é um projeto mobile desenvolvido para a plataforma Android, utilizado para aplicar meus conhecimentos mais recentes sobre a plataforma, abordando estratégias de arquitetura, componentes e ferramentas mais atuais como Jetpack Compose.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published