Git Product home page Git Product logo

webplatform's Introduction

Por uma boa causa (Plataforma Rails + React)

Bem vindo ao projeto Boa causa, neste repositório você irá encontrar o código-fonte para o a plataforma web do projeto.

Link oficial: http://boacausa.org/

Link para testes: http://porumaboacausa.herokuapp.com

Setup

Requirements

Note: both docker and rbenv are optional, they are used to install the postgres database and ruby on the next steps. Feel free to setup the database and ruby on your own if you like.

Installation

docker-compose up -d
rbenv install ruby 3.0.3
rbenv local 3.0.3
gem install bundler
bundler install
rails db:setup
yarn install
cp .env.sample .env

Starting application

rails s
# In a different terminal tab
./bin/webpack-dev-server

Open http://localhost:3000/

Run tests

bundle exec rspec spec # rails tests
yarn test # react tests

Quero contribuir

Quer contribuir como desenvolvedor no projeto? Da uma olhada nas nossas issues

Roadmap

Ideia de primeira entrega:

  • Página de listagem de ONGs (primeiramente ONGs que conhecemos e validamos)
  • Possíbilidade de fazer doações por meio de pagamento online para essas ONGs
    • Estamos pensando em formas de fazer com que essas doações sejam transparentes, pois a idea é estimular as pessoas a doarem dinheiro de forma segura sabendo que é utilizado para a boa causa dos animais
  • Página de listagem de pets para adoção, pets os quais são cadastrados por voluntário dessas ONGs
  • Uma página administrativa para voluntários das ONGs
  • Opção para solicitar adoção de pets, contendo termo de compromisso e podendo ser administrado pelos voluntários das ONGs

webplatform's People

Contributors

carolinesalib avatar dependabot[bot] avatar kellynvd avatar nelsonmfinda avatar sullyvannunes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

webplatform's Issues

Adicionar feature de like no post de adoção

Nossa nova versão de card para adoção tem um botão na barra de baixo há esquerda para que possa ser possível dar um like na postagem.

image

  • Adicionar botão de like conforme layout
  • Salvar o like por usuário na base de dados
  • Criar uma página ou filtro para poder procurar por pets que tiveram like pelo usuário
  • Cachear essa informação no front-end para não consumir muitos dados móveis do usuário
  • Considerar uso de graphql com apollo para otimização do cache (se valer a pena o esforço)

Processo de registro de adoção por um usuário logado e notificações

Objetivo

Quando um usuário logado registrar o interesse em um pet, o processo deve funcionar da seguinte maneira:

  • Quando o usuário clicar no botão, devemos emitir a mensagem de sucesso para ele informando o seguinte: "Que legal! Você é mais um terráqueo agindo por uma boa causa! Em breve os responsáveis do seu futuro amiguinho entrarão em contato.
  • Quando a pessoa confirmar que tem interesse, precisamos que ela auto declare que tem algumas condições mínimas para ter um animal: Será um "Aceito os termos" com alguns tópicos que a ONG piloto ficou de nos enviar para colocarmos no processo.
    • Criado issue separada para isso: #112
  • Na área de administração da ONG, criar uma seção onde seja possível consultar os pedidos de adoção, constando Nome do interessado, Telefone, E-mail, Pet escolhido e Data da solicitação.
  • Na área de administração, exibir uma notificação sempre que alguém fazer um pedido de adoção pela página. Sugestão "O usuário Tiago Giusti acabou de registrar interesse em um pet da sua ONG". Ou, se quiser e não for complexo, já colocar o nome do pet na mensagem. Ao clicar na mensagem, levar para a página que lista os pedidos de adoção efetuado.
    • Criado issue separada para isso: #113

Resultado
Screenshot dos cards de adoção
image

Screenshot da página de interessados em adoção
image

