Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions DynamoxQuiz-abelpozza/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
3 changes: 3 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions DynamoxQuiz-abelpozza/.idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/AndroidProjectSystem.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 50 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/material_theme_project_new.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/migrations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions DynamoxQuiz-abelpozza/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

141 changes: 141 additions & 0 deletions DynamoxQuiz-abelpozza/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Dynamox Quiz

Aplicativo Android desenvolvido em Kotlin para o desafio técnico da Dynamox.

O aplicativo permite que o usuário informe um nickname, responda 10 perguntas de múltipla escolha consumidas via API e visualize sua pontuação final. Os scores ficam persistidos localmente utilizando Room Database.

---

## Tecnologias utilizadas

- Kotlin
- Jetpack Compose
- MVVM
- Retrofit
- OkHttp
- Coroutines
- StateFlow
- Room Database
- JUnit
- MockK

---

## Estrutura do projeto

O projeto foi dividido em camadas para facilitar manutenção, organização e separação de responsabilidades.

```txt
data/
├── local/
├── remote/
└── repository/

domain/
└── repository/

presentation/
└── quiz/
```

---

## Funcionalidades

- Cadastro de nickname
- Carregamento de perguntas via API
- Envio e validação de respostas
- Feedback de resposta correta/incorreta
- Controle de pontuação
- Exibição do resultado final
- Reinício do quiz
- Persistência de scores utilizando Room
- Ranking local de pontuações
- Tratamento de erros da API
- Testes unitários no ViewModel

---

## API utilizada

Base URL:

```txt
https://quiz-api-bwi5hjqyaq-uc.a.run.app/
```

Endpoints utilizados:

- `GET /question`
- `POST /answer?questionId=id`

---

## Persistência local

Foi utilizado Room Database para armazenar:

- nickname
- score final

Os dados permanecem salvos localmente mesmo após fechar o aplicativo.

---

## Testes

Foram implementados testes unitários no `QuizViewModel` para validar regras de negócio do fluxo do quiz.

---

## Screenshots

### Tela inicial

![Tela inicial](screenshots/start.png.jpeg)

### Pergunta carregada

![Pergunta](screenshots/question.png.jpeg)

### Resposta correta

![Resposta correta](screenshots/correct.png.jpeg)

### Resposta incorreta

![Resposta incorreta](screenshots/wrong.png.jpeg)

### Resultado final e ranking

![Resultado final](screenshots/result.png.png)

---

## Como executar

1. Clone o repositório

```bash
git clone https://github.com/SEU_USUARIO/DynamoxQuiz.git
```

2. Abra o projeto no Android Studio

3. Aguarde o Gradle sincronizar

4. Execute em um emulador ou dispositivo físico
---

## Melhorias futuras

- Melhorar tratamento de erros
- Adicionar mais testes
- Melhorar experiência visual
- Implementar Navigation Compose

---

## Autor

Abel Antônio Pozza
1 change: 1 addition & 0 deletions DynamoxQuiz-abelpozza/app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Loading