Giter VIP home page Giter VIP logo

cstv's Introduction

CSTV

Um pequeno aplicativo que lista partidas de CS:GO, criado usando Kotlin.

Especificações

O aplicativo possui uma splashscreen e duas telas: uma página inicial que lista partidas agendadas de CS:GO, e uma página de detalhes que lista os detalhes e jogadores de cada partida.

Os dados usados pelo app são consumidos da API PandaScore.

Como executar o projeto

  • Clone o projeto para seu Android Studio.
  • Gere uma cópia do arquivo secrets.defaults.properties com o nome secrets.properties na root do projeto.
  • Substitua "YOUR_API_KEY" por uma chave válida da API PandaScore
  • Execute o projeto.

Especificações técnicas

  • O projeto foi desenvolvido em Kotlin.
  • Para trabalhos assíncronos foi utilizado Coroutines.
  • Retrofit e kotlinx.serialization foram utilizados para chamadas HTTP. Coil foi utilizado para carregamento de imagens.
  • A UI foi desenvolvida usando Jetpack Compose.
  • A splashscreen foi criada usando a SplashScreen API.
  • Para lidar com datas e fuso horários foi utilizado a biblioteca do Java Time.
  • Para injeção de dependências foi utilizado o Hilt.
  • Foram implementados testes unitários; foi utilizado o Kotest para asserções idiomáticas e o MockK para criação de mocks.

Arquitetura

  • O projeto segue os princípios da Clean Architecture, que fundamentalmente separa as classes em 3 camadas: dados (data), domínio (domain) e apresentação (ui).

    • Domain: contém as classes fundamentais para as regras de negócio do app, não contendo nenhuma dependência em outros frameworks ou na infraestrutura do app. Define as entidades usadas no app e contratos como a interface dos repositórios.

    • Data: camada responsável por obter os dados usados no restante do app. Define DTOs usados para receber dados de APIs externas. Implementa o contrato dos repositórios para poder fornecer dados às demais camadas ao mesmo tempo que abstrai a origem desses dados.

    • Presentation: camada responsável por receber as interações do usuário, demonstrar informações e se comunicar com a camada de domínio. Não possui regras complexas, apenas segue as regras já definidas na camada de domínio.

  • A camada de apresentação segue a arquitetura MVVM, onde cada tela (composable) possui um view model responsável por gerenciar seu estado. O view model acessa a camada de domínio, movendo maior parte da lógica para fora da UI.

cstv's People

Contributors

andrethlckr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.