Registro de pessoas e empresas doadoras e exibição de seu perfil público como doadores

  • Registrar as pessoas físicas e jurídicas que fizeram algum tipo de doação: financeira, ração, medicamentos, etc.
  • Para pessoas físicas, podemos ver uma forma de marcar ela como doadora, que pode ser o Administrador da ONG ou a própria pessoa indicar que é doadora.
  • No caso de empresas, permitir que o admin cadastre empresas que doam com a logo, nome e cidade.
  • As pessoas podem autorizar serem exibidas junto a ONG, para serem conhecidas. As empresas, também dar um destaque especial, impulsionando mais doações;

Obs.: Notes oriundas da meeting com a ONG Amigo Bicho em Abril/2018.

Rever como será salvo a idade/data de nascimento do pet

Hoje salvamos um número no cadastro de pets que representa quantos anos o pet tem. Porém em alguns casos o pet pode ter apenas "meses" ou podemos não saber a idade.

Perguntas:

  • Devemos ter a data de nascimento do pet?
  • Devemos salvar uma idade fixa do pet (como fazemos hoje)?

Este card tem o propósito de discutir a melhor forma de guardarmos essas informações. Não sei ao certo se devemos ter o campo data de nascimento ou idade ou mesmo os dois.

Nova versão do front-end usando ReactJs

Por quê?

  • Venho encontrando algumas dificuldades de manter o código limpo e testável usando JQuery com as views do rails
  • Com ReactJs vamos poder reutilizar componentes JS no código inteiro, mantendo consistência
  • Este é o melhor momento para fazer isto pois temos algumas tarefas de validação front-end pendente e o novo layout ainda está sendo desenhado pela UILab, por tanto é melhor preparar o terreno antes de fazer todas essas melhorias na UI

Como:

  • Adicionado webpacker para poder trabalhar com o React dentro do Rails
  • Criar todas as views em react utilizando os mesmos estilos
    • A ideia é que depois seja removido o bootstrap e feito tudo a limpo usando o layout novo e Flexbox
  • Adicionar alguns testes de front-end como modelo (pode ser follow up)

Páginas que serão reescritas:

  • Site

  • Listagem de ONGs

  • Listagem de ONGs -> Saiba mais

  • Adoção

  • Página Inicial

  • Login

  • Reset Password

  • Novo cadastro

  • Área da ONG

  • Ongs index

  • Ongs edit/new

  • Pets index

  • Pets edit/new

  • Usuários index

  • Usuários edit/new

Mostrar somente ONGs relacionadas ao usuário no cadastro de usuário

Atualmente o cadastro de usuários fica disponível para qualquer pessoa, podendo esta relacionar o novo usuário com uma ou mais ONGs.

  • Alterar para que só apareça as ONGs relacionadas ao current_user na hora de cadastrar novos usuários (Admin tem acesso a todas);
  • O campo ONG deve ser obrigatório para criação de um usuário do grupo de permissões "Ngo";
  • Apenas usuários do grupo de ONGs devem ter a opção de relacionar com ONGs;
    • Obs.: Não faz sentido selecionar ONG para admin, pois admin tem acesso a todas as ONGs;
    • Obs.2: Não faz sentido selecionar ONG para usuário sem grupo de permissões pois este não tem acesso a área administrativa;

Imagem da parte de seleção da ONG:
image.png

Sugestões para a página "Adote" e inclusão de botão Quero adotar

Sugestões para a página "Adote"

  • Acredito que faça sentido ter no mínimo em cada card: Foto, Nome, Descrição, Idade e Sexo. Penso que a Idade e Sexo poderiam ser usado uma palavra com label colorido daqueles do boostrap.
  • Pensei que no rodapé do card podemos ter um botão de ação para registrar o interesse, chamado "Quero adotar". E caso o usuário não esteja logado, podemos exibir uma mensagem em cinza (no lugar daquela data que está ali atualmente): "Faça login e adote on-line".

Obs.: não tenho sugestões melhores para o topo, mas se desejar, pode reduzir o tamanho e frases. Se precisar, posso ajudar quando você propor um novo tamanho.

Ajustar para página de edição de usuário para não dar not_found

Hoje ao editar o usuário atual e remover o grupo admin do mesmo, ao recarregar a página de listagem de usuários a mesma retorna mensagem de não encontrada.

