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() + val state: LiveData = _state + + fun onEvent(event: ScreenEvent) { + when (event) { + is ScreenEvent.EventA -> { + // Lógica para o EventA + } + is ScreenEvent.EventB -> { + // Lógica para o EventB, utilizando event.data + } + is ScreenEvent.EventC -> { + // Lógica para o EventC, utilizando event.value + } + } + } + } + + ``` +3. **Emita eventos a partir da UI**: Na interface do usuário, emita os eventos apropriados em resposta às ações do usuário. + ```kotlin + @Composable + fun ScreenUI(viewModel: ScreenViewModel) { + Button(onClick = { viewModel.onEvent(ScreenEvent.EventA) }) { + Text("Acionar EventA") + } + TextField( + value = "", + onValueChange = { viewModel.onEvent(ScreenEvent.EventB(it)) } + ) + Slider( + value = 0f, + onValueChange = { viewModel.onEvent(ScreenEvent.EventC(it.toInt())) } + ) + } + ``` +### Como sei quando devo usar? + +Você deve usar `FormEvent` ou um padrão similar sempre que precisar gerenciar o estado de uma tela de forma eficiente, especialmente em formulários ou em interfaces onde as ações do usuário resultam em mudanças de estado. Esse padrão é particularmente útil em aplicações que utilizam Jetpack Compose, onde a eficiência na recomposição da UI é crucial. + +### Conclusão + +Usar `FormEvent` ajuda a manter uma arquitetura clara e reativa, facilitando o gerenciamento de estado e melhorando a performance da interface do usuário. + +--- + +Nota: Sinta-se à vontade para adaptar ou expandir este texto conforme necessário para nossa documentação! \ No newline at end of file diff --git a/doc/FormState.md b/doc/FormState.md new file mode 100644 index 00000000..68064fb0 --- /dev/null +++ b/doc/FormState.md @@ -0,0 +1,70 @@ +## **O que é o FormState?** + +O `FormState` é uma estrutura de dados utilizada para gerenciar o estado de formulários em aplicações que usam Jetpack Compose. Ele encapsula todos os dados relacionados ao formulário, como valores de campos, erros de validação e o estado de submissão. + +## **O que isso faz no código?** + +No código, `FormState` é responsável por: + +- Armazenar os valores de cada campo do formulário. +- Manter informações de erro para validação de campos. +- Controlar o estado geral do formulário, como se está pronto para ser enviado ou se está passando por validação. + +Essa abordagem centraliza a lógica de gerenciamento do estado do formulário, facilitando a manutenção e a atualização da UI conforme as mudanças de estado. + +## **Como devo utilizar em outras telas?** + +Para utilizar o `FormState` em outras telas, siga estes passos: + +1. **Defina um `FormState` para o seu formulário**: Crie uma classe que represente o estado do seu formulário. Por exemplo, para um formulário de login: + +```kotlin +data class LoginFormState( + val username: String = "", + val password: String = "", + val isError: Boolean = false +) +``` + +2. **Use o `FormState` no seu ViewModel**: No ViewModel, crie uma instância do `FormState` e use-a para controlar as mudanças no formulário. + +```kotlin +class LoginViewModel : ViewModel() { + var loginFormState by mutableStateOf(LoginFormState()) + private set + + // Lógica de atualização de estado +} +``` + +3. **Atualize o `FormState` com base em eventos da UI**: Use eventos para atualizar o estado. Por exemplo, quando o usuário altera um campo: + +```kotlin +fun onUsernameChanged(newUsername: String) { + loginFormState = loginFormState.copy(username = newUsername) +} +``` + +4. **Observe o `FormState` na UI**: Na UI, observe o `FormState` para refletir as mudanças e mostrar erros se necessário. + +```kotlin +@Composable +fun LoginForm(viewModel: LoginViewModel) { + val formState = viewModel.loginFormState + // Crie campos de texto e botões que utilizam formState +} +``` + +## **Como sei quando devo usar?** + +Você deve usar o `FormState` quando: + +- O formulário contém múltiplos campos de entrada e você precisa gerenciar seus estados de forma centralizada. +- É necessário realizar validações e mostrar erros nos campos de entrada. +- Você quer evitar recomposições desnecessárias da UI, atualizando apenas as partes necessárias do formulário. + +Utilizar o `FormState` ajuda a manter seu código organizado, facilita a leitura e a manutenção, e melhora o desempenho da UI no Jetpack Compose. + +--- + +Nota: Sinta-se à vontade para adaptar ou expandir este texto conforme necessário para nossa documentação! \ No newline at end of file diff --git a/doc/FormStateAndFormFormEvent.md b/doc/FormStateAndFormFormEvent.md new file mode 100644 index 00000000..d0319ea2 --- /dev/null +++ b/doc/FormStateAndFormFormEvent.md @@ -0,0 +1,88 @@ +# **Integração de FormState e FormEvent** + +## **Usando FormState e FormEvent Juntos** + +A combinação de `FormState` e `FormEvent` proporciona uma abordagem robusta e escalável para o gerenciamento de formulários em aplicações que utilizam Jetpack Compose. `FormState` gerencia o estado atual dos campos do formulário, enquanto `FormEvent` lida com as ações ou mudanças que ocorrem nos campos do formulário. + +## **Vantagens de Utilizar FormState e FormEvent em Conjunto** + +1. **Separação de Lógica e UI**: Ao usar `FormEvent` para tratar ações do usuário e `FormState` para manter o estado, você separa claramente a lógica de negócios da interface do usuário. Isso torna o código mais legível e fácil de manter. + +2. **Menos Erros de Estado**: Com eventos específicos para cada ação do usuário, você evita alterações inesperadas no estado, reduzindo a possibilidade de erros. + +3. **Desempenho Otimizado**: A utilização de eventos específicos minimiza as recomposições desnecessárias no Jetpack Compose, melhorando o desempenho da aplicação. + +4. **Flexibilidade e Escalabilidade**: Esse padrão facilita a adição de novos campos ou lógicas de validação ao formulário sem alterar significativamente a estrutura existente. + +## **Exemplo de Uso** + +Vamos considerar um formulário de cadastro simples. Primeiro, definimos o `FormState`: + +```kotlin +data class RegistrationFormState( + val username: String = "", + val email: String = "", + val password: String = "" +) +``` + +Em seguida, definimos os eventos do formulário: + +```kotlin +sealed class RegistrationFormEvent { + data class UsernameChanged(val username: String) : RegistrationFormEvent() + data class EmailChanged(val email: String) : RegistrationFormEvent() + data class PasswordChanged(val password: String) : RegistrationFormEvent() + object Submit : RegistrationFormEvent() +} +``` + +No ViewModel, gerenciamos o estado e lidamos com os eventos: + +```kotlin +class RegistrationViewModel : ViewModel() { + var formState by mutableStateOf(RegistrationFormState()) + private set + + fun onEvent(event: RegistrationFormEvent) { + when (event) { + is RegistrationFormEvent.UsernameChanged -> { + formState = formState.copy(username = event.username) + } + is RegistrationFormEvent.EmailChanged -> { + formState = formState.copy(email = event.email) + } + is RegistrationFormEvent.PasswordChanged -> { + formState = formState.copy(password = event.password) + } + is RegistrationFormEvent.Submit -> { + // Lógica de submissão do formulário + } + } + } +} +``` + +Na UI, usamos o estado e os eventos para construir o formulário: + +```kotlin +@Composable +fun RegistrationForm(viewModel: RegistrationViewModel) { + val state = viewModel.formState + + TextField( + value = state.username, + onValueChange = { viewModel.onEvent(RegistrationFormEvent.UsernameChanged(it)) }, + label = { Text("Username") } + ) + // Campos de e-mail e senha seguem o mesmo padrão +} +``` + +## **Conclusão** + +A integração de `FormState` e `FormEvent` oferece uma maneira organizada e eficiente de gerenciar formulários em aplicações Jetpack Compose. Esta abordagem melhora a manutenção, a escalabilidade e a performance da aplicação, facilitando a evolução e adaptação do código às necessidades futuras. + +--- + +Nota: Sinta-se à vontade para adaptar ou expandir este texto conforme necessário para nossa documentação! \ No newline at end of file From 9e465e42ba7ac80e6f58913644965a480d04f7f0 Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:10:48 -0300 Subject: [PATCH 3/8] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ac869c0c..9c4bd3cc 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,10 @@ Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusia ## 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 From ddc32b171ce64f5af055432b2bed521f99a4feb0 Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:24:27 -0300 Subject: [PATCH 4/8] update: organize --- README.md | 92 ++------------------------------------------------ doc/Screens.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 89 deletions(-) create mode 100644 doc/Screens.md diff --git a/README.md b/README.md index 9c4bd3cc..ddfeb5ad 100644 --- a/README.md +++ b/README.md @@ -56,95 +56,9 @@ Ao entrar em nosso projeto voluntário, valorizamos sua contribuição e entusia

-## 4. Detalhes das Telas - -- **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:** - - - - -- **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:** - - - - -- **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:** - - - - -- **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:** - - - - -- **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:** - - - - -- **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:** - - - - -- **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:** -- **Tela padrão nome e gênero:** - - **Diagrama UML:** - - **UX/Design:** - +## 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. diff --git a/doc/Screens.md b/doc/Screens.md new file mode 100644 index 00000000..35f7202a --- /dev/null +++ b/doc/Screens.md @@ -0,0 +1,87 @@ + +- **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:** + + + + +- **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:** + + + + +- **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:** + + + + +- **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:** + + + + +- **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:** + + + + +- **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:** + + + + +- **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:** +- **Tela padrão nome e gênero:** + - **Diagrama UML:** + - **UX/Design:** From b189a7d6fbd2f6d594e52a9039171710147132a2 Mon Sep 17 00:00:00 2001 From: Gustavo Oliveira <42920754+gusoliveira21@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:25:55 -0300 Subject: [PATCH 5/8] refactor readme --- README.md | 145 ------------------------------------------------------ 1 file changed, 145 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index ddfeb5ad..00000000 --- a/README.md +++ /dev/null @@ -1,145 +0,0 @@ - - -

- -

- - - -# 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 - - gus - - gus - - luc - - vin - - vit - - gel - - - -## 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 + + gus + + gus + + luc + + vin + + vit + + gel + + + +## 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