Skip to content

Conversation

@andrebritovita
Copy link

Entrega do Desafio Android — QuizApp (André Brito Vita)

Este Pull Request contém a implementação completa do QuizApp, desenvolvido na branch andre-vita conforme solicitado no desafio.

A solução foi construída seguindo boas práticas modernas do ecossistema Android, com foco em Clean Architecture, Jetpack Compose, testabilidade e experiência do usuário.


Requisitos Obrigatórios

  • Kotlin como linguagem principal.
  • Room Database para persistência de jogadores e pontuações.
  • Jetpack Compose (Material 3) como camada de UI.
  • Testes unitários cobrindo lógica de negócios e fluxo da aplicação.

Diferenciais Implementados

  • Arquitetura Clean Architecture + MVVM com camadas bem isoladas.
  • Hilt para injeção de dependência.
  • Coroutines + StateFlow/Flow para operações assíncronas.
  • Mecanismo de Anti-Duplicidade para evitar perguntas repetidas.
  • Tratamento de erros com distinção entre falhas de rede e falhas HTTP.
  • Testes de Integração (Room em memória).
  • Testes Instrumentados (UI da WelcomeScreen).
  • Internacionalização (PT, EN, IT).
  • Design System inspirado na identidade da Dynamox, com edge-to-edge.
  • Animações, refinamentos de UX e feedback visual.
  • README completo, com arquitetura, instruções, screenshots e demo.

Como executar

O projeto está localizado no diretório QuizApp/ dentro da branch andre-vita.

Basta abrir essa pasta no Android Studio e executar normalmente.
Instruções completas estão em QuizApp/README.md.

Como testar

  • Testes unitários:
    ./gradlew test

  • Testes instrumentados:
    ./gradlew connectedAndroidTest

Screenshots e Demo

Imagens das telas e um GIF demonstrando o fluxo completo estão disponíveis no README.md.


Observações finais

A solução foi desenvolvida com foco em clareza arquitetural, estabilidade e boa experiência do usuário.
Fico à disposição para revisar detalhes, apresentar o app ou esclarecer qualquer decisão técnica.

- Migrate project to Version Catalog (libs.versions.toml)
- Upgrade to Kotlin 2.0.21 and KSP
- Set compileSdk and targetSdk to 35 (Android 15) with Java 17
- Add Clean Architecture libs: Hilt, Retrofit, Room, and Navigation
…fit interface

- Implement Domain Model: Question
- Add DTO models (QuestionDto, AnswerRequest, AnswerResponse)
- Add mapper QuestionDto.toDomainQuestion()
- Create Retrofit interface QuizApi (endpoints GET /question e POST /answer)
- Prepare base structure for RemoteDataSource (Retrofit initialization pending)
- Core setup in progress: Room, Navigation e Hilt serão adicionados nos próximos commits
- Create QuizApplication class with @HiltAndroidApp
- Register application class in AndroidManifest
- Implement AppModule with Retrofit and Gson converter
- Provide Singleton instance of QuizApi
- Create ScoreEntity with primary key and columns
- Create ScoreDao with insert and flow query
- Configure QuizDatabase abstract class
- Add RemoteDataSource and LocalDataSource interfaces/impls
- Implement QuizRepositoryImpl with error handling and DTO mapping
- Create DataModule and RepositoryModule for Hilt dependency injection
… ObserveScores)

- Add simple pass-through use cases for repository operations
- Document use case responsibilities
- Create reusable PrimaryButton and SecondaryButton components
- Create QuizLogo component
- Build WelcomeScreen layout with input validation and navigation callbacks
- Add vector drawable for app logo
- Add string resources for English, Portuguese, and Italian
@campofernando
Copy link
Contributor

Hello @andrebritovita! Thanks for your submission. Just letting you know that we got your pull request and are in the process of reviewing it. We will soon provide you with our considerations.

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.

2 participants