Sobre este proyecto
it-programming / web-development
Abierto
Necesito un sistema que permita a clientes registrarse y confirmar una cuenta de correo asociada. El sistema debe contener un modulo que permita realizar mantenimiento de los datos clientes, entre lo cuales están: documento numero, tipo, nombres completo, dirección de contacto (celular, correo electrónico), el sistema puede tener varias registros de contacto y debe permitir seleccionar una dirección de contacto principal, el registro del cliente deberá permitir asociar una o varios empresas a un mismo cliente. El cliente podrá modificar los datos en cualquier momento, excepto la dirección de correo electrónico confirmada .
El sistema deberá contar con una opción de inicio de sesión, donde las personas registradas pueden ingresar con su cuenta de correo registrada y la contraseña que hayan registrado. El sistema debe permitirle al cliente registrarse y autenticarse a través de clientes de redes sociales, Office 365 o una cuenta creada en el sistema. El sistema debe permitir colocarle mensajes al cliente en una cola de mensajes que podrá ver a través de un icono que le indique que tiene nuevos mensajes o a través de un modulo que permita gestionar a través de una mantenimiento los mensajes, y donde el cliente podrá distinguir entre mensajes leídos, o sin leer.
Los mensajes mostrados podrán contener una pregunta para que el cliente responda seleccionando si o no, o seleccionado una lista de opciones que se le presenten, sea para que seleccione una respuesta de una lista de opciones, o para que puede seleccionar varias respuesta de una lista de opciones, dependiendo del tipo de preguntas que se le realicen al cliente. El sistema debe contar con un modulo de administración, donde se pueden gestionar lo usuarios, roles y permisos, configuración de módulos y opciones que estarán disponibles en el sistema. Las empresas a las que el cliente se asocie deberán poder crearse a través de un modulo de mantenimiento de empresas.
Las empresas deberán contener información de documento de identificación, tipo y número, razón social y sigla, dirección, ciudad (municipio/departamento/país), teléfonos (fijos, celular) -permitir más de uno, contacto (puede ser un cliente registrado, los campos son los mismos de un cliente, no requiere contraseña).
Las opciones de mantenimiento de administración, empresas, clientes o mensajes deberá realizarse a través de un servicio rest api que además de ser usado por el sistema para lo que se requiere, puede puede ser invocado por un proceso externo a través de un mecanismo de autenticación basado en certificados digitales o en tokens expedidos por el sistema.
Para permitir la integración a este servicio, el sistema debe permitir registrar una URL de origen autorizada y por lo menos un estado de la integración (activo, inactivo, eliminada) y el token asignado.
El sistema debe contar con sistema de administración que permita manejar parámetros generales del sistemas, roles, usuarios, módulos, opciones, permisos (ingresar, crear, actualizar, retirar, importar, exportar, configurar, etc...) De acuerdo con las opciones disponibles en el sistema.
El mantenimiento hace referencia a creación/actualización/eliminación/consulta/impresión/envío de información por correo (smtp)/importación y exportación de datos (en formato pdf, xls, csv o json)
La impresión contará con un formato especifico dependiendo del alcance de la impresión: un registro (formato 1, formulario), todos los registros (formato 2, tabla), deberá permitir seleccionar registros un valor especifico, por una lista de valores, por un rango de valores o todos los registros; deberá permitir seleccionar registros por campos de fecha, por campos claves, o por campos de texto en particular contenidos dentro de las lista de campos contenidos en los los módulos desarrollados.
El cliente puede cambiar la contraseña en cualquier momento, pero deberá cumplir con una reglas mínimas que se puede definir en el modulo de administración: tamaño, complejidad (letras en mayúsculas , minúsculas, números, o caracteres especiales), debe permitir definir cual es el número de mínimo de cada elemento de la complejidad definida, el tiempo de duración de la clave y el número de intentos que podrá ingresar equivocándose antes de que se le bloquee la cuenta, incluyendo el mensaje que le aparecerá la momento de bloqueo de la misma . Las contraseñas deben ser almacenadas como HASH.
Si el usuario olvida su contraseña o tiene bloqueada la cuenta, podrá autogestionarla enviándole un vinculo a un correo registrado donde se le envíe un clave temporal y las instrucciones para hacer el cambio una vez ingrese.
El nombre del sistema, los titulos de modulos, el nombre de la compañía y los datos de contacto deben ser parametrizables a través del modulo de parametros generales.
El sistema debe permitir crear roles, y deberá contar con los siguientes roles predefinidos: seguridad, administrador, operador, usuario final.
Administrador es el único que puede configurar el sistemas por primera vez, crear/cambiar el nombre del sistema/módulos, parámetros de seguridad de cuentas de acceso; el administrador es el único que puede hacer mantenimiento a las compañías, el operador y el administrador podrán crear clientes manualmente, importarlos y exportarlos, desbloquear usuarios o contraseñas. Los demás usuarios será "usuario finales" y pueden únicamente ingresar a modificar sus datos personales, gestionar su contraseña o gestionar los mensajes que recibe en el modulo de mensaje.
Un usuario puede tener varios roles en sistema: ser usuario final, ser operador, ser administrador y tener permisos de seguridad.
Los módulos de usuarios, empresas, mensajes y parámetros del sistema deben contar con información de trazabilidad y seguridad que indique: quien creó, modificó, borró, imprimió, exportó o importó un registro, la fecha y hora, la dirección ip desde donde se realizó la operación, el nombre del host, la versión del OS y datos del navegador utilizado, servicio invocado, métodos y parámetros utilizados, resultado de la acción ejecutada: exitosa, fallida u estado temporal. Estos datos sólo estarán disponibles en modo de sólo lectura, pero podrá exportarse o enviarse por correo electrónico a un destinatario o grupo de destinatarios especificados.
El sistema debe contar con un menú horizontal o una barra vertical de iconos que muestre las opciones disponibles del sistema.
El sistema debe contar con una zona de encabezado - header y piede página que se pueda parametrizar, componente en que se entregará o página html que se pueda especificar.
El sistema debe contar con un dashboard principal donde el cliente pueda definir que modulos quiere ver por defecto y que permita mostrar las estadisticas de la información del sistema: Número de empresas, número de clientes, número de mensajes sin leer. El dashboard permitirá adicionar otros módulos personalizables.
La base de datos del sistema debe ser parametrizada y soportar SQL Server, Oracle, o MySQL, y las tablas deben estar normalizadas hasta 4a forma normal. La autenticación en las bases de datos deben contar con autenticación basada en usuario/contraseña o en seguridad integrada.
El sistema debe cumplir con buenas practicas de desarrollo seguro de acuerdo con lo indicado por OWASP
Contexto general del proyecto
Es un sistema basado en rest api para registrar clientes asociados a una o varias empresas, autogestionados por un cliente, creadas manualmente por un operador, a través de una integración usando apis.
Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Crear un nuevo sitio personalizado
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo una idea
Disponibilidad requerida Según se necesite
Roles necesarios Programador
Plazo de Entrega: No definido
Habilidades necesarias