Git Product home page Git Product logo

sistema-anti-fraude-electoral's People

Contributors

aarondemianv avatar agusvazquez avatar ale-aguirre avatar alelnro1 avatar aristelecom avatar bonino97 avatar brunocalmels avatar correafederico25 avatar fcasalibaper avatar francocanzani avatar fuzilogik2019 avatar gissio avatar guilleantico avatar henrymelia avatar ignasave avatar jeronimoek avatar jmarcosg avatar joseortega02 avatar juanenmellare avatar luciano-repetti avatar luis-fernando-molina avatar n3-n2-n1 avatar nachobasilio avatar nachokhan avatar nbrusco avatar nicofdga avatar paw-j avatar santi28 avatar shirosweets avatar viozhu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sistema-anti-fraude-electoral's Issues

DEVOPS: Obtener dominio para API

Objetivo:
Adquirir un dominio específico para la API de la aplicación, proporcionando una URL personalizada y reconocible para los usuarios y facilitando la comunicación con otros servicios.

Descripción detallada:
Actualmente, la API de la aplicación no cuenta con un dominio personalizado, lo que dificulta la identificación y accesibilidad para los usuarios y otros servicios. Esta tarea tiene como objetivo adquirir un dominio que represente claramente la naturaleza de la API y que sea fácil de recordar para los usuarios finales y otros sistemas que interactúan con ella.

QA: Generar unit test para un coverage de al menos 70%

Objetivo:
Generar pruebas unitarias efectivas para el código existente con el objetivo de lograr una cobertura del código de al menos el 70%.

Descripción detallada:
Actualmente, el proyecto no cuenta con una cobertura de pruebas unitarias suficiente para garantizar un nivel aceptable de calidad del código. Esta tarea tiene como objetivo escribir pruebas unitarias efectivas que cubran al menos el 70% del código existente.

API: Conectar Mongo DB con NestJs

Actualmente, el proyecto no cuenta con una conexión establecida entre la base de datos MongoDB y la aplicación NestJs. Esta tarea tiene como objetivo implementar los pasos necesarios para establecer esta conexión y garantizar el correcto funcionamiento de la API.

CONSULTAR DATOS DE CONEXION A LOS DEVOPS

Frontend: Implementar Cierre de Sesión

Contexto:

Para proporcionar a los usuarios la capacidad de cerrar sesión de manera segura en nuestra aplicación web, es fundamental implementar la funcionalidad de cierre de sesión en el frontend.

Tarea:

Implementar la funcionalidad de cierre de sesión en la aplicación frontend.

Criterios de Aceptación:

  • Crear una interfaz de usuario que permita a los usuarios cerrar sesión de manera explícita. Esto podría incluir un botón o enlace "Cerrar Sesión" en una ubicación accesible de la interfaz de usuario dentro de la home.
  • Conectar la interfaz de usuario del botón o enlace de "Cerrar Sesión" a la lógica de cierre de sesión en la aplicación.
  • Cuando un usuario hace clic en el botón o enlace de "Cerrar Sesión", la aplicación debe cerrar la sesión del usuario de manera segura y redirigirlo a la página de inicio o a una ubicación específica, según sea necesario.
  • Asegurarse de que, después de cerrar sesión, los usuarios no puedan acceder a las rutas protegidas sin volver a autenticarse.
  • Probar exhaustivamente la funcionalidad de cierre de sesión para garantizar que funcione correctamente y que los usuarios se desautentiquen de manera segura.
  • Documentar los pasos necesarios para cerrar sesión en la aplicación en el archivo README.md, para que los usuarios sepan cómo realizar esta acción.

API: Endpoint POST carga de irregularidades.

Objetivo:
Crear un endpoint POST que permita la carga de irregularidades, con la capacidad de guardar imágenes en el almacenamiento definido. Este endpoint debe estar restringido únicamente a los fiscales de su delegación seleccionada.

Descripción detallada:
Actualmente, la API no cuenta con un mecanismo para cargar irregularidades de manera controlada y segura. Esta tarea tiene como objetivo implementar un endpoint POST dedicado para esta funcionalidad, asegurando que solo los fiscales de la delegación seleccionada puedan realizar estas cargas, además de permitir la subida de imágenes y su almacenamiento en el lugar especificado.

Frontend: Crear Formulario para Cargar Irregularidades y Conectar con el Endpoint

Descripción:

Contexto:

Para permitir a los usuarios cargar irregularidades en nuestra aplicación web, necesitamos crear un formulario que permita la entrada de datos, incluyendo una foto, un comentario y una categoría según el diseño en Figma. Además, debemos conectar esta funcionalidad con el endpoint correspondiente en el backend.

Tareas:

Formulario para Cargar Irregularidades:

Diseñar y crear un formulario en la aplicación frontend que permita a los usuarios cargar irregularidades.
El formulario debe incluir los siguientes campos:

  • Categoría (según el diseño en Figma).
  • Carga de una foto o imagen de la irregularidad.
  • Un campo de comentario para agregar detalles adicionales.

Validación de Datos:

  • Implementar validación en los campos del formulario para garantizar que los datos ingresados sean válidos.
  • Asegurarse de que se cumplan los requisitos de la categoría, la foto y el comentario.

Conexión con el Endpoint:

  • Conectar el formulario de carga de irregularidades con el endpoint correspondiente en el backend para enviar y almacenar los datos de irregularidades.
  • Implementar manejo de errores y respuestas del servidor para brindar retroalimentación al usuario.

Criterios de Aceptación:

  • El formulario para cargar irregularidades debe coincidir con el diseño proporcionado en Figma y permitir a los usuarios ingresar los datos de manera eficiente.
  • El formulario debe incluir campos para seleccionar una categoría, cargar una foto o imagen de la irregularidad y agregar un comentario.
  • Los campos del formulario deben ser validados para garantizar que se ingresen datos válidos.
  • La conexión con el endpoint del backend debe ser exitosa, y los datos de irregularidades deben enviarse y almacenarse correctamente.
  • Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que se manejen los errores de manera adecuada.
  • Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para su uso.

