fga-eps-mds/2020.1-GaiaDex-wiki

View on GitHub
docs/product_backlog/template_issues.md

Summary

Maintainability
Test Coverage
| title | description | acceptance criteria | extras |
| ----- | ----------- | ------------------- | ---- |
| 01 - Scannear planta | Eu como usuário quero scannear planta para adicionar à minha coleção. | O usuário poderá acessar a câmera do celular;O usuário poderá scannear a planta por meio da câmera do celular;O sistema deve identificar a planta scanneada;O sistema deve retornar ao usuário informações sobre a planta scanneada | O usuário deve poder decidir se deseja compartilhar com o app a foto que scanneou ou não (de forma que esta figuraria no Card daquela Planta);O usuário deve poder compartilhar a foto tirada em suas comunidades e linha do tempo |
| 02 - Visualizar minha coleção | Eu como usuário quero visualizar minha coleção para saber quais plantas eu possuo na minha coleção. | Visualizar widgets de todas as plantas coletadas;O widget deve mostrar o apelido da planta;O widget deve redirecionar para a tela de Minha Planta caso seja tocado;O widget deve mostrar ícone genérico de planta, acima do apelido da mesma;Visualizar mensagem de nenhuma planta coletada caso não existam plantas coletadas | O widget deve mostrar o nome comum da planta (abaixo do apelido);O widget deve mostrar um botão para "regar" e "fertilizar" a planta;Caso a planta ja tivera sido regada, o widget deve mostrar quanto tempo até que o usuário deva "regar" a planta, o mesmo vale para "fertilizar";O widget deve mostrar uma barra de "vida" da planta, de acordo com a saúde da mesma;O ícone (genérico) da planta deve se adequar a saúde da mesma (isto é: caso esteja doente, os galhos poderiam ficar secos etc) |
| 03 - Visualizar informações da Minha Planta | Eu como usuário quero visualizar informações da minha planta para que eu saiba mais sobre ela. | Visualizar nome dado pelo usuário a essa planta;Visualizar data de quando ela foi adicionada a coleção;O usuário deve poder alterar o apelido da planta;O usuário deve poder re-configurar regras de notificação para lembrá-lo de regar/fertilizar a planta;O usuário deve poder excluir a mesma |  |
| 04 - Cadastrar minha conta no aplicativo | Eu como usuário quero cadastrar minha conta no aplicativo para poder informar meus dados ao sistema. | O usuário deve fornecer o username/apelido desejado;O usuário deve fornecer o email;O usuário deve fornecer a senha;O usuário deve fornecer a confirmação de senha;O sistema deve validar os dados fornecidos pelo usuário;Em caso de invalidação, o sistema deve informar ao usuário quais dados não são válidos.;Em caso de invalidação, o sistema deve informar ao usuário o motivo pelo qual aquele dado não é válido. | O usuário poderá definir sua foto de perfil |
| 05 - Cadastrar/fazer login com conta Facebook | Eu como usuário quero cadastrar/fazer login com conta facebook para poder informar meus dados ao sistema. | O usuário poderá realizar login com Facebook.;O sistema deve pedir permissão ao usuário para acessar as informações do Facebook.;O sistema deve mostrar uma mensagem de erro caso o login não seja realizado. |  |
| 06 - Cadastrar/fazer login com conta Google | Eu como usuário quero cadastrar/fazer login com conta google para poder informar meus dados ao sistema. | O usuário poderá realizar login com Google.;O sistema deve pedir permissão ao usuário para acessar as informações do Google.;O sistema deve mostrar uma mensagem de erro caso o login não seja realizado. |  |
| 07 - Fazer login no aplicativo | Eu como usuário quero fazer login no aplicativo para acessar as demais funcionalidades do mesmo. | O sistema deve válidar os dados utilizados pelo usuário no login.;Em caso de falha de login por dados invalidos, o sistema deve informar que há dados invalidos (sem explicitar quais são).;Em caso de login valido, o sistema deve redirecionar o usuário à tela principal.;O sistema deve manter a sessão do usuário válida, até que ele decida deslogar. | O sistema deverá mostrar uma mensagem de boas-vindas |
| 08 - Fazer logout no aplicativo | Eu como usuário quero fazer logout no aplicativo para sair da minha conta. | O sistema deve invalidar a sessão do usuário;O sistema deve redirecionar o usuário à tela de login | O sistema deverá mostrar uma mensagem de despedida |
| 09 - Visualizar minha conta | Eu como usuário quero visualizar minha conta para saber informações da minha conta. | O usuário poderá visualizar o nome cadastrado;O usuário poderá visualizar o email cadastrado;O usuário poderá visualizar a foto de perfil utilizada;O usuário poderá visualizar o menu de configurações | O usuário poderá visualizar quantos amigos possui adicionado;O usuário poderá ver um com as fotos dos scans realizados (com sucesso) |
| 10 - Visualizar configurações da conta | Eu como usuário quero visualizar configurações da conta para personalizar de acordo com minhas preferencias. | O usuário poderá visualizar as Politicas de Privacidade do aplicativo;O usuário poderá visualizar os Termos de Uso;O usuário poderá visualizar botão de Ajuda;O usuário poderá visualizar o botão de Privacidade | O usuário poderá visualizar um botão de Definir Idioma |
| 11 - Alterar os dados cadastrados na minha conta | Eu como usuário quero alterar os dados cadastrados na minha conta para mantê-los atualizados. | O usuário poderá alterar seu username;O usuário poderá alterar seu email;O usuário poderá alterar sua foto de perfil;O usuário poderá alterar sua senha;O sistema deve validar as modificações fornecidas pelo usuário | O usuário poderá definir um vídeo/gif curto como "foto" de perfil |
| 12 - Deletar minha conta | Eu como usuário quero deletar minha conta para impedir o acesso a mesma permanentemente. | O sistema deve perguntar ao usuário se ele _realmente_ gostaria de deletar a conta ou não;O sistema deve invalidar a sessão do usuário;O sistema deve remover todos os dados pessoais do usuario do banco de dados | O sistema deve manter os tópicos e comentários nos fóruns (com a tag "usuario removido");O sistema deve remover os posts, comentários em posts (tanto em comunidades como no próprio feed) |
| 13 - Visualizar perfil de outro usuário | Eu como usuário quero visualizar perfil de outro usuário para que eu possa sanar minha curiosidade. | O usuário poderá visualizar o nome do outro usuário;O usuário poderá visualizar a foto de perfil do outro usuário |  |
| 14 - Bloquear outro usuário | Eu como usuário quero bloquear outro usuário para não visualizar absolutamente nada deste usuário. | O sistema deve perguntar ao usuário se ele _realmente_ gostaria de bloquear o outro usuário;O sistema deverá adicionar o outro usuário à lista de bloqueio deste usuário;O sistema deverá garantir que o usuário nunca verá nada que dê indicios da existencia do outro usuário (perfil, comentarios, posts...), e vice-versa |  |
| 15 - Criar tópico em um fórum de planta | Eu como usuário quero criar tópico em um fórum de planta para obter informações relativas a algo do meu interesse. | O usuário deve definir um titulo para o tópico;O sistema deve validar o titulo do tópico, de forma a garantir que este não está vazio;O usuário poderá inserir uma descrição do tópico | O usuário deve poder editar o estilo da descrição (tipo de fonte (título, subtitulo ou normal), negrito, sublinhado, tachado, mono-espaçado, centralizado, justificado e/ou alinhado à esquerda);O usuário deve poder adicionar imagens à descrição;O usuário deve poder adicionar hyperlinks à descrição |
| 16 - Editar tópico criado por mim | Eu como usuário quero editar tópico criado por mim para modificar um erro que eu tenha cometido. | O usuário poderá editar o nome do tópico;O usuário poderá editar o conteúdo do tópico;O sistema deve validar o titulo do tópico, de forma a garantir que este não está vazio | O sistema deve explicitar que aquele tópico foi editado (com tag '[editado]' por exemplo) |
| 17 - Deletar o tópico criado por mim | Eu como usuário quero deletar o tópico criado por mim para remover um tópico que me arrependo de ter criado. | O sistema deve perguntar ao usuário se ele _realmente_ gostaria de deletar o tópico ou não;O sistema deve deletar o tópico e todos os comentários realizados dentro do mesmo |  |
| 18 - Upvote e downvote em um tópico | Eu como usuário quero upvote e downvote em um tópico para julgar um tópico segundo meus padrões de qualidade. | O usuário, excetuando-se o criador do próprio tópico, poderá dar uma avaliação positiva ou negativa por intermedio de dois botões auto-explicativos;O usuário poderá desfazer qualquer uma das ações;O sistema deve mostrar a diferença (subtração) entre upvotes e downvotes |  |
| 19 - Criar comentário em um tópico | Eu como usuário quero criar comentário em um tópico para responder ao questionamento levantado pelo mesmo. | O sistema deve validar o conteúdo do comentario, de forma a garantir que este não está vazio | O usuário deve poder adicionar hyperlinks ao comentário;O usuário deve poder adicionar imagens ao comentário;O usuário deve poder editar o estilo da descrição (negrito, sublinhado, tachado, mono-espaçado) |
| 20 - Editar comentário que fiz em um tópico | Eu como usuário quero editar comentário que fiz em um tópico para modificar um erro que eu tenha cometido. | O sistema deve validar o conteúdo do comentario, de forma a garantir que este não está vazio | O sistema deve explicitar que aquele comentário foi editado (com tag '[editado]' por exemplo) |
| 21 - Remover um comentário que fiz em um tópico | Eu como usuário quero remover um comentário que fiz em um tópico para remover um comentário que me arrependo de ter feito. | O sistema deve perguntar ao usuário se ele _realmente_ gostaria de deletar o comentário ou não;O sistema deve trocar o conteudo da mensagem por algo explicativo (ex: "comentário removido pelo usuário");O sistema deve manter a existência dos comentários em resposta ao comentário removido |  |
| 22 - Upvote e downvote em um comentário | Eu como usuário quero upvote e downvote em um comentário para julgar um comentário segundo meus padrões de qualidade. | O usuário, excetuando-se o criador do próprio comentário, poderá dar uma avaliação positiva ou negativa por intermedio de dois botões auto-explicativos;O usuário poderá desfazer qualquer uma das ações;O sistema deve mostrar a diferença (subtração) entre upvotes e downvotes |  |
| 23 - Visualizar informações sobre a planta | Eu como usuário quero visualizar informações sobre a planta para aumentar meu conhecimento sobre a mesma. | O usuário poderá visualizar o nome da família desta planta;O usuário poderá visualizar o nome do gênero desta planta;O usuário poderá visualizar o nome da espécie desta planta;O usuário poderá visualizar o nome comum da planta;O usuário poderá visualizar uma imagem de “perfil” da planta | O usuário deve poder acessar links com informações complementares;O usuário deve poder visualizar os casos comuns de uso desta planta;O usuário deve poder visualizar a primeira pessoa no mundo que coletou-a;O usuário deve poder visualizar quantas vezes a planta ja fora "coletada" (no mundo, pelo app);O usuário deve poder visualizar o status de extinçao da planta (possíveis referencias: https://www.iucnredlist.org/, https://explorer.natureserve.org);O usuário deve poder visualizar potenciais usos culinários da planta (receitas), caso seja cabível;O usuário deve poder visualizar instruções de como cultiva-la;O usuário deve poder visualizar ícone indicando quanta exposição à luz (pouca/média/muita) a planta necessita;O usuário deve poder visualizar ícone indicando quantas vezes há de se regar a planta em média semanalmente;O usuário deve poder visualizar ícone indicando o tamanho/porte da planta (pequena...grande);O usuário deve poder visualizar fotos que outros usuários tiraram desta mesma planta;A foto de perfil da planta será de origem do site [unsplash.com](https://www.unsplash.com)) |
| 24 - Adicionar planta aos meus Favoritos | Eu como usuário quero adicionar planta aos meus favoritos para adicionar um atalho para utilizá-lo mais tarde. | O usuário deverá apertar em um botão no card de planta para adicionar a mesma aos favoritos;O sistema deverá enviar a referida planta a coleção de favoritos | O sistema deverá animar a ação de tocar na estrela (ou seja, na adição da planta aos favoritos) |
| 25 - Remover uma planta da minha coleção de favoritos | Eu como usuário quero remover uma planta da minha coleção de favoritos para remover um atalho que não uso mais. | O botão de enviar aos favoritos irá se transformar em botão de remover dos favoritos se a referida planta já estiver na coleção de favoritos;O sistema deverá remover a referida planta da coleção de favoritos | O sistema deverá animar a ação de tocar na estrela (ou seja, na remoção da planta dos favoritos) |
| 26 - Visualizar minha coleção de favoritos | Eu como usuário quero visualizar minha coleção de favoritos para facilitar o processo de navegação pelas páginas que mais visito. | O usuário poderá abrir os cards de planta diretamente da aba de favoritos;Cada widget das plantas adicionadas à coleção de favoritos deverá mostrar seu Nome Comum;Cada widget das plantas adicionadas à coleção de favoritos deverá mostrar seu nome científico;Cada widget das plantas adicionadas à coleção de favoritos deverá mostrar seu status de extinção;Cada widget das plantas adicionadas à coleção de favoritos deverá mostrar um botão que redireciona, também, ao card de planta | Cada widget das plantas adicionadas à coleção de favoritos deverá mostrar um botão de compartilhar (que compartilharia o link do card de planta) |
| 27 - Adicionar apelido à minha planta | Eu como usuário quero adicionar apelido à minha planta para que eu possa distinguir uma planta de outra (caso tenha multiplas da mesma especie). | O usuário deverá adicionar um apelido a sua planta após o processo de scanneamento da mesma;O usuário poderá alterar o apelido da planta a qualquer momento em sua coleção;O sistema deverá garantir que o apelido é válido | O sistema deverá sugerir nomes "divertidos" (como os que são gerados pela twitch.tv no link dos clips [ex: AgreeableLazyPangolinVoteYea]) ao usuário |
| 28 - Definir configurações de notificação | Eu como usuário quero definir configurações de notificação para que eu me lembre de cultivar minha planta. | O usuário deve poder configurar regras de notificação para lembrá-lo de regar/fertilizar a planta |  |