Aplicación de votación
Desafío de campamento de código gratuito
Aplicación Heroku - https://neckers-voteapp.herokuapp.com
Esta aplicación fue construida en Mern Stack. Utiliza: MongoDB, Node, Express, React, React Router, Redux, Socket.io, Material-UI y Google Charts. La interfaz de usuario se puede usar en dispositivos móviles, tabletas y de escritorio.
Nota :
- Los componentes del servidor y el cliente son isomórficos .
- La autenticación no usa cookie sino una mezcla en el cliente (en la tienda LocalStorage/Redux) y el servidor, por Socket.io, check.
- Las encuestas ya votadas se guardan en LocalStorage
Historias de usuarios
- Como usuario autenticado, puedo mantener mis encuestas y volver más tarde para acceder a ellas.
- Como usuario autenticado, puedo compartir mis encuestas con mis amigos.
- Como usuario autenticado, puedo ver los resultados agregados de mis encuestas.
- Como usuario autenticado, puedo eliminar las encuestas que decido que ya no quiero.
- Como usuario autenticado, puedo crear una encuesta con cualquier número de elementos posibles.
- Como usuario no autenticado o autenticado, puedo ver y votar sobre las encuestas de todos.
- Como usuario no autenticado o autenticado, puedo ver los resultados de las encuestas en forma de gráfico. (Esto podría implementarse utilizando Chart.js o Google Charts).
- Como usuario autenticado, si no me gustan las opciones en una encuesta, puedo crear una nueva opción.
¿Es un error? ¡No, es una característica!
Ok, realmente no son características, pero hay algunas acciones que no son realmente buenas , pero, para este desafío, no me importa.
- Puedo votar varias veces si borro mi almacenamiento local o hago un acceso desde otro dispositivo (o voy en modo de incógnito, etc.).
- Sí, porque para obtener un seguimiento de los votos, tengo que guardar algunas información en el lado del servidor y, con los usuarios sin iniciar sesión, tengo que hacer un trabajo muy duro para verificarlos. Entonces ... el DB está en una caja de arena alimentada por MLAB y no quiero estresarlo más.
- No puedo editar o eliminar opciones después de la publicación de la encuesta.
- No, no puedes. Estas acciones no estaban en las historias de los usuarios.
- No puedo tener múltiples inicios de sesión.
- Sí, cada vez que se inicia un inicio de sesión, obtienes un
session_id diferente en ambos lados: cliente y servidor.
- No puedo editar mis datos personales, como correo electrónico, nick o contraseña
- No, no puedes. Estas acciones no estaban en las historias de los usuarios.
- No puedo cambiar mis preferencias
- Sí, no me gusta esta función de manera especial, pero he decidido no implementar una acción de deshacer por algunas razones de seguridad.
process.env
- Mongouri : Su consulta para autenticarse en el servidor MongoDB
mongodb://<dbuser>:<dbpassword>@ds119508.mlab.com:19508/neckersbox - Node_env : por ejemplo
production . Nota : Esto debe ser lo mismo entre el servidor y el cliente.
Guiones
Para compilar o ejecutar esta aplicación, use Gulp y/o NPM.
- Build :
gulp build - Reloj :
gulp watch o npm run watch - Limpio :
gulp clean - Servidor de inicio :
gulp start o npm run start-server Nota : Normalmente los mensajes de consola de ocultación start-server , para mostrarles que debe ejecutar npm run start-server-debug
Configuración de MongoDB
Para funcionar correctamente, esta aplicación necesita una base de datos MongoDB con dos colecciones:
- Vote_Users para guardar usuarios firmados
- VOTE_POLLS para guardar las encuestas de los usuarios