API: POST, PUT, DEL, GET datos de admins solo para usuarios admin.

Objetivo:
Crear endpoints para las operaciones POST, PUT, DELETE y GET destinadas a la gestión de datos de administradores. Estos endpoints deben estar restringidos exclusivamente a usuarios con roles de administrador.

Descripción detallada:
Actualmente, la API no proporciona un conjunto de endpoints específicos para la gestión de datos de administradores. Esta tarea tiene como objetivo implementar endpoints dedicados para realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre estos datos, asegurando que solo los usuarios con roles de administrador tengan acceso a estas funciones.

Definir MVP

Descripción:
El objetivo es desarrollar un Producto Mínimo Viable (MVP) para [Nombre del Proyecto] que incluye las siguientes funcionalidades clave.

Objetivos:

  • Validar la viabilidad del producto
  • Obtener feedback temprano de usuarios
  • Establecer un ciclo de desarrollo ágil

SETUP: Levantar estructura de frontend en Reactjs en el repo de frontend

Descripción:

Contexto:

Nuestro proyecto requiere la configuración inicial de un entorno de desarrollo de frontend en React.js con TypeScript. Esto proporcionará la base para la construcción de la interfaz de usuario de nuestra aplicación web.

Tarea:

Crear la estructura inicial del proyecto React.js con TypeScript en el repositorio de frontend existente. Esto incluye la configuración de las dependencias, la organización de directorios y la configuración de herramientas esenciales para el desarrollo.

Criterios de Aceptación:

  • Se debe crear un nuevo directorio en el repositorio de frontend con un nombre descriptivo, por ejemplo, "frontend-app".
  • La estructura del proyecto debe incluir los siguientes elementos:
  • Configuración de TypeScript.
  • Dependencias de React.js.
  • Dependencias de desarrollo (por ejemplo, Webpack, Babel, ESLint, Prettier, etc.).
  • Una carpeta para componentes.
  • Una carpeta para estilos (CSS, SCSS, o similar).
  • Debe existir un archivo package.json con las dependencias y scripts necesarios para el desarrollo.
  • Documentar los pasos y comandos necesarios para ejecutar el proyecto en el archivo README.md.
  • El proyecto debe poder construirse y ejecutarse sin errores utilizando los scripts definidos en package.json.

Configuración: Crear Web App en el Panel de Firebase y Conectar con el Frontend

Descripción:

Contexto:

Para habilitar la comunicación entre nuestro frontend y Firebase, es necesario crear una web app en el panel de Firebase y configurar la conexión. Esto permitirá que nuestra aplicación web interactúe con Firebase para autenticación, almacenamiento de datos en tiempo real y otras funcionalidades.

Tarea:

Crear una web app en la consola de Firebase y establecer la conexión con el frontend de nuestra aplicación.

