El proyecto se centra en recrear el backend de Jellyfish, un componente crítico de la aplicación de mensajería Jellyfish diseñada para plataformas Android e iOS. El backend se desarrolla meticulosamente siguiendo los principios de diseño basado en dominios y arquitectura limpia. La comunicación dentro del sistema se organiza utilizando la biblioteca Meditr, enfatizando la separación de consultas de comando (CQS) para mejorar la claridad del código y la separación de preocupaciones.
Si bien la implementación actual funciona como un monolito, la arquitectura es inherentemente flexible. Puede adaptarse rápidamente a un paradigma de microservicios con la incorporación de herramientas como puertas de enlace API (por ejemplo, Ocelot, YARP), segregación de responsabilidades de consultas y comandos (CQRS) y procesos de sincronización de bases de datos en segundo plano. Este último emplea bloqueo optimista con control de versiones de filas para garantizar la coherencia entre las bases de datos de lectura y escritura.
En previsión de futuras mejoras, la arquitectura prevé la implementación de comunicación asincrónica a través de AMQP sobre RabbitMQ. Esto permitirá que el sistema maneje eventos de manera eficiente a través de colas, sentando las bases para comportamientos sólidos de publicación/suscripción.
Pila de tecnología
backend
Interfaz web
Aplicación móvil
C#/NET 7
C#/NET 7
C#/NET 7
RED ASP
Servidor Blazor
.NET MAUI
MySQL 8.0.35
Componentes de maquinilla de afeitar
SeñalR
Componentes de la interfaz de usuario de Mudblazor (https://mudblazor.com/)
Estibador
Núcleo EF
Pruebas
Enfoque de prueba unitaria:
Las pruebas unitarias son una práctica fundamental aplicada en este proyecto para verificar la corrección y funcionalidad de los métodos y flujos de procesos. Si bien se reconoce que no todos los métodos se prueban individualmente, se adopta un enfoque equilibrado. El principio es evitar el exceso de ingeniería y pruebas, encontrando un término medio que garantice que los procesos y métodos críticos se prueben exhaustivamente.
El comportamiento de las pruebas unitarias se adhiere a la metodología estándar arrange, act, assertion , que es un enfoque común y eficaz en las pruebas de software. Esta metodología proporciona un marco estructurado para establecer las condiciones de prueba, ejecutar la acción específica y validar los resultados esperados.
Pruebas de extremo a extremo con Postman:
Las pruebas de un extremo a otro se realizan utilizando Postman, aprovechando la documentación de la API Swagger generada importada. Postman sirve como una poderosa herramienta para pruebas integrales de API, lo que permite verificar la funcionalidad de todo el sistema. La integración de la documentación de la API de Swagger mejora la eficiencia del proceso de prueba al proporcionar una interfaz clara e interactiva para explorar y validar los puntos finales de la API.
Documentación
Amplia documentación:
El proyecto pone un fuerte énfasis en la documentación integral para facilitar el uso y la comprensión por parte de todas las partes interesadas. Actualmente la documentación incluye:
Documentación del diagrama entidad-relación (EER):
Se ha preparado una documentación EER detallada para proporcionar información sobre el modelo de datos y las relaciones dentro del sistema. Esta documentación sirve como un recurso valioso para los desarrolladores, ya que ayuda a comprender claramente la estructura de la base de datos subyacente.
Documentación de arrogancia:
El proyecto aprovecha la documentación de Swagger para garantizar una documentación API detallada e interactiva. Swagger proporciona una interfaz intuitiva y fácil de usar para explorar y comprender los puntos finales, parámetros y respuestas de API disponibles. Esta documentación es esencial para los desarrolladores, ya que permite una integración e interacción perfectas con las API proporcionadas.
Despliegue
Legado sobre binario o con contenedor acoplable.
Motivación y objetivos del proyecto
Prueba de NET MAUI en múltiples plataformas móviles:
La principal motivación detrás de iniciar este proyecto es probar rigurosamente NET MAUI en varias plataformas móviles. Esto implica pruebas y optimización integrales para garantizar un rendimiento y compatibilidad perfectos entre las plataformas especificadas, contribuyendo con información valiosa a la comunidad NET MAUI.
Capacitar a los usuarios para que alojen su propia infraestructura de mensajería:
Uno de los objetivos clave de este proyecto es empoderar a los usuarios brindándoles la oportunidad de alojar su infraestructura de mensajería de forma independiente. Su objetivo es democratizar la accesibilidad de los servicios de mensajería, permitiendo a los usuarios tomar el control de su entorno de comunicación.
Utilización óptima de recursos:
Un efecto secundario digno de mención de esta iniciativa es el enfoque en habilitar el alojamiento de infraestructura de mensajería con recursos de hardware mínimos. Específicamente, el proyecto apunta a una utilización eficiente, permitiendo a los usuarios ejecutar la infraestructura en hardware accesible como Raspberry Pi. Este énfasis en la eficiencia de los recursos se alinea con el compromiso del proyecto con la accesibilidad y la sostenibilidad.
Funciones de seguridad y futuras
Cifrado de extremo a extremo y protección de la privacidad:
Garantizar la seguridad de los datos de los usuarios es primordial. Los próximos pasos antes del lanzamiento de la primera versión de producción incluirán la implementación meticulosa del cifrado de extremo a extremo. Esto proporcionará una sólida capa de protección para la información confidencial del usuario. Además, la adopción del patrón de carga útil olvidable mejorará aún más la privacidad al minimizar la retención de datos, alineándose con las mejores prácticas de privacidad.
Bots de soporte de IA:
Para abrazar el futuro de la interacción del usuario, existen planes para integrar robots de soporte de inteligencia artificial (IA) en el sistema. Se considera el aprovechamiento de tecnologías avanzadas de inteligencia artificial como Google Llama o ChatGPT. Estos bots impulsados por IA mejorarán la participación del usuario, agilizarán los procesos de soporte y contribuirán a una experiencia de usuario inteligente y receptiva.
Infraestructura de cadena de bloques:
Al explorar tecnologías de vanguardia, existe una visión de futuro para investigar la viabilidad de alojar la infraestructura del sistema en la cadena de bloques. Se evaluarán los beneficios de la tecnología blockchain, incluida la mayor seguridad, la descentralización y la transparencia. Este enfoque con visión de futuro tiene como objetivo preparar el sistema para el futuro y alinearlo con las tendencias emergentes en arquitecturas seguras y descentralizadas.
Hacer
Parte trasera:
Docker.compose para JellyfishBackend, PostgreSql
RateLimiter para acciones específicas
IModelBinder+IModelBinderProvider para HttpQuery y HttpBody para resolver y validar datos que están dentro de 'ApiDataTransferObject'
CRUD + Filtro de búsqueda (Transición de solicitud http (json) al modelo de filtro dto a expresión linq a sql)
Expresiones Linq a SQL: anular/crear operadores en objetos de valor y modelos de dominio y traducirlos a expresiones LINQ
Funcionalidad de caché (actualmente IMemoryCache)
Punto final de restablecimiento de contraseña: habilite el restablecimiento de contraseña a través de la función "Editar usuario"; Cambio de lógica de dominio: UpdateUser, comando updateuser + actualización del controlador.
Cifrado de contraseñas en la base de datos con el método de cifrado de mejores prácticas
Autenticación/Autorización: haga coincidir los datos de Jwt (reclamaciones, etc.) con la base de datos
Activa eventos si las reclamaciones de tokens no coinciden con los roles de la base de datos o si la ubicación de IP (Geo IP para IPv4+v6 o User-Agent diferente de la creación de tokens) es muy diferente. Notificar a los usuarios por correo electrónico.
Carga de archivos / Imágenes de perfil de usuario / Archivos adjuntos de mensajes o medios de Jellyfish / Estrategia de almacenamiento: evite almacenar en la base de datos por razones de rendimiento. Implemente una estrategia de almacenamiento en caché, acumule caché durante el inicio del backend. Realizar comprobaciones de virus utilizando contenido y un servicio de inteligencia artificial externo (Azure= link, AWS) para detectar cargas de medios violentos/pornografía.
Cadena de responsabilidad por virus y contenidos inadmisibles/violentos (abstracción implementada)
Dominio: implementar comprobaciones de lógica empresarial de chat.
GDPR: Módulo para GDPR para que todas las acciones de GDPR estén disponibles (informes, eliminación, etc.)
Implementación de presentación/infraestructura/aplicación de solicitudes de chat/mensaje/amistad de usuario de entidad de dominio: utilice SignalR para notificar a los usuarios de destino, etc. -> Controlador de eventos
Carga útil olvidable -> GDPR (alemán: DSGVO).
Cifrado de extremo a extremo para usuarios de Jellyfish. Secuencia: Los usuarios que interactuarán entre sí compartirán las claves públicas. Cuando el Usuario-A crea un mensaje, el mensaje se cifrará con la clave pública del Usuario-B. El mensaje se enviará al backend y se almacenará (cifrará) en la base de datos. El usuario B recibió el mensaje a través del señalizador o sondea todos los mensajes no reconocidos desde el servidor (sondeo mediante reconexión, cuando la conexión se pierde, por ejemplo, se pierde la conexión a la celda de radio). El Usuario B reconoce el mensaje al backend (el rake recibido se mostrará en la aplicación del Usuario A). El usuario B descifra el mensaje con la clave privada.
Eliminar mensajes que se entregaron exitosamente al destino
Cifrado SSL para backend.
Documentación de arrogancia
Reescriba algunos mensajes de respuesta predeterminados de ASP.NET Core con un filtro: por ejemplo, error HTTP 422 o respuesta no autorizada -> reescriba en respuesta de error JSONAPI ----------> Presentation.Extension.JsonApiResultExtension.
FluentValidation: Prepare validadores con manejo de respuestas para respuestas de error JSONAPI debido a errores de validación. CommandHandlerValidators ya implementados: ValidationPipelineBehavior; sólo la regla de validación necesita definición en los constructores de cada CommandValidation.
Implementaciones de contexto delimitador de chat:
POST: /api/v1/chat, Crear chat (solo con amigos, los requisitos de Domain-Logic definieron la regla de que un chat necesita al menos un mensaje para existir)
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio (estado de finalización eliminado debido a la regla de nuevos negocios)
Implementación
Prueba (prueba unitaria)
GET: /api/v1/chat/{chatId}, Obtiene el chat
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/chat/{chatId}, actualizar información del chat como descripción, nombre
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/chat/{chatId}, Eliminar chat
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/chat/{chatId}/picture/{messageId}, establece la imagen del chat
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/chat/{chatId}/member/{userId}, Agregar usuario al chat (nuevo miembro)
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/chat/{chatId}/member/{userId}, Eliminar miembro del chat
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/chat/{chatId}/admin/{userId}, Asignar acción de administrador
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/chat/{chatId}/admin/{userId}, Revocar acción de administrador
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/chat/{chatId}/message, acción de creación de mensaje
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/chat/{chatId}/message/{messageId}, acción de actualización de mensaje
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/chat/{chatId}/message/{messageId}, acción de eliminación de mensaje
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
Implementaciones de contexto delimitador de usuario:
POST: /api/v1/user/register, Registrar usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/user/password/reset/request, Crea solicitudes de restablecimiento de contraseña
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/user/password/change/{id?}, Cambiar punto final de contraseña para la interfaz de usuario del administrador
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/user/password/reset/{base64Token}, restablece la contraseña con la URL de restablecimiento de contraseña recibida por el usuario (enlace desde el correo)
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/user/activation/{base64Token}, Activar usuario con la URL de activación recibida (enlace desde el correo)
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
OBTENER: /api/v1/user/user-types, Obtener todos los tipos de usuarios disponibles
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
OBTENER: /api/v1/user/messenger/{guid}, Obtener el perfil de Messenger del usuario (menos información que el perfil de usuario predeterminado)
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUBLICACIÓN: /api/v1/user/friend/request, Crear solicitud de amistad
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/user/friend/request, Eliminar solicitud de amistad
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
OBTENER: /api/v1/user/friend/request, Obtener solicitudes de amistad
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
POST: /api/v1/user/friend/request/accept, Aceptar solicitud de amistad
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
OBTENER: /api/v1/user/friend, Obtener amigos
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/user/friend, Eliminar amigo
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/user/{id}/profile-picture, Agregar imagen de perfil
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/user/{id}/profile-picture, Eliminar imagen de perfil
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PARCHE: /api/v1/user/{id}/role, Asignar rol al usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/user/{id}/role, Revocar rol del usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUBLICACIÓN: /api/v1/user/, Crear un usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
OBTENER: /api/v1/user/{id}, Obtener un usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
PUT: /api/v1/user/{id}, Actualizar un usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
ELIMINAR: /api/v1/user/{id}, Eliminar un usuario
Presentación
Implementación
Prueba (prueba de caja gris)
Infraestructura
Implementación
Prueba (prueba de caja gris)
Solicitud
Comando/Consulta
Validación (validación de fluidez)
Entrenador de animales
Manejo de eventos
Dominio
Implementación
Prueba (prueba unitaria)
Interfaz web:
Verifique todas las solicitudes http al backend y detecte todos los estados, por encima de todos los errores, por lo que los códigos http 4xx y 5xx
Iconos: Iconos de MudBlazor.
Barra de navegación:
Características
Privacidad
Sección de ayuda:
NavBar como barra lateral con puntos de ayuda
Cuerpo con búsqueda de puntos de ayuda.
Artículos populares
Pestañas de ayuda de Android e iOS en Puntos de ayuda
Blog:
Información más reciente sobre las medusas
Descargar:
Enlace a tiendas de aplicaciones
Pie de página:
Icono de medusa
Derechos de autor
Términos de uso y política de privacidad
Iconos de redes sociales con canales
Características (de Web-Frontend):
Snackbar para notificaciones (cualquier acción como editar usuario, recibir notificación del servicio x/y, etc.) => https://mudblazor.com/components/snackbar#5ac08464-80c3-4c34-8cac-24f0947275e7
Página de inicio de sesión con función de recuperación de contraseña
Impresión
RGPD:
Descargo de responsabilidad sobre cookies
Panel de control.razor:
Gráficos:
correos salientes
Usuarios registrados respecto al mes anterior
Fondo del gráfico ligeramente gris
_Host.cshtml: Cambio de mensajes predeterminados
Aplicación.razor:
Página no encontrada
Signup.razor (Iniciar sesión + Registrarse):
Disposición de los componentes
Página de éxito después del registro
Usuarios.razor:
CRUD+Buscar (Buscar quizás con búsqueda elástica)
Acción de restablecimiento de contraseña por separado
Ver imagen de perfil de usuario (imagen de MudBlazor)
Cargar imagen de perfil de usuario (MudBlazor FileUpload)
Usuario Editar/Eliminar registro de auditoría (todos los eventos en una tabla separada)
Ver las solicitudes de amistad/amigos entrantes de los usuarios
Navaja de salud:
Embellezca la vista de control de salud (actualmente la vista de control de salud predeterminada como presentación)
Blog:
Publicaciones CRUD
Medios integrados
Blog: cargar publicaciones verticalmente con la barra de progreso vertical de MudBlazor (animada)
Blog: Las publicaciones se ven con una línea de tiempo con orden de izquierda y derecha
Autenticación: temporizador en segundo plano que será visible en la interfaz de usuario cuando el token tenga solo 5 minutos de validez y luego comenzará el seguimiento de activación. Cuando el usuario activa acciones en la interfaz de usuario, el token se actualizará automáticamente en el backend.
Tienda de sesiones: almacena la última URL visitada
Perfil propio
Vista
Editar/Administrar
Aplicación móvil:
Eliminar la antigua estructura de modelo y DTO y los espacios de nombres antiguos
Reescribir a nueva estructura
Caché de mensajes/usuarios en SQLite, adaptarse a la nueva estructura
Agregue nuevos WebApiClient y SignalRClient (cliente WebAPI de WebFrontend en compartido, nuevo cliente SignalR (cliente escrito) en compartido para reutilización)
Msg-interceptor: mantiene la cadena de invocadores para procedimientos de mensajes/notificaciones (funcionalidad principal de mensajería)
Vuelva a escribir las URL de los puntos finales de destino para el backend en una nueva estructura de backend
Chat: Mensajería (UI+backend de la aplicación)
Chat+Lista de Amigos: Ver perfil
Chat: Mensajería (enviar archivos adjuntos)
Características independientes frente a WhatsApp, etc.:
Marcar mensajes como no se pueden tomar capturas de pantalla: estos mensajes se borran al crear una captura de pantalla. Lo mismo por foto de perfil.
Calendarios grupales: planificar actividades privadas juntos en un calendario de Groupchat.
Preocuparse por compartir: marque los mensajes como no compartibles, para no preocuparse por compartir no permitido :)
Capacidad para alojar la infraestructura de mensajería por su cuenta. ¡Sin dependencia de los demás!
Contra la violencia: Hoy en día, la gente abusa de los chats privados como Telegramm para generar violencia y contenido para adultos. Entonces, Jellyfish brinda la capacidad de evitar compartir dicho contenido. El algoritmo de aprendizaje automático evalúa los medios que se compartirán a través del mensajero. Cuando se reconozca contenido violento se evitará el mensaje enviado. ** Requiere Azure AI Vision o un algoritmo de aprendizaje automático similar **
Compartir ubicación con seguimiento en vivo: innecesario si estás en grupos o chats privados, tus movimientos se transmitirán en vivo a los miembros del chat cuando el modo espectador esté activado (solo disponible en el mapa de seguimiento en vivo).
Oblivion: El derecho a olvidar es una piedra angular del RGPD actual. Al eliminar la Cuenta, se eliminarán todos los datos (también los mensajes de chat que se comparten con amigos). Por supuesto, los medios también. Soy consciente de que la eliminación de los medios que se envían a los miembros del chat no es una práctica actual, pero cada ser humano tiene derecho a que se olviden los datos que creó.
Encuestas/Votos: En ejemplo para WhatsApp: Los votos también estarán disponibles en medusas.
General:
DNS Preconf, nombres iguales de archivos de hosts de Windows como Docker
Definición de licencia
Condiciones de uso
Donación
Manual de instalación y ejecución.
Manténganse al tanto .
Panel de administración Alfa 0.1
Panel
Gestión de usuarios (Users.razor) con paginación y búsqueda
Gestión de usuarios (Users.razor): agregar/editar
Gestión de usuarios (Users.razor) - Eliminar
VIDEO: Vista previa del filtro de transición de la solicitud Http a la expresión Linq y finalmente a la consulta MySql a través de ORM (dinámicamente)/PNG MINIATURA A CONTINUACIÓN (HREF)
Diagrama de relación de entidad mejorado
Análisis codemétrico después de agregar MobileApp a la solución
Flujo de trabajo de integración continua con Github Action