From f7fb9c4b1220efb32d6e4ed5088f3e7430920eef Mon Sep 17 00:00:00 2001 From: Manuel Date: Fri, 29 Aug 2025 00:34:45 +0200 Subject: [PATCH] docu --- README.md | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..abc6f6c --- /dev/null +++ b/README.md @@ -0,0 +1,156 @@ +# Galerías Fotográficas + +--- + +## Que problema identificamos + +Existen multiples alternativas para la distribución de imágenes digitales, como redes sociales o proveedores de almacenamiento en la nube. +Las redes sociales exponen publicamente y con poco control el contenido de las imágenes. +Los proveedores de almacenamiento ofrecen un control mayor sobre la exposición de las imágenes a cambio de una suscripción o pago por uso. + +Como profesional que espera cobrar por el trabajo, publicar fotos privadas en redes sociales abre camino a múltiples problemas: perdida de privacidad para el cliente, mala exposición y pobre posicionamiento web, perdida de calidad en la imágen, se impide reutilizar la imagen con otros fines sin herramientas de terceros que pueden ser perjudiciales para clientes y profesionales. +Usar proveedores como WeTransfer, Google Drive o Dropbox, requiere de pagos y un conocimiento mínimo sobre el uso de estos servicios por parte del cliente; además, para ahorrar costes los profesionales deben eliminar los grupos de imágenes con cierta frequencia o fracturar por tiempo de almacenamiento al cliente. +Ambas opciones limitan la cooperatividad y la recuperación de las imágenes por parte del cliente. +Además, expone fácilmente al profesional a varios riesgos y problemáticas emergentes con la evolución constante del software: la perdida de credenciales, el robo de identidad, el plagio, la pérdida de control sobre la calidad de transmisión de la imagen. + +Como cliente, recibir una sesión por WeTransfer limita las opciones de feedback y mejora o personalización. Recibirla por correo electrónico limita la cantidad de imágenes recibidas. Recibirlas por Google Drive o similares nos quita espacio de nuestro almacenamiento en la nube. Si el profesional publica las imágenes, referenciándos puede afectar a nuestra huella digital e imagen en redes. +Además, según la configuración del servicio que use el profesional, es común tener a disposición las imágenes solamente durante un tiempo determinado, haciendo imposible recuperarlas o acceder a ellas pasado ese tiempo. + +Ambos participantes de la actividad recaen en un moderno problema: necesitar diversos servicios para controlar un único recurso. +Como profesional, necesitas una web-portfolio, un perfil en redes, un servicio de almacenamiento y una forma de contacto con el cliente. +Como cliente, necesitas poder ver el trabajo anterior del profesional, contactar con él y poder revisar el trabajo de forma conjunta para lograr el resultado que uno espera. + +## Que queremos resolver + +Desde el punto de vista del profesional, podemos agrupar todos los servicios en un único servico. +Una especie de Amazon para imágenes. + +Desde el punto de vista del cliente, agrupandolo todo, evitamos la necesidad de acceder a tantos servicios diferentes y familiarizamos al usuario con una interfaz sencilla y directa, minimizando el roce con el aplicativo. + +## Alternativas a nuestra solución + +Existen multitud de alternativas a una web hecha a mano, como Wix o Joomla. +Existen alternativas cloud-native para alojar un portfolio. +Existen muchos proveedores de almacenamiento web. +Existen muchas redes sociales donde compartir las imágenes. +Existen metodos de comunicación y trabajo colaborativo. +En su gran mayoría, en servicios diferenciados. +Sin embargo no existe servicios unificados. + +--- + +## Despiece del problema + +### Almacenamiento + +El profesional no quiere tener que gastar en almacenamiento ni preocuparse del estado de un proveedor. +Por tanto, el sistema tiene que poder almacenar las imágenes durante mucho tiempo y mantenerlas en linea el mismo tiempo. + +### Distribución + +El profesional no quiere tener que usar más de un servicio para enviar las imágenes al cliente o subirlas a redes sociales. +El cliente no quiere recibir las imágenes en un zip o tener que descargarlas desde un servicio de terceros. + +### Trabajo colaborativo + +El profesional quiere que el cliente escoja la imagen que más el guste y le de feedback sobre el retoque y la edición de la imágen. +El cliente queire revisar el trabajo del profesional para escoger las imágenes que más le gusten. + +### Feedback + +El cliente puede dar feedback mediante comentarios en cada imágen como votando la imagen. +La nota asignada a cada imágen se determinará como: (votos positivos - votos negativos) / votos totales +Los comentarios se puntuarán de la misma forma. +El profesional podrá responder a los comentarios y los leerá de forma que el comentario con mejor puntuación quede el primero, en su defecto se ordenarán por fecha. + +El feedback también podrá ser dado a imágenes y colecciones del portfolio público, solamente lo podrán hacer los clientes autenticados. Aquellos que adquieran una sesión podrán dejar feedback al profesional de forma pública. + +### Portfolio + +El profesional no quiere gastar en otro servicio más para alojar el protfolio. +El profesional quiere subir las imágenes al servicio y escoger cuales van a conformar el portfolio. +El profesional quiere que la primera ojeada que tenga el cliente sobre el servicio sea el portfolio. + +### Colecciones + +El profesional quiere organizar las imágenes por fecha, personas que salen en ellas, categorías, eventos... +El profesional quiere poder reunir imágenes que se relacionen entre sí por categoría, evento, fechas, motivos... +El profesional quiere juntar todas las imágenes que van destinadas a un cliente. + +### Sesiones + +El profesional hará varias imágenes que revisará con el cliente. +El cliente escogerá únicamente las mejoras y que más le gusten. +El profesional revisará esas imágenes, con un límite numérico de imágenes totales. +El cliente recibirá una colección de esas imágenes. +Múltiples clientes y profesionales podrán trabajar en una única sesión. +Durante el proceso, debe existir una colaboración mutua mediante feedback. + +### Multiples clientes + +El profesional quiere poder trabajar sobre un proyecto y poder enviar el resultado del proyecto a multiples clientes. + +### Venta del servicio + +El profesional quiere cobrar una imágen única, una o varias colecciones, o una sesión. +Un cliente pagará por una imágen, una o diversas colección premaquetadas, y por una sesión. +Muchos clientes podrán pagar conjuntamente el servicio. + +### Usuarios + +Existirán 4 tipos de usuarios: + +- Anonimo +- Cliente +- Profesional +- Administrador + +El usuario anónimo podrá consultar el portfolio y ver los diferentes botones y enlaces para ver el resto de imágenes públicas, redes sociales, blog o identificarse. + +El cliente, o usuario identificado, podrá hacer lo mismo que el anónimo. También podrá comprar las diferentes imágenes y colecciones disponibles. Además, podrá contratar una sesión, interactuar con la sesión que tenga activa dando feedback o escogiendo las imágenes; y consultar pedidos anteriores para descargar las imágenes, publicarlas en redes sociales o compartirlas de forma directa con otros clientes identificados. + +El profesional, podrá editar las imágenes y colecciones públicas que haya en el portfolio; organizar nuevas sesiones, editar las sesiones en marcha y actualizarlas; crear y editar nuevas colecciones; crear y editar eventos y categorías. + +El administrador, podrá hacer lo mismo que el profesional y además podrá añadir profesionales y editar aspectos clave de la web. + +Para facilitar el registro y el inicio de sesión, los usuarios podrán iniciar sesión con Google, Microsoft, Meta y Apple. Además, contarán con la opción de usar correo y contraseña. Para ello nos adaptaremos a OpenId y OAuth 2. +Todos los usuarios tendrán un método MFA como sms o passkeys. +Aquellos usuarios que inicien sesión con contraseña, recibirán un magic link para entrar. + +### Conexiones lentas + +Todas las imágenes subidas se procesarán en 3 categorías: + +- Baja resolución: 360p, comprimidas en WebP +- Media resolución: 720p, comprimidas en WebP +- Resolución Nativa: nativa, sin compresión + +### Pagos + +Se establecerá como recomendación el uso de linkpay o servicios como google wallet. + +--- + +## Tecnologías a usar + +Back: +JWT, OpenId + OAuth 2 -> Duende Identity Server +DDD con CQRS -> MediatR +Entity Framework Core + sqlite -> Base de datos +AutoMapper -> Mapeo de objetos +Serilog + OpenTelemetry -> Logging y trazabilidad +Scalar + OpenApi -> Documentación y pruebas de API +FluentValidation -> Validación de modelos +Redis -> Almacenamiento en caché +mailkit -> Envío de correos electrónicos +ImageSharp -> Procesamiento de imágenes + +Front: +TailwindCSS -> Estilos +Angular -> Framework +RxJS -> Programación reactiva +NgRx -> Manejo del estado +scss -> Preprocesador CSS +axios -> Cliente HTTP +Vite -> Bundler +Typescript -> Lenguaje