Criterios de Aceptación:

  • Acceder a la consola de Firebase (https://console.firebase.google.com/) con las credenciales adecuadas.
  • Obtener las credenciales de Firebase (clave de configuración) específicas de la web app recién creada.
  • Configurar la web app en el proyecto frontend para que se comunique con Firebase utilizando las credenciales obtenidas.
  • Implementar la integración de Firebase en el frontend para al menos una funcionalidad específica, como la autenticación de usuarios o la lectura/escritura de datos en la base de datos de Firebase.
  • Verificar que la conexión entre la web app y Firebase funcione correctamente y que no se produzcan errores significativos.
  • Documentar los pasos para la creación de la web app en Firebase y su configuración en el archivo README.md.

DEVOPS: Conectar deployment de solución usando Github Actions para frontend

Objetivo:
Establecer un flujo de trabajo automatizado que permita desplegar automáticamente el frontend de la solución cada vez que se realicen cambios en el repositorio de Github.

Descripción detallada:
Actualmente, el despliegue del frontend no está automatizado y debe realizarse manualmente. Esta tarea tiene como objetivo configurar Github Actions para que, cada vez que se realice un push en el repositorio, se active un proceso que despliegue automáticamente el frontend en el entorno de producción.

Configuración: Instalar Tailwind CSS en React y UI Framework

Descripción:

Contexto:

Para mejorar la eficiencia en el desarrollo del frontend de nuestra aplicación, es esencial configurar una biblioteca de diseño y estilos, como Tailwind CSS, junto con un UI framework para acelerar el proceso de diseño y construcción de componentes.

Tarea:

Realizar la configuración e instalación de Tailwind CSS y una biblioteca de UI framework en el proyecto React existente.

Criterios de Aceptación:

  • Se debe instalar y configurar Tailwind CSS en el proyecto React.
  • Se debe instalar una biblioteca de UI framework, como Ant Design, Semantic UI, o cualquier otra que se considere adecuada.
  • Los estilos proporcionados por Tailwind CSS deben utilizarse para la apariencia de los componentes siempre que sea apropiado.
  • El archivo package.json debe reflejar todas las dependencias instaladas, incluyendo Tailwind CSS y el UI framework.
  • Documentar la configuración y el uso de Tailwind CSS y el UI framework en el archivo README.md.

FRONTEND: Iniciar Sesión con Email y Contraseña

En esta tarea, se busca implementar la funcionalidad de inicio de sesión que permita a los usuarios acceder a la plataforma utilizando su dirección de correo electrónico y contraseña.

Criterios de Aceptación

Cuando los usuarios accedan a la página de inicio de sesión, deberán ver campos para ingresar su dirección de correo electrónico y contraseña.

Los campos de entrada de correo electrónico y contraseña deben estar validados para asegurar que se ingresen datos válidos antes de permitir el inicio de sesión.

Los usuarios deben recibir un mensaje de error claro si intentan iniciar sesión con credenciales incorrectas o incompletas.

Después de un inicio de sesión exitoso, los usuarios deben ser redirigidos a su página de inicio o a una ubicación específica de la plataforma.

Se debe implementar un mecanismo de seguridad, como el uso de tokens de sesión o autenticación de dos factores, para proteger las cuentas de usuario.

Validar que el campo de email solo soporte string que son emails.

Link Figma con mockup

https://www.figma.com/file/nyWx6CewFyvb3a7y3g1r7W/Libertarios-APP?type=design&node-id=126-34&mode=design&t=Egt1XDHh7PdVayzm-0

Añadir donaciones a README.md

Hey, gran proyecto.

¿Habéis pensado en ofrecer direcciones públicas de blockchain (BTC [LN incluida], USDT, USDC, ETH etc...) para recibir donaciones de tod@ el/la que quiera contribuir y no sepa de código?

Sería un gran modo de fondear el proyecto, generando transparencia y haciendo cada movimiento auditable por el resto del mundo.

Esto generaría engagement con tod@s l@s posibles devs de Argentina dando el impulso que se necesita antes del 19.

Además se podría crear un tablero kanban o scrum en cualquier plataforma de colaboración para ver el avance del proyecto, y a modo de retribución poner bounties por cada task a cumplir.

Un saludo desde 🇪🇸 y a por todas 🦁⚡

Frontend: Crear Vista Home con Botones

Descripción:

Contexto:

Para proporcionar a los usuarios una vista de inicio en nuestra aplicación web y permitirles navegar y realizar acciones clave, necesitamos crear una página de inicio con botones de "Ver Resultados", "Cargar Resultados", "Cargar Irregularidades" y "Cerrar Sesión". Aunque, de momento, estos botones no tendrán funcionalidad implementada.

Tarea:

Crear la vista de inicio (página de inicio) en la aplicación frontend con los botones mencionados.

Criterios de Aceptación:

  • Diseñar la página de inicio con un diseño agradable y accesible que incluya los siguientes elementos:

    • Botón "Ver Resultados".
    • Botón "Cargar Resultados".
    • Botón "Cargar Irregularidades".
    • Botón "Cerrar Sesión".
  • Los botones deben ser visibles y estar correctamente etiquetados para cada acción correspondiente.

  • Los botones no tendrán funcionalidad implementada en esta etapa, pero deberán ser elementos interactivos en la interfaz de usuario.

  • La página de inicio debe ser accesible desde la pantalla de inicio de la aplicación y proporcionar a los usuarios una vista clara de las acciones disponibles.

  • Probar la vista de inicio para garantizar que se vea y funcione según lo esperado, y que los botones no realicen acciones hasta que se implementen.

  • Documentar la existencia de la vista de inicio y los botones en el archivo README.md, indicando que los botones aún no tienen funcionalidad.

Frontend: Conectar Autenticación de Usuarios con Firebase Auth en React.js

Descripción:

Contexto:

Para habilitar la autenticación de usuarios en nuestro frontend, necesitamos conectar nuestra aplicación React.js con Firebase Authentication.

Tarea:

Conectar la autenticación de usuarios en nuestra aplicación React.js con Firebase Authentication.

Criterios de Aceptación:

  • Configurar la integración de Firebase en la aplicación React.js. Esto debe incluir la inicialización de Firebase y la importación de las credenciales de Firebase necesarias.
  • Implementar la funcionalidad de registro de usuarios en la aplicación, permitiendo a los usuarios loguear cuentas utilizando Firebase Auth (por ejemplo, correo electrónico y contraseña).
  • Implementar la funcionalidad de inicio de sesión de usuarios, permitiendo a los usuarios autenticarse utilizando Firebase Auth sobre el form de signin existente.
  • Gestionar la autenticación de usuarios en la aplicación, asegurándose de que se refleje adecuadamente el estado de inicio de sesión o cierre de sesión.
  • Integrar la lógica de seguridad necesaria para proteger rutas o componentes que requieran autenticación.
  • Probar exhaustivamente la funcionalidad de autenticación para garantizar que funcione correctamente en diferentes navegadores y dispositivos.
  • Documentar los pasos para configurar la autenticación con Firebase en el archivo README.md, incluyendo cómo obtener y configurar las credenciales de Firebase en el proyecto React.

API: Generar un JWT o bien usar Firebase Admin para identificar al usuario del lado de la API

Objetivo:
Establecer un sistema de autenticación robusto para la API, permitiendo la identificación segura de usuarios mediante la generación de JSON Web Tokens (JWT) o la integración con Firebase Admin.

Descripción detallada:
Actualmente, la API no cuenta con un mecanismo de autenticación implementado. Esta tarea tiene como finalidad establecer un sistema de autenticación que permita identificar a los usuarios de manera segura y eficiente.

Frontend: Crear Vista para Subir Foto de Acta y Conectar con el Endpoint

Contexto:

Para permitir a los usuarios subir una foto o imagen del acta en nuestra aplicación web, necesitamos crear una vista de "Subir Foto de Acta" que permita cargar la imagen y visualizarla antes de confirmar la carga. Además, debemos conectar esta funcionalidad con el endpoint correspondiente en el backend.

Tareas:

  1. Vista de Subir Foto de Acta:
    Diseñar y crear una vista de "Subir Foto de Acta" en la aplicación frontend. Esta vista debe incluir un campo de carga de archivos que permita a los usuarios seleccionar una foto o imagen del acta para cargar.
    Implementar validación en el campo de carga de archivos para garantizar que se seleccionen archivos válidos, como imágenes.

  2. Visualización Previa de la Imagen:
    Desarrollar un componente que permita la visualización previa de la imagen seleccionada antes de confirmar la carga.
    La visualización previa debe mostrar la imagen en un formato legible y permitir al usuario confirmar o cancelar la carga.

  3. Conexión con el Endpoint:
    Conectar la vista de carga de la imagen con el endpoint correspondiente en el backend para enviar y almacenar la imagen del acta.
    Implementar manejo de errores y respuestas del servidor para brindar retroalimentación al usuario.

Criterios de Aceptación:

  • La vista de "Subir Foto de Acta" debe incluir un campo de carga de archivos que permita seleccionar y cargar una foto o imagen del acta.
  • La vista debe mostrar una visualización previa de la imagen seleccionada antes de confirmar la carga.
  • La conexión con el endpoint del backend debe ser exitosa, y la imagen debe enviarse y almacenarse correctamente.
  • Se deben implementar validaciones para garantizar que se seleccionen archivos válidos, como imágenes.
  • Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que se manejen los errores de manera adecuada.
  • Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para su uso.

API: GET para obtener las irregularidades.

Objetivo:
Crear un endpoint GET que permita a los usuarios obtener información sobre las irregularidades registradas.

Descripción detallada:
Actualmente, la API no proporciona una manera de obtener información sobre las irregularidades registradas. Esta tarea tiene como objetivo implementar un endpoint GET dedicado para permitir a los usuarios acceder a esta información de manera eficiente y segura.

Panel Admin: Listar Activos Identificando Escuelas (Actas)

Descripción:

Contexto:
Para facilitar la gestión de activos y recursos relacionados con las escuelas en el panel de administración, es importante crear una vista que liste las actas electorales y otros activos identificando claramente a qué escuela pertenecen.

Tareas:

Vista de Listado de Activos:

Diseñar y crear una vista en el panel de administración que muestre una lista de activos, como actas electorales, de manera organizada.

Identificación de Escuelas:

Implementar una forma de identificar claramente a qué escuela pertenece cada activo en la lista. Esto podría hacerse mediante un campo de escuela asociado a cada activo.

Conexión con la Base de Datos:

Conectar la vista de listado de activos con la base de datos o el backend para obtener la información de los activos y sus asociaciones con escuelas.

Criterios de Aceptación:

La vista de listado de activos debe mostrar de manera organizada los activos, como actas electorales, y asociar cada activo con la escuela a la que pertenece.

La identificación de escuelas debe ser clara y fácil de comprender en la vista.

La vista debe obtener la información de los activos y sus asociaciones con escuelas desde la base de datos o el backend de manera eficiente.

Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que la identificación de escuelas sea precisa.

Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para su uso.

Panel Admin: Implementar Operaciones CRUD para Delegaciones y Conectar con Endpoints

Descripción:

Contexto:

Para administrar las delegaciones de manera eficiente en el panel de administración, es esencial implementar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para las delegaciones y conectar estas operaciones con los endpoints del backend.

Tareas:

Vista de Delegaciones:

Diseñar y crear una vista en el panel de administración que muestre la lista de delegaciones existentes.
Mostrar la capacidad de crear, habilitar, deshabilitar y eliminar delegaciones desde esta vista.

Creación de Delegaciones:

Implementar un formulario que permita la creación de nuevas delegaciones. El formulario debe incluir campos como nombre, dirección, información de contacto, entre otros.
Conectar el formulario con el endpoint del backend para crear nuevas delegaciones.

Habilitar y Deshabilitar Delegaciones:

Implementar botones o interruptores que permitan habilitar o deshabilitar delegaciones existentes.
Conectar estas operaciones con los endpoints del backend para actualizar el estado de habilitación.

Eliminación de Delegaciones:

Implementar una opción que permita eliminar delegaciones existentes.
Conectar esta operación con el endpoint del backend para eliminar delegaciones.

Criterios de Aceptación:

La vista de delegaciones en el panel debe mostrar la lista de delegaciones existentes y proporcionar las opciones de crear, habilitar, deshabilitar y eliminar delegaciones.

El formulario de creación de delegaciones debe incluir campos necesarios y permitir la creación de nuevas delegaciones. Debe conectarse con el endpoint correspondiente en el backend.

Las operaciones de habilitación y deshabilitación deben funcionar según lo esperado y conectarse con los endpoints del backend para actualizar el estado de habilitación de las delegaciones.

La eliminación de delegaciones debe funcionar correctamente y conectarse con el endpoint del backend para eliminar delegaciones.

Probar exhaustivamente las operaciones CRUD para garantizar su funcionamiento y verificar que se manejen los errores de manera adecuada.

Documentar las operaciones CRUD en el archivo README.md, proporcionando instrucciones para su uso.

API: POST, PUT, DEL, GET datos de delegaciones solo para usuarios admin.

Objetivo:
Crear endpoints para las operaciones POST, PUT, DELETE y GET destinadas a la gestión de datos de delegaciones. Estos endpoints deben estar restringidos exclusivamente a usuarios con roles de administrador.

Descripción detallada:
Actualmente, la API no proporciona un conjunto de endpoints específicos para la gestión de datos de delegaciones. Esta tarea tiene como objetivo implementar endpoints dedicados para realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre estos datos, asegurando que solo los usuarios con roles de administrador tengan acceso a estas funciones.

Frontend: Crear Vista de Cargar Fiscalización y Conectar con el Endpoint

Contexto:

Para permitir a los usuarios cargar datos de fiscalización en nuestra aplicación web, necesitamos crear una vista de "Cargar Fiscalización" que permita la entrada de datos para cada partido político y el resto de los votos. Además, se debe implementar una segunda vista de visualización para control y un diálogo para confirmar los datos ingresados. Finalmente, debemos conectar esta funcionalidad con el endpoint correspondiente en el backend.

Tareas:

  1. Vista de Cargar Fiscalización:
    Diseñar y crear una vista de "Cargar Fiscalización" en la aplicación frontend. Esta vista debe incluir campos de entrada para los datos de cada partido político, así como los votos en blanco y nulos.
    Implementar validación en los campos de entrada para garantizar que los datos sean ingresados de manera válida.
    Crear un botón para confirmar y enviar los datos a la API.

  2. Vista de Visualización de Control:
    Crear una segunda vista que permita a los usuarios revisar y controlar los datos antes de enviarlos. Esta vista debe mostrar los datos ingresados para cada partido y los votos en blanco y nulos en un formato legible.
    Implementar la capacidad de editar los datos si es necesario antes de confirmar el envío.

  3. Diálogo de Confirmación:
    Implementar un diálogo de confirmación que aparezca antes de enviar los datos. El diálogo debe requerir que el usuario confirme la carga de los datos.

  4. Conexión con el Endpoint:
    Conectar la vista de carga de datos con el endpoint correspondiente en el backend para enviar y almacenar los datos de fiscalización.
    Implementar manejo de errores y respuestas del servidor para brindar retroalimentación al usuario.

Criterios de Aceptación:

  • La vista de "Cargar Fiscalización" debe incluir campos para ingresar los datos de cada partido, los votos en blanco y nulos, y un botón para enviar los datos.
  • La vista de visualización de control debe mostrar los datos ingresados de manera legible y permitir la edición antes de confirmar.
  • El diálogo de confirmación debe aparecer antes de enviar los datos y requerir una confirmación del usuario.
  • La conexión con el endpoint del backend debe ser exitosa, y los datos deben enviarse y almacenarse correctamente.
  • Se deben implementar validaciones para garantizar que los datos ingresados sean válidos.
  • Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que se manejen los errores de manera adecuada.
  • Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para su uso.

[BE] Propuesta / dudas

Hola podría dar una mano con el backend pero no me parece muy prudente usar un framework (nestjs) para complicar las cosas si están cortos de tiempo, si quieren alguna parte hecha en NodeJS sin frameworks locos (solo una api por ejemplo con fastify o express) puedo ofrecer mi ayuda o en algún modulo, a todo esto tampoco se bien donde estará montada la infraestructura si sera serverless o donde lo piensan montar.

En fin un abrazo y gracias por su esfuerzo, y ya saben si puedo dar una mano con backend/infra tengo 8 añitos como BE con nodejs y entornos serverless.
Animos que falta poco para que todo termine, abrazo!

Con que colaborar ?

Hola.
Me pueden decir con qué puedo colaborar o en qué estados estamos?
Tienen ya cubierto el alojamiento de la plataforma ? He visto cosas que no me gustan, como base de datos única centralizada. Si alguien me contacta y nos ponemos de acuerdo bien me encargo de montar un cluster en AWS para que esté todo replicado y redundado.
tenemos una sola oportunidad de hacerlo bien y como se caiga, no va a servir de nada lo hecho.
También me pueden pasar el link correcto del grupo de discusión ? Ya sea discord o slack.
saludos.

Cómo se mantiene comunicado el equipo?

Estoy pensando en aportar a la causa pero veo que no hay ningún servidor Matrix, IRC, Discord o lo que sea para poder comunicarnos en el README. Cómo se estan manejando las comunicacicones entre devs? Puedo conseguir un dominio y hostear un servidor Matrix o lo que haga falta si aún no se tiene uno. Slds

Panel Admin: Implementar Operaciones CRUD para Administradores

Contexto:

Para administrar las cuentas de administradores de manera eficiente en el panel de administración, es esencial implementar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para administradores y conectar estas operaciones con los endpoints del backend.

Tareas:

Vista de Administradores:

Diseñar y crear una vista en el panel de administración que muestre la lista de administradores existentes.
Mostrar la capacidad de crear, habilitar, deshabilitar y eliminar cuentas de administradores desde esta vista.

Creación de Administradores:

Implementar un formulario que permita la creación de nuevas cuentas de administradores. El formulario debe incluir campos como nombre, correo electrónico, contraseña, entre otros.
Conectar el formulario con el endpoint del backend para crear nuevas cuentas de administradores.

Habilitar y Deshabilitar Administradores:

Implementar botones o interruptores que permitan habilitar o deshabilitar cuentas de administradores existentes.
Conectar estas operaciones con los endpoints del backend para actualizar el estado de habilitación.

Eliminación de Administradores:

Implementar una opción que permita eliminar cuentas de administradores existentes.
Conectar esta operación con el endpoint del backend para eliminar cuentas de administradores.

Criterios de Aceptación:

  • La vista de administradores en el panel debe mostrar la lista de cuentas de administradores existentes y proporcionar las opciones de crear, habilitar, deshabilitar y eliminar cuentas.
  • El formulario de creación de administradores debe incluir campos necesarios y permitir la creación de nuevas cuentas. Debe conectarse con el endpoint correspondiente en el backend.
  • Las operaciones de habilitación y deshabilitación deben funcionar según lo esperado y conectarse con los endpoints del backend para actualizar el estado de habilitación de las cuentas.
  • La eliminación de cuentas de administradores debe funcionar correctamente y conectarse con el endpoint del backend para eliminar cuentas.
  • Probar exhaustivamente las operaciones CRUD para garantizar su funcionamiento y verificar que se manejen los errores de manera adecuada.
  • Documentar las operaciones CRUD en el archivo README.md, proporcionando instrucciones para su uso.

DEVOPS: Levantar base de datos MongoDB.

Objetivo:
Configurar y desplegar una instancia de MongoDB para ser utilizada en el proyecto.

Descripción detallada:
Actualmente, el proyecto no cuenta con una base de datos MongoDB en funcionamiento. Esta tarea tiene como objetivo establecer una instancia de MongoDB que servirá como el sistema de gestión de bases de datos para el proyecto.

API: Modelizar entidades: user, admin, escuela, actas, etc. Generar migrates.

Objetivo:
Definir y crear los modelos de datos para las entidades clave como Usuario, Administrador, Escuela, Actas, entre otras, y generar migraciones correspondientes para mantener la integridad de la base de datos.

Descripción detallada:
Actualmente, la API carece de modelos de datos definidos para entidades fundamentales como Usuario, Administrador, Escuela, Actas, entre otras. Esta tarea tiene como objetivo establecer las estructuras de datos adecuadas para estas entidades y crear migraciones que permitan llevar a cabo cambios en la base de datos de manera controlada y reversible.

https://resultados.mininterior.gob.ar/desarrollo -> API publica, seguro podemos orientar + o - como diagramar los modelos basandonos en esto.

Frontend: Conectar Restablecimiento de Contraseña con Firebase Auth

Contexto:

Para proporcionar a los usuarios la capacidad de restablecer su contraseña en caso de olvido, necesitamos configurar la funcionalidad de restablecimiento de contraseña en nuestra aplicación frontend React.js utilizando Firebase Authentication. Esto permitirá a los usuarios recibir un correo electrónico de restauración de contraseña.

Tarea:

Conectar la funcionalidad de restablecimiento de contraseña en nuestra aplicación React.js con Firebase Authentication.

Criterios de Aceptación:

  • Implementar una interfaz de usuario en la aplicación que permita a los usuarios solicitar el restablecimiento de su contraseña. Esto podría incluir un formulario de "Olvidé mi contraseña" con un campo para ingresar el correo electrónico asociado a la cuenta.
  • Conectar la solicitud de restablecimiento de contraseña a Firebase Authentication, asegurándose de que se manejen las solicitudes de manera segura y eficiente.
  • Cuando un usuario solicite el restablecimiento de contraseña, Firebase Auth deberá enviar un correo electrónico de restablecimiento de contraseña al correo electrónico proporcionado.
  • El correo electrónico de restablecimiento de contraseña debe contener un enlace seguro que permita a los usuarios restablecer su contraseña. Al hacer clic en el enlace, los usuarios deben ser redirigidos a una página de restablecimiento de contraseña en la aplicación. Firebase proporciona una por defecto.
  • Utilizar la página de restablecimiento de contraseña por defecto de Firebase, donde los usuarios puedan ingresar y confirmar su nueva contraseña.
  • Probar exhaustivamente el flujo de restablecimiento de contraseña para garantizar su funcionamiento correcto y seguro.
  • Documentar los pasos necesarios para utilizar la funcionalidad de restablecimiento de contraseña en la aplicación en el archivo README.md, incluyendo cómo configurar y personalizar el correo electrónico de restablecimiento de contraseña en Firebase.

Frontend: Control de Acceso para Usuarios Logueados en la Web App, Excepto en la Página de Inicio de Sesión

Descripción:

Contexto:

Para garantizar la seguridad y la experiencia del usuario en nuestra aplicación web, es esencial controlar el acceso a las diferentes partes de la aplicación. Los usuarios deben estar logueados para acceder a la mayoría de las páginas, con la excepción de la página de inicio de sesión.

Tarea:

Implementar un control de acceso en la aplicación frontend React.js para permitir el acceso solo a usuarios logueados, excepto en la página de inicio de sesión.

Criterios de Aceptación:

  • Configurar una estructura de rutas en la aplicación React.js que represente las diferentes páginas o vistas de la aplicación.
  • Implementar un mecanismo de autenticación que compruebe si el usuario está logueado antes de permitir el acceso a rutas protegidas.
  • Configurar las rutas de manera que todas las páginas, excepto la página de inicio de sesión, requieran autenticación para acceder.
  • Cuando un usuario intenta acceder a una página protegida sin haber iniciado sesión, se le debe redirigir automáticamente a la página de inicio de sesión.
  • La página de inicio de sesión debe seguir siendo accesible para cualquier usuario, independientemente de si están logueados o no.
  • Implementar la lógica de inicio de sesión y cierre de sesión en la aplicación para permitir que los usuarios accedan y abandonen su sesión de manera segura.
  • Probar exhaustivamente el control de acceso para garantizar que los usuarios no puedan acceder a rutas protegidas sin iniciar sesión, y que puedan acceder a la página de inicio de sesión en todo momento.
  • Documentar los pasos necesarios para utilizar el control de acceso en la aplicación en el archivo README.md, incluyendo cómo agregar nuevas rutas protegidas en el futuro, si es necesario.

API: Endpoint POST para la carga de resultados

Objetivo:
Crear un endpoint POST que permita la carga de resultados, autenticando al usuario mediante un JWT token y asegurando que solo pueda cargar resultados autorizados. Además, se debe implementar la funcionalidad para subir una imagen y almacenarla en Firebase Storage o en el lugar definido.

Descripción detallada:
Actualmente, la API no cuenta con un mecanismo de carga de resultados que garantice la autenticación del usuario y la gestión adecuada de permisos. Esta tarea tiene como objetivo implementar un endpoint que cumpla con estos requisitos, además de permitir la subida de imágenes y su almacenamiento en Firebase Storage o en el lugar especificado.

DEVOPS: Obtener dominio para frontend

Objetivo:
Adquirir un dominio específico para el frontend de la aplicación, proporcionando una URL personalizada y reconocible para los usuarios.

Descripción detallada:
Actualmente, el frontend de la aplicación no cuenta con un dominio personalizado, lo que dificulta la identificación y accesibilidad para los usuarios. Esta tarea tiene como objetivo adquirir un dominio que represente claramente el frontend y que sea fácil de recordar para los usuarios finales.

Funcionalidad: Mapa / Info de Bunkers-Sucursales

Se puede trabajar sobre este mapa que alguien ya había creado:

https://bit.ly/boletas2023

Estimo que se podría incorporar directamente via API de Google y dependiendo del mantenedor para actualizar con nuevas sedes o bien haciendo un fork de ese mapa.

Yo diría usar el trabajo ya hecho directamente sin hacer algún fork. Esto nos daría dos ventajas:

  • No tener dos mapas separados que pudieran introducir ambigüedad en la población.
  • Mejor utilización del tiempo disponible, ya que no tenemos mucho tiempo para terminar con todo el desarrolo + pruebas.

[BE] auth y seguridad

para poder definir el tema de manejo de usuarios/autenticación y seguridad:

  1. usar un servicio de un proveedor tipo cognito o usar un módulo propio tipo jwt de algun framework
  2. auth debe ser un servicio aparte?, hay que considerar que es lo que más ataques va a recibir y de lo que dependen otras partes del proyecto
  3. tipo de auth (protocolo, encriptacion, configuraciones)

personalmente pienso en lo siguiente:

  1. usar un proveedor como cognito de aws (o algun competidor de la nube de confianza que se elija) ya que es una solución estandar, robusta y muy segura soportada por el proveedor de la nube del servicio que se use.
  2. creo que auth debe ser un servicio aparte porque va a tener que lidiar con ddos y segun owasp es ahora el principal punto de ataque en cuanto a vulnerabilidades
  3. creo que para proveer a front deberiamos usar oauth2/saml2.0, para backend tokens mantenidos en los secrets de las variables de entorno.

por favor pongan sus propuestas y sus argumentos para ir construyendo los requisitos

API: GET para obtener assets asociados a las delegaciones (actas)

Objetivo:
Crear un endpoint GET que permita a los usuarios obtener los assets asociados a las delegaciones, específicamente las actas.

Descripción detallada:
Actualmente, la API no proporciona una manera de obtener los assets asociados a las delegaciones, en este caso, las actas. Esta tarea tiene como objetivo implementar un endpoint GET dedicado para permitir a los usuarios acceder a esta información de manera eficiente y segura.

Configuración: Crear Repositorio para API usando NestJS

Contexto:

Para desarrollar una API robusta y escalable en nuestro proyecto, necesitamos configurar un repositorio dedicado para la API utilizando el framework NestJS.

Tarea:

Crear un repositorio dedicado para la API utilizando NestJS.

Criterios de Aceptación:

  • Inicializar un nuevo repositorio Git en un directorio local.
  • Configurar un proyecto NestJS en el repositorio, utilizando el generador de NestJS o configurando manualmente la estructura del proyecto.
  • La estructura del proyecto debe incluir al menos una ruta y un controlador de ejemplo que responda a solicitudes HTTP básicas.
  • Documentar los pasos necesarios para ejecutar el proyecto NestJS en el archivo README.md, incluyendo la instalación de dependencias y la configuración de la base de datos si corresponde.
  • Realizar un commit inicial con un mensaje descriptivo que indique la configuración inicial del proyecto NestJS en el repositorio.

API: POST, PUT, DEL, GET datos de fiscales solo para usuarios admin.

Objetivo:
Crear endpoints para las operaciones POST, PUT, DELETE y GET destinadas a la gestión de datos de fiscales. Estos endpoints deben estar restringidos exclusivamente a usuarios con roles de administrador.

Descripción detallada:
Actualmente, la API no proporciona un conjunto de endpoints específicos para la gestión de datos de fiscales. Esta tarea tiene como objetivo implementar endpoints dedicados para realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sobre estos datos, asegurando que solo los usuarios con roles de administrador tengan acceso a estas funciones.

DEVOPS: Conectar deployment de solución usando Github Actions para API

Objetivo:
Establecer un flujo de trabajo automatizado que permita desplegar automáticamente la API de la solución cada vez que se realicen cambios en el repositorio de Github.

Descripción detallada:
Actualmente, el despliegue de la API no está automatizado y debe realizarse manualmente. Esta tarea tiene como objetivo configurar Github Actions para que, cada vez que se realice un push en el repositorio, se active un proceso que despliegue automáticamente la API en el entorno de producción.

Frontend: Crear Vista para Ver Resultados y Conectar con el Endpoint

Descripción:

Contexto:

Para permitir a los usuarios ver y filtrar los resultados en nuestra aplicación web de acuerdo al diseño en Figma, necesitamos crear una vista de "Ver Resultados" que permita la visualización de los resultados, así como la capacidad de filtrar por escuela y otros criterios. Además, debemos conectar esta funcionalidad con el endpoint correspondiente en el backend.

Tareas:

  1. Vista de Ver Resultados:
    Diseñar y crear una vista de "Ver Resultados" en la aplicación frontend de acuerdo al diseño proporcionado en Figma.
    Implementar una interfaz que muestre los resultados de manera clara y organizada.

  2. Filtrado de Resultados:
    Implementar opciones de filtrado que permitan a los usuarios seleccionar una escuela específica u otros criterios para mostrar los resultados deseados.
    Asegurarse de que los filtros se apliquen a los datos de manera efectiva.

  3. Conexión con el Endpoint:
    Conectar la vista de resultados con el endpoint correspondiente en el backend para obtener los datos necesarios.
    Implementar manejo de errores y respuestas del servidor para brindar retroalimentación al usuario.

Criterios de Aceptación:

  • La vista de "Ver Resultados" debe coincidir con el diseño proporcionado en Figma y mostrar los resultados de manera clara y organizada.
  • Los usuarios deben poder filtrar los resultados de acuerdo a diferentes criterios, como seleccionar una escuela específica.
  • La conexión con el endpoint del backend debe ser exitosa, y los datos deben cargarse correctamente en la vista de resultados.
  • La interfaz debe responder de manera eficiente a los filtros seleccionados por los usuarios.
  • Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que se manejen los errores de manera adecuada.
  • Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para su uso.

Panel Admin: Implementar Operaciones CRUD para Fiscales y Conectar con Endpoints

Descripción:

Contexto:

Para administrar las cuentas de fiscales de manera eficiente en el panel de administración, es esencial implementar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) para fiscales y conectar estas operaciones con los endpoints del backend.

