From f13cac273b699bc2be3c57adb9a58c76c880f04f Mon Sep 17 00:00:00 2001
From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com>
Date: Sat, 13 Jan 2024 15:04:51 -0300
Subject: [PATCH 1/8] Update README.md
---
README.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/README.md b/README.md
index 747a3677..a4afd07c 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,9 @@
# PetJournal
+## Dretrizes:
+Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusiasmo. No entanto, é importante estar ciente de algumas diretrizes essenciais para manter a integridade e o propósito do projeto. Primeiramente, familiarize-se com a documentação existente, que detalha o estado atual e os objetivos do projeto. Isso é crucial para entender onde estamos e para onde estamos indo. Em segundo lugar, pedimos que evite refatorações desnecessárias ou alterações radicais. Tais mudanças podem levar à estagnação e desviar-nos do nosso caminho. Busque sempre aprimorar e construir sobre o que já foi alcançado, em vez de reconstruir do zero. Ao seguir essas diretrizes, você ajudará a preservar a essência do projeto e a garantir que nosso trabalho coletivo continue evoluindo de forma produtiva e reconhecível.
+
## 1. Introdução ao Projeto
- **Objetivo**: O "Pet Journal" é uma ferramenta de gerenciamento para a vida dos pets, ajudando no controle de vacinas, vermífugos, rações, e outros aspectos importantes do cuidado animal.
@@ -119,10 +122,22 @@
- **Ambiente do usuário:**
- **Diagrama UML:**
+
+ ![Home](https://github.com/PetJournal/petjournal.android/assets/42920754/26a580eb-4d1d-4aac-a1ba-ef8e33652bb5)
+
- **UX/Design:**
+
+
+
- **Tela padrão inicial:**
- **Diagrama UML:**
+
+ ![IntroNomeGenero](https://github.com/PetJournal/petjournal.android/assets/42920754/13642153-2b67-430f-969e-f129f531df1e)
+
- **UX/Design:**
+
+
+
- **Tela padrão espécie:**
- **Diagrama UML:**
- **UX/Design:**
From 20e7ca879bb66144801c796da52259aafe0c27e5 Mon Sep 17 00:00:00 2001
From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com>
Date: Wed, 24 Jan 2024 23:00:29 -0300
Subject: [PATCH 2/8] update: add form state, form event and how we can use
them
---
README.md | 14 +++--
doc/FormEvent.md | 78 ++++++++++++++++++++++++++++
doc/FormState.md | 70 +++++++++++++++++++++++++
doc/FormStateAndFormFormEvent.md | 88 ++++++++++++++++++++++++++++++++
4 files changed, 245 insertions(+), 5 deletions(-)
create mode 100644 doc/FormEvent.md
create mode 100644 doc/FormState.md
create mode 100644 doc/FormStateAndFormFormEvent.md
diff --git a/README.md b/README.md
index a4afd07c..ac869c0c 100644
--- a/README.md
+++ b/README.md
@@ -145,12 +145,16 @@ Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusia
- **Diagrama UML:**
- **UX/Design:**
-## 5. Integração com Backend
+
+## 5. Padrões de Design e Melhores Práticas
+
+
+## 6. Integração com Backend
- A API que estamos usando é do próprio projeto, criada pela equipe de backend, para saber mais a respeito, por favor, visite o repositório do projeto: [Backend](https://github.com/PetJournal/petjournal.api)
-## 6. Testes
+## 7. Testes
- **Testes Unitários:**
- **Objetivo:** Testar partes individuais do código (funções, métodos) de forma isolada.
@@ -167,7 +171,7 @@ Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusia
- **Conclusão:**
Nossa abordagem de teste ajuda a manter a qualidade e estabilidade do software, facilitando a contribuição de novos integrantes e a manutenção do projeto.
-## 7. Gerenciamento de Dependências
+## 8. Gerenciamento de Dependências
- **Bibliotecas**:
1. **Coil:** Biblioteca de carregamento de imagens para Kotlin, otimizada para desempenho e eficiência.
@@ -179,7 +183,7 @@ Nossa abordagem de teste ajuda a manter a qualidade e estabilidade do software,
7. **Compose:** Toolkit moderno de UI do Android para criar interfaces nativas com menos código.
8. **Coroutines:** Recurso do Kotlin para programação assíncrona e não bloqueante.
-## 8. Contribuindo
+## 9. Contribuindo
- **Como Contribuir**:
1. **Explore o Repositório:** Acesse o repositório no GitHub, leia atentamente o 'README', para compreender as diretrizes do projeto.
@@ -199,7 +203,7 @@ Nossa abordagem de teste ajuda a manter a qualidade e estabilidade do software,
8. **Segurança:** Siga as melhores práticas de segurança no código para prevenir vulnerabilidades, como injeção de SQL e vazamento de dados, sempre procure compreender a ação que esta realizando para evitar problemas neste quesito.
9. **Performance:** Otimize o código para melhorar a performance, considerando aspectos como tempo de execução e consumo de recursos, para isso, não há problema em utilizar ferramentas de inteligência artificial para otimizar o código e o seu tempo, desde que compreenda o que foi feito e saiba explicar.
-## 9. FAQs e Solução de Problemas
+## 10. FAQs e Solução de Problemas
- **Perguntas, dúvidas ou problemas**: Sinta-se a vontade para abrir uma essue [Clicando aqui](https://github.com/PetJournal/petjournal.android/issues)
diff --git a/doc/FormEvent.md b/doc/FormEvent.md
new file mode 100644
index 00000000..86bad7c9
--- /dev/null
+++ b/doc/FormEvent.md
@@ -0,0 +1,78 @@
+### O que é FormEvent?
+
+`FormEvent` é uma classe selada (sealed class) em Kotlin, usada na tela de cadastro de usuário do nosso aplicativo. Esta classe representa diferentes tipos de eventos que podem ocorrer durante a interação do usuário com o formulário de cadastro.
+
+### O que isso faz no código?
+
+Cada subclasse de `FormEvent` corresponde a um evento específico no formulário, como mudança de nome, sobrenome, e-mail, etc. Quando um usuário interage com o formulário (por exemplo, digitando um nome), um evento correspondente (neste caso, `NameChanged`) é emitido. Este evento é então tratado pelo ViewModel, que atualiza o estado do formulário de acordo com a ação do usuário, garantindo que a interface do usuário reflita essas mudanças de forma eficiente e evitando recomposições desnecessárias.
+
+### Como devo utilizar em outras telas?
+
+Para utilizar um padrão semelhante em outras telas, siga estas etapas:
+
+1. **Defina uma classe selada para eventos**: Crie uma classe selada para representar os diferentes tipos de eventos que podem ocorrer na tela.
+ ```kotlin
+ sealed class ScreenEvent {
+ object EventA : ScreenEvent()
+ data class EventB(val data: String) : ScreenEvent()
+ data class EventC(val value: Int) : ScreenEvent()
+ }
+ ```
+2. **Manipule os eventos no ViewModel**: No ViewModel da tela, implemente um método para lidar com os eventos, atualizando o estado da tela conforme necessário.
+ ```kotlin
+ data class ScreenState(
+ val isLoading: Boolean = false,
+ val data: String = "",
+ val error: String? = null
+ )
+ ```
+
+ ```kotlin
+ class ScreenViewModel : ViewModel() {
+ private val _state = MutableLiveData
- -
- - - -# PetJournal - -## Dretrizes: -Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusiasmo. No entanto, é importante estar ciente de algumas diretrizes essenciais para manter a integridade e o propósito do projeto. Primeiramente, familiarize-se com a documentação existente, que detalha o estado atual e os objetivos do projeto. Isso é crucial para entender onde estamos e para onde estamos indo. Em segundo lugar, pedimos que evite refatorações desnecessárias ou alterações radicais. Tais mudanças podem levar à estagnação e desviar-nos do nosso caminho. Busque sempre aprimorar e construir sobre o que já foi alcançado, em vez de reconstruir do zero. Ao seguir essas diretrizes, você ajudará a preservar a essência do projeto e a garantir que nosso trabalho coletivo continue evoluindo de forma produtiva e reconhecível. - -## 1. Introdução ao Projeto - -- **Objetivo**: O "Pet Journal" é uma ferramenta de gerenciamento para a vida dos pets, ajudando no controle de vacinas, vermífugos, rações, e outros aspectos importantes do cuidado animal. - -- **Público-alvo**: Direcionado a donos de pets que desejam manter um controle organizado e acessível sobre a saúde e bem-estar de seus animais. - -## 2. Configuração do Ambiente de Desenvolvimento - -- **Pré-requisitos**: - - **Android Studio** (versão mais recente) - (Giraffe | 2022.3.1) - - **Kotlin SDK** (min: 24, max: 34) - - **Ndk Version**: 23.1.7779620 - - **Gradle:** 8.1.3 -- **Configuração Local**: - 1. Clone o repositório do projeto. - 2. Abra o projeto no Android Studio. - 3. Permita que o Android Studio sincronize o projeto com os arquivos Gradle. - 4. Configure um emulador ou conecte um dispositivo que suporte Android SDK versão 24 até 34. - 5. Execute o projeto para verificar se tudo está funcionando. - -## 3. Arquitetura do Aplicativo - -- **Visão Geral da Arquitetura**: MVVM para separação da lógica de negócios e interface do usuário. - - ![arquitetura-basic.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/13b05a7f-afe4-466f-8cb3-8e753fffb0dc) - -- **Diagrama da Arquitetura expandido**: - - ![arquitetura-Cópia do arquitetura.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/4b80e624-e101-42aa-9708-0565b4f99d54) - -- **Organização das pastas:** - - **Modulos** : - - ![modulos.png](https://github.com/PetJournal/petjournal.android/assets/42920754/3ccdde18-4ae3-4717-993b-6144b4857322) - - - **App, Domain, Data, Database** : - -- - - - -
- - -## 4. Telas e seus diagramas de funcionamento -Nesta seção, você encontrará informações detalhadas sobre as diferentes telas do nosso aplicativo e sobre seus funcionamentos. -[Telas](doc/FormEvent.md) - -## 5. Padrões de Design e Melhores Práticas - Utilizamos os recursos a baixo em nosso app, o que torna importante conhecer tais padrões. -- [FormEvent](doc/FormEvent.md) -- [FormState](doc/FormState.md) -- [FormState e FormEvent](doc/FormStateAndFormEvent.md) - -## 6. Integração com Backend - -- A API que estamos usando é do próprio projeto, criada pela equipe de backend, para saber mais a respeito, por favor, visite o repositório do projeto: [Backend](https://github.com/PetJournal/petjournal.api) - - -## 7. Testes - -- **Testes Unitários:** - - **Objetivo:** Testar partes individuais do código (funções, métodos) de forma isolada. - - **Como Fazemos:** Utilizamos JUnit, Mockk para testes unitários. Mock objects são usados para simular dependências externas. - - **Benefícios:** Ajuda a encontrar bugs cedo, facilita a manutenção e melhora a qualidade do código. -- **Testes Instrumentados:** - - **Objetivo:** Testar componentes do aplicativo no ambiente de um dispositivo Android real ou emulador. - - **Como Fazemos:** Utilizamos Espresso para simular interações do usuário com a interface gráfica. - - **Benefícios:** Garante que a interface do usuário funcione bem e identifica problemas de integração e performance. -- **Boas Práticas:** - - Automatizamos os testes para integração contínua. - - Buscamos alta cobertura de código, mas também focamos na qualidade dos testes. - - Documentamos os testes claramente para facilitar a compreensão e manutenção. -- **Conclusão:** -Nossa abordagem de teste ajuda a manter a qualidade e estabilidade do software, facilitando a contribuição de novos integrantes e a manutenção do projeto. - -## 8. Gerenciamento de Dependências - -- **Bibliotecas**: - 1. **Coil:** Biblioteca de carregamento de imagens para Kotlin, otimizada para desempenho e eficiência. - 2. **Koin:** Framework de injeção de dependência leve para Kotlin. - 3. **Room:** Biblioteca de abstração de banco de dados do Android, que facilita o acesso ao SQLite. - 4. **Retrofit:** Cliente HTTP tipo-safe para Android e Java. - 5. **Navigation:** Componente do Android Jetpack para facilitar a navegação entre telas. - 6. **Material Design You:** Versão mais recente do Material Design, com foco em personalização e adaptabilidade. - 7. **Compose:** Toolkit moderno de UI do Android para criar interfaces nativas com menos código. - 8. **Coroutines:** Recurso do Kotlin para programação assíncrona e não bloqueante. - -## 9. Contribuindo - -- **Como Contribuir**: - 1. **Explore o Repositório:** Acesse o repositório no GitHub, leia atentamente o 'README', para compreender as diretrizes do projeto. - 2. **Fork e Clone:** Faça um fork do projeto para sua conta no GitHub e clone-o para seu ambiente de desenvolvimento local. - 3. **Identifique Oportunidades de Contribuição:** Examine as issues abertas para encontrar problemas que você pode resolver ou áreas onde pode melhorar a documentação ou o código. - 4. **Faça suas Alterações:** Trabalhe nas mudanças localmente, mantendo-se fiel às práticas e padrões de codificação do projeto. - 5. **Envie um Pull Request:** Após finalizar suas alterações, envie um pull request para o repositório original com uma descrição clara do que foi modificado. - 6. **Aguarde Feedback:** Esteja aberto para receber feedback dos mantenedores do projeto e pronto para fazer ajustes em seu pull request conforme necessário. -- **Padrões de Código**: Convenções de nomenclatura, formatação, uso de linters. - 1. **Comentários e Documentação:** Escreva comentários claros no código para explicar a lógica complexa e mantenha a documentação atualizada para facilitar a compreensão e colaboração. - 2. **Princípios de Design de Código:** Siga princípios como SOLID para estruturar o código de forma coesa, DRY para evitar repetições, e KISS para manter a simplicidade. - 3. **Padrões de Arquitetura:** Utilize padrões como MVVM para organizar o código de forma lógica, facilitando manutenção e expansão. - 4. **Revisão de Código:** Implemente revisões de código regulares para garantir a qualidade, aderência aos padrões e promover o aprendizado entre os desenvolvedores. - 5. **Testes Unitários e Integrados:** Encoraje a escrita de testes para validar individualmente cada componente e suas integrações, assegurando a robustez do software. - 6. **Gerenciamento de Dependências:** Mantenha as dependências bem gerenciadas e atualizadas para evitar conflitos e vulnerabilidades. - 7. **Tratamento de Erros:** Adote uma abordagem consistente para o tratamento de erros, garantindo que o sistema se comporte de maneira previsível e segura. - 8. **Segurança:** Siga as melhores práticas de segurança no código para prevenir vulnerabilidades, como injeção de SQL e vazamento de dados, sempre procure compreender a ação que esta realizando para evitar problemas neste quesito. - 9. **Performance:** Otimize o código para melhorar a performance, considerando aspectos como tempo de execução e consumo de recursos, para isso, não há problema em utilizar ferramentas de inteligência artificial para otimizar o código e o seu tempo, desde que compreenda o que foi feito e saiba explicar. - -## 10. FAQs e Solução de Problemas - -- **Perguntas, dúvidas ou problemas**: Sinta-se a vontade para abrir uma essue [Clicando aqui](https://github.com/PetJournal/petjournal.android/issues) - -## Contribuições - - - - - - - - - - - - - - - -## Licença - -Este projeto é licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes. From 36678bb4d2fab41a54282e453cb3a1c55dc14c06 Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:43:57 -0300 Subject: [PATCH 6/8] update documentation --- doc/{ => screens}/Screens.md | 0 doc/screens/aguardando_codigo.md | 9 +++++++++ doc/screens/ambiente_do_usuario.md | 8 ++++++++ doc/screens/cadastro.md | 10 ++++++++++ doc/screens/esqueceu_a_senha.md | 10 ++++++++++ doc/screens/login.md | 11 +++++++++++ doc/screens/splash_screen.md | 8 ++++++++ doc/screens/tela_padrao_especie.md | 3 +++ doc/screens/tela_padrao_inicial.md | 8 ++++++++ doc/screens/tela_padrao_nome_genero.md | 3 +++ doc/screens/troque_a_senha.md | 9 +++++++++ 11 files changed, 79 insertions(+) rename doc/{ => screens}/Screens.md (100%) create mode 100644 doc/screens/aguardando_codigo.md create mode 100644 doc/screens/ambiente_do_usuario.md create mode 100644 doc/screens/cadastro.md create mode 100644 doc/screens/esqueceu_a_senha.md create mode 100644 doc/screens/login.md create mode 100644 doc/screens/splash_screen.md create mode 100644 doc/screens/tela_padrao_especie.md create mode 100644 doc/screens/tela_padrao_inicial.md create mode 100644 doc/screens/tela_padrao_nome_genero.md create mode 100644 doc/screens/troque_a_senha.md diff --git a/doc/Screens.md b/doc/screens/Screens.md similarity index 100% rename from doc/Screens.md rename to doc/screens/Screens.md diff --git a/doc/screens/aguardando_codigo.md b/doc/screens/aguardando_codigo.md new file mode 100644 index 00000000..12d8f620 --- /dev/null +++ b/doc/screens/aguardando_codigo.md @@ -0,0 +1,9 @@ +- **Aguardando código:** + - **Diagrama UML:** + + ![fluxoTelas-aguardando_codigo.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/adf3322a-e755-41d8-908c-33a5d8a86aba) + + - **UX/Design:** + + + \ No newline at end of file diff --git a/doc/screens/ambiente_do_usuario.md b/doc/screens/ambiente_do_usuario.md new file mode 100644 index 00000000..9fc9c53d --- /dev/null +++ b/doc/screens/ambiente_do_usuario.md @@ -0,0 +1,8 @@ +- **Ambiente do usuário:** + - **Diagrama UML:** + + ![Home](https://github.com/PetJournal/petjournal.android/assets/42920754/26a580eb-4d1d-4aac-a1ba-ef8e33652bb5) + + - **UX/Design:** + + diff --git a/doc/screens/cadastro.md b/doc/screens/cadastro.md new file mode 100644 index 00000000..ffb2e15d --- /dev/null +++ b/doc/screens/cadastro.md @@ -0,0 +1,10 @@ +- **Cadastro:** + - **Descrição**: Tela para cadastrar uma nova conta. + - **Diagrama UML:** + + ![fluxoTelas-registro.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/8ef35f86-7653-45d4-95e4-3f37da3f589f) + + - **UX/Design:** + + + \ No newline at end of file diff --git a/doc/screens/esqueceu_a_senha.md b/doc/screens/esqueceu_a_senha.md new file mode 100644 index 00000000..82cf9090 --- /dev/null +++ b/doc/screens/esqueceu_a_senha.md @@ -0,0 +1,10 @@ +- **Esqueceu a senha:** + - **Diagrama UML:** + + ![fluxoTelas-esqueceu_sua_senha.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/7f71071b-64d3-4e48-bd24-28e1289cd577g) + + - **UX/Design:** + + + + \ No newline at end of file diff --git a/doc/screens/login.md b/doc/screens/login.md new file mode 100644 index 00000000..5dd9d266 --- /dev/null +++ b/doc/screens/login.md @@ -0,0 +1,11 @@ +- **Login:** + - **Descrição**: Tela para autenticação do usuário. + - **Componentes Principais**: Campos de email e senha, botões de login. + - **Diagrama UML:** + + ![fluxoTelas-login.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/3cae1a55-fe11-42f5-b05b-345c968521d8) + + - **UX/Design:** + + + diff --git a/doc/screens/splash_screen.md b/doc/screens/splash_screen.md new file mode 100644 index 00000000..ba7a2b3f --- /dev/null +++ b/doc/screens/splash_screen.md @@ -0,0 +1,8 @@ +- **Splash Screen**: + - **Descrição**: Tela inicial do app. + - **Fluxo de Navegação**: Transição para a tela de Login. + - **Componentes Principais**: Logo do app e animação. + - **UX/Design:** + + + \ No newline at end of file diff --git a/doc/screens/tela_padrao_especie.md b/doc/screens/tela_padrao_especie.md new file mode 100644 index 00000000..e68e5c59 --- /dev/null +++ b/doc/screens/tela_padrao_especie.md @@ -0,0 +1,3 @@ +- **Tela padrão espécie:** + - **Diagrama UML:** + - **UX/Design:** \ No newline at end of file diff --git a/doc/screens/tela_padrao_inicial.md b/doc/screens/tela_padrao_inicial.md new file mode 100644 index 00000000..768c6c09 --- /dev/null +++ b/doc/screens/tela_padrao_inicial.md @@ -0,0 +1,8 @@ +- **Tela padrão inicial:** + - **Diagrama UML:** + + ![IntroNomeGenero](https://github.com/PetJournal/petjournal.android/assets/42920754/13642153-2b67-430f-969e-f129f531df1e) + + - **UX/Design:** + + \ No newline at end of file diff --git a/doc/screens/tela_padrao_nome_genero.md b/doc/screens/tela_padrao_nome_genero.md new file mode 100644 index 00000000..52c2fe69 --- /dev/null +++ b/doc/screens/tela_padrao_nome_genero.md @@ -0,0 +1,3 @@ +- **Tela padrão nome e gênero:** + - **Diagrama UML:** + - **UX/Design:** diff --git a/doc/screens/troque_a_senha.md b/doc/screens/troque_a_senha.md new file mode 100644 index 00000000..787d89a7 --- /dev/null +++ b/doc/screens/troque_a_senha.md @@ -0,0 +1,9 @@ +- **Troque a senha:** + - **Diagrama UML:** + + ![fluxoTelas-troque_sua_senha.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/84c9e097-405c-4a67-a78c-3d62900b9e16) + + - **UX/Design:** + + + From 20b2b713706bde011bcf482ded819e4d45cc054b Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:45:19 -0300 Subject: [PATCH 7/8] Create README.md --- README.md | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..36502cc3 --- /dev/null +++ b/README.md @@ -0,0 +1,155 @@ + + ++ +
+ + + +# PetJournal + +## Dretrizes: +Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusiasmo. No entanto, é importante estar ciente de algumas diretrizes essenciais para manter a integridade e o propósito do projeto. Primeiramente, familiarize-se com a documentação existente, que detalha o estado atual e os objetivos do projeto. Isso é crucial para entender onde estamos e para onde estamos indo. Em segundo lugar, pedimos que evite refatorações desnecessárias ou alterações radicais. Tais mudanças podem levar à estagnação e desviar-nos do nosso caminho. Busque sempre aprimorar e construir sobre o que já foi alcançado, em vez de reconstruir do zero. Ao seguir essas diretrizes, você ajudará a preservar a essência do projeto e a garantir que nosso trabalho coletivo continue evoluindo de forma produtiva e reconhecível. + +## 1. Introdução ao Projeto + +- **Objetivo**: O "Pet Journal" é uma ferramenta de gerenciamento para a vida dos pets, ajudando no controle de vacinas, vermífugos, rações, e outros aspectos importantes do cuidado animal. + +- **Público-alvo**: Direcionado a donos de pets que desejam manter um controle organizado e acessível sobre a saúde e bem-estar de seus animais. + +## 2. Configuração do Ambiente de Desenvolvimento + +- **Pré-requisitos**: + - **Android Studio** (versão mais recente) - (Giraffe | 2022.3.1) + - **Kotlin SDK** (min: 24, max: 34) + - **Ndk Version**: 23.1.7779620 + - **Gradle:** 8.1.3 +- **Configuração Local**: + 1. Clone o repositório do projeto. + 2. Abra o projeto no Android Studio. + 3. Permita que o Android Studio sincronize o projeto com os arquivos Gradle. + 4. Configure um emulador ou conecte um dispositivo que suporte Android SDK versão 24 até 34. + 5. Execute o projeto para verificar se tudo está funcionando. + +## 3. Arquitetura do Aplicativo + +- **Visão Geral da Arquitetura**: MVVM para separação da lógica de negócios e interface do usuário. + + ![arquitetura-basic.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/13b05a7f-afe4-466f-8cb3-8e753fffb0dc) + +- **Diagrama da Arquitetura expandido**: + + ![arquitetura-Cópia do arquitetura.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/4b80e624-e101-42aa-9708-0565b4f99d54) + +- **Organização das pastas:** + - **Modulos** : + + ![modulos.png](https://github.com/PetJournal/petjournal.android/assets/42920754/3ccdde18-4ae3-4717-993b-6144b4857322) + + - **App, Domain, Data, Database** : + ++ + + + +
+ + +## 4. Telas e seus diagramas de funcionamento +Nesta seção, você encontrará informações detalhadas sobre as diferentes telas do nosso aplicativo e sobre seus funcionamentos. +- [Splash](doc/screens/splash_screen.md) +- [Login](doc/screens/login.md) +- [Cadastro](doc/screens/cadastro.md) +- [Esqueceu a senha](doc/screens/esqueceu_a_senha.md) +- [Aguardando código](doc/screens/aguardando_codigo.md) +- [Troque a senha](doc/screens/troque_a_senha.md) +- [Ambiente do usuário](doc/screens/ambiente_do_usuario.md) +- [Tela padrão inicial](doc/screens/tela_padrao_inicial.md) +- [Tela padrão espécie](doc/screens/tela_padrao_especie.md) +- [Tela padrão nome e gênero](doc/screens/tela_padrao_nome_genero.md) + + +## 5. Padrões de Design e Melhores Práticas + Utilizamos os recursos a baixo em nosso app, o que torna importante conhecer tais padrões. +- [FormEvent](doc/FormEvent.md) +- [FormState](doc/FormState.md) +- [FormState e FormEvent](doc/FormStateAndFormEvent.md) + +## 6. Integração com Backend + +- A API que estamos usando é do próprio projeto, criada pela equipe de backend, para saber mais a respeito, por favor, visite o repositório do projeto: [Backend](https://github.com/PetJournal/petjournal.api) + + +## 7. Testes + +- **Testes Unitários:** + - **Objetivo:** Testar partes individuais do código (funções, métodos) de forma isolada. + - **Como Fazemos:** Utilizamos JUnit, Mockk para testes unitários. Mock objects são usados para simular dependências externas. + - **Benefícios:** Ajuda a encontrar bugs cedo, facilita a manutenção e melhora a qualidade do código. +- **Testes Instrumentados:** + - **Objetivo:** Testar componentes do aplicativo no ambiente de um dispositivo Android real ou emulador. + - **Como Fazemos:** Utilizamos Espresso para simular interações do usuário com a interface gráfica. + - **Benefícios:** Garante que a interface do usuário funcione bem e identifica problemas de integração e performance. +- **Boas Práticas:** + - Automatizamos os testes para integração contínua. + - Buscamos alta cobertura de código, mas também focamos na qualidade dos testes. + - Documentamos os testes claramente para facilitar a compreensão e manutenção. +- **Conclusão:** +Nossa abordagem de teste ajuda a manter a qualidade e estabilidade do software, facilitando a contribuição de novos integrantes e a manutenção do projeto. + +## 8. Gerenciamento de Dependências + +- **Bibliotecas**: + 1. **Coil:** Biblioteca de carregamento de imagens para Kotlin, otimizada para desempenho e eficiência. + 2. **Koin:** Framework de injeção de dependência leve para Kotlin. + 3. **Room:** Biblioteca de abstração de banco de dados do Android, que facilita o acesso ao SQLite. + 4. **Retrofit:** Cliente HTTP tipo-safe para Android e Java. + 5. **Navigation:** Componente do Android Jetpack para facilitar a navegação entre telas. + 6. **Material Design You:** Versão mais recente do Material Design, com foco em personalização e adaptabilidade. + 7. **Compose:** Toolkit moderno de UI do Android para criar interfaces nativas com menos código. + 8. **Coroutines:** Recurso do Kotlin para programação assíncrona e não bloqueante. + +## 9. Contribuindo + +- **Como Contribuir**: + 1. **Explore o Repositório:** Acesse o repositório no GitHub, leia atentamente o 'README', para compreender as diretrizes do projeto. + 2. **Fork e Clone:** Faça um fork do projeto para sua conta no GitHub e clone-o para seu ambiente de desenvolvimento local. + 3. **Identifique Oportunidades de Contribuição:** Examine as issues abertas para encontrar problemas que você pode resolver ou áreas onde pode melhorar a documentação ou o código. + 4. **Faça suas Alterações:** Trabalhe nas mudanças localmente, mantendo-se fiel às práticas e padrões de codificação do projeto. + 5. **Envie um Pull Request:** Após finalizar suas alterações, envie um pull request para o repositório original com uma descrição clara do que foi modificado. + 6. **Aguarde Feedback:** Esteja aberto para receber feedback dos mantenedores do projeto e pronto para fazer ajustes em seu pull request conforme necessário. +- **Padrões de Código**: Convenções de nomenclatura, formatação, uso de linters. + 1. **Comentários e Documentação:** Escreva comentários claros no código para explicar a lógica complexa e mantenha a documentação atualizada para facilitar a compreensão e colaboração. + 2. **Princípios de Design de Código:** Siga princípios como SOLID para estruturar o código de forma coesa, DRY para evitar repetições, e KISS para manter a simplicidade. + 3. **Padrões de Arquitetura:** Utilize padrões como MVVM para organizar o código de forma lógica, facilitando manutenção e expansão. + 4. **Revisão de Código:** Implemente revisões de código regulares para garantir a qualidade, aderência aos padrões e promover o aprendizado entre os desenvolvedores. + 5. **Testes Unitários e Integrados:** Encoraje a escrita de testes para validar individualmente cada componente e suas integrações, assegurando a robustez do software. + 6. **Gerenciamento de Dependências:** Mantenha as dependências bem gerenciadas e atualizadas para evitar conflitos e vulnerabilidades. + 7. **Tratamento de Erros:** Adote uma abordagem consistente para o tratamento de erros, garantindo que o sistema se comporte de maneira previsível e segura. + 8. **Segurança:** Siga as melhores práticas de segurança no código para prevenir vulnerabilidades, como injeção de SQL e vazamento de dados, sempre procure compreender a ação que esta realizando para evitar problemas neste quesito. + 9. **Performance:** Otimize o código para melhorar a performance, considerando aspectos como tempo de execução e consumo de recursos, para isso, não há problema em utilizar ferramentas de inteligência artificial para otimizar o código e o seu tempo, desde que compreenda o que foi feito e saiba explicar. + +## 10. FAQs e Solução de Problemas + +- **Perguntas, dúvidas ou problemas**: Sinta-se a vontade para abrir uma essue [Clicando aqui](https://github.com/PetJournal/petjournal.android/issues) + +## Contribuições + + + + + + + + + + + + + + + +## Licença + +Este projeto é licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes. From 34c8095d314b495fbd2774d2cf6232991fb52db1 Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:55:51 -0300 Subject: [PATCH 8/8] update documentation --- README.md | 29 +++---------------- doc/architecture/architecture.md | 22 ++++++++++++++ doc/{ => pattern}/FormEvent.md | 0 doc/{ => pattern}/FormState.md | 0 .../FormStateAndFormFormEvent.md | 0 5 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 doc/architecture/architecture.md rename doc/{ => pattern}/FormEvent.md (100%) rename doc/{ => pattern}/FormState.md (100%) rename doc/{ => pattern}/FormStateAndFormFormEvent.md (100%) diff --git a/README.md b/README.md index 36502cc3..ac4a3043 100644 --- a/README.md +++ b/README.md @@ -32,28 +32,7 @@ Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusia 5. Execute o projeto para verificar se tudo está funcionando. ## 3. Arquitetura do Aplicativo - -- **Visão Geral da Arquitetura**: MVVM para separação da lógica de negócios e interface do usuário. - - ![arquitetura-basic.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/13b05a7f-afe4-466f-8cb3-8e753fffb0dc) - -- **Diagrama da Arquitetura expandido**: - - ![arquitetura-Cópia do arquitetura.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/4b80e624-e101-42aa-9708-0565b4f99d54) - -- **Organização das pastas:** - - **Modulos** : - - ![modulos.png](https://github.com/PetJournal/petjournal.android/assets/42920754/3ccdde18-4ae3-4717-993b-6144b4857322) - - - **App, Domain, Data, Database** : - -- - - - -
+- [Architecture](doc/architecture/architecture.md) ## 4. Telas e seus diagramas de funcionamento @@ -72,9 +51,9 @@ Nesta seção, você encontrará informações detalhadas sobre as diferentes te ## 5. Padrões de Design e Melhores Práticas Utilizamos os recursos a baixo em nosso app, o que torna importante conhecer tais padrões. -- [FormEvent](doc/FormEvent.md) -- [FormState](doc/FormState.md) -- [FormState e FormEvent](doc/FormStateAndFormEvent.md) +- [FormEvent](doc/pattern/FormEvent.md) +- [FormState](doc/pattern/FormState.md) +- [FormState e FormEvent](doc/pattern/FormStateAndFormEvent.md) ## 6. Integração com Backend diff --git a/doc/architecture/architecture.md b/doc/architecture/architecture.md new file mode 100644 index 00000000..18f9d6dc --- /dev/null +++ b/doc/architecture/architecture.md @@ -0,0 +1,22 @@ + +- **Visão Geral da Arquitetura**: MVVM para separação da lógica de negócios e interface do usuário. + + ![arquitetura-basic.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/13b05a7f-afe4-466f-8cb3-8e753fffb0dc) + +- **Diagrama da Arquitetura expandido**: + + ![arquitetura-Cópia do arquitetura.drawio.svg](https://github.com/PetJournal/petjournal.android/assets/42920754/4b80e624-e101-42aa-9708-0565b4f99d54) + +- **Organização das pastas:** + - **Modulos** : + + ![modulos.png](https://github.com/PetJournal/petjournal.android/assets/42920754/3ccdde18-4ae3-4717-993b-6144b4857322) + + - **App, Domain, Data, Database** : + ++ + + + +
diff --git a/doc/FormEvent.md b/doc/pattern/FormEvent.md similarity index 100% rename from doc/FormEvent.md rename to doc/pattern/FormEvent.md diff --git a/doc/FormState.md b/doc/pattern/FormState.md similarity index 100% rename from doc/FormState.md rename to doc/pattern/FormState.md diff --git a/doc/FormStateAndFormFormEvent.md b/doc/pattern/FormStateAndFormFormEvent.md similarity index 100% rename from doc/FormStateAndFormFormEvent.md rename to doc/pattern/FormStateAndFormFormEvent.md