image.png

Isto ocorre pois usuários que não são admin não tem permissão de acessar essa tela.

  • Corrigir para que em caso de edição, se o usuário perder acesso a página atual redirecionar para uma outra página na qual ele terá acesso.

Alterar página de listagem de ONGs para prever ações de doação manual e eletrônica (paypal, etc)

Na página inicial (que vai ser chamada SOBRE), terá um link para a página de ONGS e quando esta página for exibida, uma lista de ONGs deve ser exibida. Segue abaixo as instruções sugeridas, ficando livre o dev para encontrar uma melhor solução:

  • Ter uma seção com um título e descrição, antes da listagem das ONGS. O título pode ser "Conheça as ONGs que fazem parte", e descrição "Encontre aqui uma ONG para acompanhar suas atividades, consultar sua situação financeira e fazer doações.

  • Ter uma lista de ONGs onde exiba os seguintes dados abaixo em cards retangulares. (obs.: não precisa ter o nome "Título", conforme coloquei abaixo, apenas o valor direto vindo do cadatro da ONG. Coloquei as identificações apenas para saber como organizar os tamanhos de fontes, layout etc)

  • Título: Nome da ONG, com o avatar (imagem) da ONG, podendo ser quadradinho.

  • Descrição: campo Descrição, podendo ser um texto mais em cinza. Da Amigo Bicho erá o seguinte valor: ONG de proteção animal apartidária, sem fins lucrativos, sustentada por doações voluntárias, composta de cidadãos voluntários.

  • E-mail

  • Telefone

  • Cidade/UF.

  • Label colorido verde informando "Atuando desde 2010", pegando o year() da data de início do cadastro da ONG.

  • Ter uma seção ou linha de divisão onde possamos especificar assim: "Como colaborar com esta ONG?"

  • Ter botões de ação para doação normal e via paypal. Penso que pode ser "Doe via depósito ou transferência" ou "Doe on-line agora!". Os botões podem ter cores diferentes ou ícones juntos para identificar que um é doação manual e outro é doação eletrônica (e preferida e sugerida por nós).

  • Para a doação manual, o botão pode abrir uma modal onde contenha os dados do campo "Dados bancários" do cadastro da ONG. Para a doação via paypal, leva o usuário para a página do Paypal.

  • Incluir um botão ou ícone onde leva o usuário para a URL (nova aba) do Portal da transparência. Penso que pode ser algo como "Acompanhe nossos gastos" ou "Transparência da ONG"

Obs.: futuramente, podemos ver para ter uma ação onde eu posso dizer "Ver pets para adoção" e isto me levar para a página de pets, filtrando apenas os pets desta ONG. (sonhando aqui haha)

Melhorar js para não repetir máscara

  • Remover código duplicado da máscara de telefone js;
  • Hoje os scripts se encontram nas views de ngo/form e registration/new;
  • Adicionar limite de 15 caracteres e remover da view;

Implementar nova página da ONG

Implementar o novo layout da página de ONGs, incluindo:

  • Listagem de ONGs
  • Página da ONG
  • Layout responsivo

Initial mockup
image

Validações tela de login

Colocar mensagem de validação na tela de login.
Quando digito a senha incorreta não aparece nenhuma mensagem informando

  • Sempre que o login ou senha falhar deve ser mostrado a mesma mensagem:
    • "Email ou senha inválidos."
  • Alterar o nome "Password" para "Senha" na tela de sign-in

Relacionar opções de adoção com ongs

Do jeito que está hoje, os pets cadastrados não estão relacionados com nenhuma ONG.

  • Adicionar relação entre pets e ONGs;
  • Só mostrar Pets da mesma ONG que o usuário na listagem de pets da página administrativa;
    • Usuários admin podem ver todos os pets;
  • Adicionar campo obrigatório de de ONG ao registrar um Pet;
  • Após adicionar em produção, migrar os pets cadastrados sem ong para uma ong aleatória;