Tareas:

Vista de Fiscales:

Diseñar y crear una vista en el panel de administración que muestre la lista de fiscales existentes.
Mostrar la capacidad de crear, habilitar, deshabilitar y eliminar cuentas de fiscales desde esta vista.

Creación de Fiscales:

Implementar un formulario que permita la creación de nuevas cuentas de fiscales. El formulario debe incluir campos como nombre, correo electrónico, contraseña, entre otros.
Conectar el formulario con el endpoint del backend para crear nuevas cuentas de fiscales.

Habilitar y Deshabilitar Fiscales:

Implementar botones o interruptores que permitan habilitar o deshabilitar cuentas de fiscales existentes.
Conectar estas operaciones con los endpoints del backend para actualizar el estado de habilitación.

Eliminación de Fiscales:

Implementar una opción que permita eliminar cuentas de fiscales existentes.
Conectar esta operación con el endpoint del backend para eliminar cuentas de fiscales.

Criterios de Aceptación:

La vista de fiscales en el panel debe mostrar la lista de cuentas de fiscales existentes y proporcionar las opciones de crear, habilitar, deshabilitar y eliminar cuentas.

El formulario de creación de fiscales debe incluir campos necesarios y permitir la creación de nuevas cuentas. Debe conectarse con el endpoint correspondiente en el backend.

