App de voto
Desafio de acampamento de código livre
App Heroku - https://neckers-voteapp.herokuapp.com
Este aplicativo foi construído na pilha Mern. Ele usa: MongoDB, Node, Express, React, React Router, Redux, Socket.io, Material-UI e Gráficos do Google. A interface do usuário pode ser usada em celular, tablet e desktop.
Observação :
- Os componentes do servidor e do cliente são isomórficos .
- A autenticação não usa cookie, mas uma mistura no cliente (na loja LocalStorage/Redux) e do servidor, por soquete.io, verifique.
- Pesquisas já votadas são salvas no localStorage
Histórias de usuário
- Como usuário autenticado, posso manter minhas pesquisas e voltar mais tarde para acessá -las.
- Como usuário autenticado, posso compartilhar minhas pesquisas com meus amigos.
- Como usuário autenticado, posso ver os resultados agregados das minhas pesquisas.
- Como usuário autenticado, posso excluir pesquisas que eu decido que não quero mais.
- Como usuário autenticado, posso criar uma pesquisa com qualquer número de itens possíveis.
- Como um usuário não autenticado ou autenticado, posso ver e votar nas pesquisas de todos.
- Como um usuário não autenticado ou autenticado, posso ver os resultados das pesquisas no formulário do gráfico. (Isso pode ser implementado usando o Chart.js ou o Google Gráficos.)
- Como usuário autenticado, se eu não gostar das opções em uma enquete, posso criar uma nova opção.
É um bug? Não, é um recurso!
Ok, eles não são realmente recursos, mas há algumas ações não boas , mas, para esse desafio, eu não me importo.
- Posso votar várias vezes se limpar meu armazenamento local ou fazer um acesso de outro dispositivo (ou eu vou no modo incógnito, etc.).
- Sim, porque, para acompanhar os votos, tenho que salvar algumas informações no lado do servidor e, com usuários sem login, tenho que fazer um trabalho muito duro para verificá -las. Então .. o banco de dados está em uma caixa de areia alimentada pelo MLAB e eu não quero estressá -lo mais.
- Não posso editar ou remover as opções após a publicação da pesquisa.
- Não, você não pode. Essas ações não estavam nas histórias de usuários.
- Não posso ter vários logins.
- Sim, toda vez que você faz um login, obtém uma
session_id diferente em ambos os lados: cliente e servidor.
- Não consigo editar meus dados pessoais, como e-mail, nick ou senha
- Não, você não pode. Essas ações não estavam nas histórias de usuários.
- Eu não posso mudar minhas preferências
- Sim, não gosto desse recurso de maneira especial, mas decidi não implementar uma ação de desfazer por alguns motivos de segurança.
process.env
- Mongoouri : Sua consulta para autenticar no servidor MongoDB
mongodb://<dbuser>:<dbpassword>@ds119508.mlab.com:19508/neckersbox - Node_env : por exemplo,
production . Nota : Isso deve ser o mesmo entre servidor e cliente.
Scripts
Para compilar ou executar este aplicativo, use Gulp e/ou NPM.
- Construição :
gulp build - Assista :
gulp watch ou npm run watch - Limpo :
gulp clean - Start Server :
gulp start ou npm run start-server Nota : Normalmente start-server npm run start-server-debug
Configuração do MongoDB
Para funcionar corretamente, este aplicativo precisa de um banco de dados MongoDB com duas coleções:
- Vote_users para salvar usuários assinados
- Vote_polls para salvar as pesquisas de usuários