Permitir cadastrar usuários

  • Adicionar uma aba de usuários dentro da área administrativa;
  • Permitir que membros com permissão admin possam ver todos os usuários e cadastrar novos usuários;

Doações no Paypal via boleto e cartão de crédito sem necessidade de criar uma conta

Garantir que as doações do Paypal sejam por boleto e cartão de crédito e tentar simplificar para evitar o cadastro no Paypal.

Avaliar como desativar para o paypal não obrigar a pessoa a fazer um cadastro. Isto pode ser um problema para pessoas comuns. Mas pelo que pesquisei [1], isto só é possível em uma conta business.

[1] https://pt.stackoverflow.com/questions/27076/fazer-pagamento-no-paypal-sem-obrigar-o-cliente-a-registar-sem-conta

Implementar nova página inicial

Mockap atualizado do figma:

image

Resultado

  • Imagens nos comentários
  • Ainda não suporta bem dispositivos de tamanhos médios como tablets
  • Talvez a imagem dos pets na versão mobile esteja meio embaçada e teremos que exportar imagens menores (avaliar)

Integração com Olx.com

Hoje na Olx.com existe a opção de doação, pode integrar os dados com o portfolio de doação do Boa Causa.

Sugestão:

  • Verificar se a olx tem alguma API pública
  • Fazer um crawler e consumir os dados com por geolocalização

Só me dizem se é possivel e se o projeto ainda esta rolando.

Relação entre usuários e ongs

  • Implementar uma relação das ongs e dos usuários que tem acesso a estas;
  • Permitir cadastrar usuários para a ong;
    • No cadastro de usuários vai ter checkboxs com as ONGs relacionadas ao usuário permitindo adição/remoção;
    • Usuários admin terão acesso a todas as ONGs;
  • Mostrar somente dados da ong que o usuário tem relação na página administrativa;

Erro ao criar a base de dados

image
@carolinesalib não seria melhor usar a configuração padrão do Rails 5.2 para o arquivo boacausa-webapp/config/database.yml?
Já tenho um usuário na minha máquina, e a senha sugerida não atende os requisitos da minha configuração local.

Conflicto com a versão do Ruby

A versão do Ruby informado no README(Ruby 2.5.1) é diferente da informada no arquivo .ruby-version que é 2.6.1. Qual versão usar?

Cadastro de usuários comuns e grupo de permissão

  • Ter grupo de permissões admin, ong, usuários normais;
  • Permitir realizar cadastro apenas de usuários normais pelo site;
  • O cadastro de usuários poderá ser via google, facebook ou cadastro;
  • Pessoas com permissão de usuário não terão acesso a página administrativa;

Registrar as pessoas físicas e jurídicas que fizeram algum tipo de doação: financeira, ração, medicamentos, etc. Para pessoas físicas, podemos ver uma forma de marcar ela como doadora, que pode ser o Administrador da ONG ou a própria pessoa indicar que é doadora. No caso de empresas, permitir que o admin cadastre empresas que doam com a logo, nome e cidade.

As pessoas podem autorizar serem exibidas junto a ONG, para serem conhecidas. As empresas, também dar um destaque especial, impulsionando mais doações;

Após a realização deste card, será possível seguir com as melhorias na página de adoção, permitindo usuários aplicarem para adotar animais, etc..

Adicionar feature de compartilhamento de post de adoção

Nossa nova versão de card para adoção tem um botão na barra de baixo há direita para que possa ser compartilhado esse post em redes sociais.

Veja na imagem:
image

  • Adicionar botão para compartilhar correspondendo ao layout
  • Deve ser possível compartilhar no facebook
  • Deve ser possível compartilhar no twitter
  • Deve ser possível copiar o link
  • Talvez mais opções de compartilhamento se a gente achar uma ferramenta pra ajudar com isso no npm

Área da ONG | Validações "Usuários"

Eu, enquanto usuário do grupo Admin, quero cadastrar novos usuários com as validações necessárias para que o cadastro seja válido.

  • Campos obrigatórios;
  • Validação de e-mail;
  • Máscara e validação de CPF;
  • Password segura;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.