Las operaciones de habilitación y deshabilitación deben funcionar según lo esperado y conectarse con los endpoints del backend para actualizar el estado de habilitación de las cuentas.

La eliminación de cuentas de fiscales debe funcionar correctamente y conectarse con el endpoint del backend para eliminar cuentas.

Probar exhaustivamente las operaciones CRUD para garantizar su funcionamiento y verificar que se manejen los errores de manera adecuada.

Documentar las operaciones CRUD en el archivo README.md, proporcionando instrucciones para su uso.

DEVOPS: Dockerizar la solucion frontend

Objetivo:
Crear un entorno de contenedorizado para el frontend de la aplicación, facilitando así la distribución y despliegue.

Descripción detallada:
Actualmente, el frontend de la aplicación no está contenedorizado, lo que dificulta la replicación del entorno y la gestión de dependencias. Esta tarea tiene como objetivo crear un Dockerfile y configurar el entorno de contenedorización para el frontend.

Panel Admin: Implementar Autenticación de Administradores con Firebase

Contexto:
Para garantizar la seguridad y el acceso controlado al panel de administración, necesitamos implementar un sistema de autenticación para administradores utilizando Firebase. Esto permitirá que solo los administradores autorizados accedan al panel.

Tareas:

Creación de la Vista de Inicio de Sesión:

