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.
-
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.
- 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:
- Clone o repositório do projeto.
- Abra o projeto no Android Studio.
- Permita que o Android Studio sincronize o projeto com os arquivos Gradle.
- Configure um emulador ou conecte um dispositivo que suporte Android SDK versão 24 até 34.
- Execute o projeto para verificar se tudo está funcionando.
Nesta seção, você encontrará informações detalhadas sobre as diferentes telas do nosso aplicativo e sobre seus funcionamentos.
- Splash
- Login
- Cadastro
- Esqueceu a senha
- Aguardando código
- Troque a senha
- Ambiente do usuário
- Tela padrão inicial
- Tela padrão espécie
- Tela padrão nome e gênero
- Tela padrão raça e porte
- Tela padrão data de Nascimento
Utilizamos os recursos a baixo em nosso app, o que torna importante conhecer tais padrões.
- 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
- 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.
- Bibliotecas:
- Coil: Biblioteca de carregamento de imagens para Kotlin, otimizada para desempenho e eficiência.
- Koin: Framework de injeção de dependência leve para Kotlin.
- Room: Biblioteca de abstração de banco de dados do Android, que facilita o acesso ao SQLite.
- Retrofit: Cliente HTTP tipo-safe para Android e Java.
- Navigation: Componente do Android Jetpack para facilitar a navegação entre telas.
- Material Design You: Versão mais recente do Material Design, com foco em personalização e adaptabilidade.
- Compose: Toolkit moderno de UI do Android para criar interfaces nativas com menos código.
- Coroutines: Recurso do Kotlin para programação assíncrona e não bloqueante.
- Como Contribuir:
- Explore o Repositório: Acesse o repositório no GitHub, leia atentamente o 'README', para compreender as diretrizes do projeto.
- Fork e Clone: Faça um fork do projeto para sua conta no GitHub e clone-o para seu ambiente de desenvolvimento local.
- 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.
- Faça suas Alterações: Trabalhe nas mudanças localmente, mantendo-se fiel às práticas e padrões de codificação do projeto.
- 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.
- 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.
- 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.
- 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.
- Padrões de Arquitetura: Utilize padrões como MVVM para organizar o código de forma lógica, facilitando manutenção e expansão.
- 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.
- Testes Unitários e Integrados: Encoraje a escrita de testes para validar individualmente cada componente e suas integrações, assegurando a robustez do software.
- Gerenciamento de Dependências: Mantenha as dependências bem gerenciadas e atualizadas para evitar conflitos e vulnerabilidades.
- Tratamento de Erros: Adote uma abordagem consistente para o tratamento de erros, garantindo que o sistema se comporte de maneira previsível e segura.
- 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.
- 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.
- Perguntas, dúvidas ou problemas: Sinta-se a vontade para abrir uma essue Clicando aqui
![gus](https://private-user-images.githubusercontent.com/42920754/290505461-03f445fb-d46e-455c-96fd-9aea840228a1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDU0NjEtMDNmNDQ1ZmItZDQ2ZS00NTVjLTk2ZmQtOWFlYTg0MDIyOGExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAzMTEyNDJmOWJhZWFlMDcxZTI5ZTY1MWNhMjVjOWU2N2E0MDhkMGE0OWE4NjM2M2M4ZWIwZWJjZTIxNTc5ZDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.1IWqfd-BPA_0nKbCeuIY_lxsmDxmeX6lTFzDea1eO7A)
![gus](https://private-user-images.githubusercontent.com/42920754/290503514-0066a0c4-f87f-4e9c-bd89-d60be8399d7a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDM1MTQtMDA2NmEwYzQtZjg3Zi00ZTljLWJkODktZDYwYmU4Mzk5ZDdhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyODcyZmQ4MjdhYWUyOWY1MzQwYjk4MWU5Mzc5NjZlNzg5ZGYzZDViMjhjZDMwYmRhZGY0MTk2NjY0YWFhZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.E2y0k1Kgf4zHXtfWzIJb5YR9z0cEPvmsMN1yM2FQFOk)
![luc](https://private-user-images.githubusercontent.com/42920754/290503522-558455ec-e37d-4721-8313-8f6936879ab6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDM1MjItNTU4NDU1ZWMtZTM3ZC00NzIxLTgzMTMtOGY2OTM2ODc5YWI2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM5ZDE2OTY4OGNjYzU4NmE1MWYzNzJjMmYxZTM1NWFhOGY1NzMyYTllNzczNzQ3MzI0MmFlMGE5ZmJhMjU4ZWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.dh9uZpijjYqhfIOi3SiQQiePA37CBPEEsoVnJAnIO3Q)
![vin](https://private-user-images.githubusercontent.com/42920754/290503530-9defc5c5-103d-40e5-9cb3-ca3cf995543e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDM1MzAtOWRlZmM1YzUtMTAzZC00MGU1LTljYjMtY2EzY2Y5OTU1NDNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBhZWIwYTg0MTRkZTUxNzZlMWQxNDY3MDIzMjY4NDkzODlhMWVlYjg1YmFlN2VkMmYyMzVhMDFmMzdiOGU0NDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KNR50dvGwMqzbkt-YIsJjehq-OOL2FQLNjXgtlz6zqM)
![vit](https://private-user-images.githubusercontent.com/42920754/290503532-59311cd1-c5de-4764-88f9-ad8b7b0b177b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDM1MzItNTkzMTFjZDEtYzVkZS00NzY0LTg4ZjktYWQ4YjdiMGIxNzdiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTllYjg5ZDFjMWExYzQ1YTAxYjcwMTU0MTlkYWFjNzU5ZTIyN2RhMGY2OTQzNTRlZGI0ZmYzNGJhOGZjZWU4MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7PgpAFL_GKaqDB4kZrsGpD8GebMIv_-Lmn_c3rRnPeo)
![gel](https://private-user-images.githubusercontent.com/42920754/290503537-c5204a6d-1dbf-4ecc-9e6d-9111cd119cf2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE2MTIzNDUsIm5iZiI6MTcyMTYxMjA0NSwicGF0aCI6Ii80MjkyMDc1NC8yOTA1MDM1MzctYzUyMDRhNmQtMWRiZi00ZWNjLTllNmQtOTExMWNkMTE5Y2YyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIyVDAxMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZiYTZmODBjNWM5NDFhODVlYzhhMjBmMDY4MTZhNTFhYzg5ZmYwZjlkZjZmY2JiNzM4ZTY4Nzc0OTIyNmY4OGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.dPB9MSDjQu4CE6_tqOu6E7TCC4G8WPElR0v9Pr5iPMo)
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.