Diseñar y crear una vista de inicio de sesión en el panel de administración. Esta vista debe incluir campos para ingresar el correo electrónico y la contraseña del administrador.

Implementación de Autenticación:

Conectar la vista de inicio de sesión con Firebase Authentication para permitir a los administradores iniciar sesión utilizando Firebase Auth.
Implementar un mecanismo de autenticación que verifique si el usuario que inicia sesión es un administrador autorizado.

Gestión de Sesiones:

Implementar la lógica de gestión de sesiones para mantener al administrador autenticado durante su sesión en el panel.
Implementar la funcionalidad de cierre de sesión.

Criterios de Aceptación:

  • La vista de inicio de sesión en el panel de administración debe incluir campos para ingresar el correo electrónico y la contraseña del administrador.
  • Los administradores deben poder iniciar sesión utilizando sus credenciales de administrador.
  • El sistema de autenticación debe verificar si el usuario que inicia sesión es un administrador autorizado antes de permitir el acceso.
  • La gestión de sesiones debe mantener al administrador autenticado durante su sesión y permitir el cierre de sesión.
  • Probar exhaustivamente la funcionalidad para garantizar que funcione según lo esperado y que los administradores autorizados puedan acceder al panel de administración.
  • Documentar la funcionalidad en el archivo README.md, proporcionando instrucciones para el inicio de sesión y el cierre de sesión de administradores.

API: Endpoint GET para obtener los resultados.

Objetivo:
Crear un endpoint GET que permita a todos los usuarios obtener resultados, con la posibilidad de aplicar filtros por parámetros y paginación.

Descripción detallada:
Actualmente, la API no proporciona una manera de obtener resultados de manera eficiente, filtrada o paginada. Esta tarea tiene como objetivo implementar un endpoint GET que permita a todos los usuarios acceder a los resultados, con la capacidad de aplicar filtros y paginación según sea necesario.

Configuración: Crear Cuenta en Firebase

Descripción:

Contexto:

Para habilitar características relacionadas con la autenticación, almacenamiento de datos en tiempo real, y otras funcionalidades en nuestra aplicación, es necesario crear una cuenta en Firebase. Firebase proporciona una plataforma sólida para la gestión de datos en tiempo real, autenticación de usuarios y más.

Tarea:

Crear una cuenta en Firebase y configurarla para su uso en nuestra aplicación.

Criterios de Aceptación:

  • Se debe crear una cuenta en Firebase utilizando una dirección de correo electrónico y una contraseña segura.
  • La cuenta de Firebase debe estar vinculada a un proyecto adecuadamente nombrado que coincida con nuestro proyecto.
  • Deben habilitarse las siguientes funcionalidades de Firebase:
    • Autenticación de usuarios con al menos un método de autenticación (por ejemplo, correo electrónico y contraseña).
    • Almacenamiento en tiempo real (Firestore) para el almacenamiento de datos.
    • Configurar las reglas de seguridad de Firebase de acuerdo a las necesidades de nuestro proyecto.
  • Se deben proporcionar las credenciales de Firebase (clave de API u otros datos relevantes) de manera segura y exclusiva al equipo de desarrollo, sin compartirse en el repositorio público.
  • Documentar los pasos para la configuración de Firebase en el archivo README.md, incluyendo cómo acceder a la consola de Firebase y cómo configurar las credenciales en el proyecto React.

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.