Le projet se concentre sur la recréation du Jellyfish Backend, un composant essentiel de l'application de messagerie Jellyfish conçue pour les plateformes Android et iOS. Le backend est méticuleusement développé selon les principes de conception axée sur le domaine et d’architecture épurée. La communication au sein du système est orchestrée à l'aide de la bibliothèque Meditr, qui met l'accent sur la séparation commande-requête (CQS) pour améliorer la clarté du code et la séparation des problèmes.
Même si le déploiement actuel fonctionne comme un monolithe, l’architecture est intrinsèquement flexible. Il peut rapidement s'adapter à un paradigme de microservices grâce à l'incorporation d'outils tels que des passerelles API (par exemple, Ocelot, YARP), la ségrégation des responsabilités des requêtes de commande (CQRS) et des processus de synchronisation de bases de données en arrière-plan. Ce dernier utilise le verrouillage optimiste avec gestion des versions de lignes pour garantir la cohérence entre les bases de données en lecture et en écriture.
En prévision des améliorations futures, l'architecture envisage la mise en œuvre d'une communication asynchrone via AMQP sur RabbitMQ. Cela permettra au système de gérer efficacement les événements via les files d’attente, jetant ainsi les bases de comportements de publication/abonnement robustes.
Pile technologique
Back-end
Frontend Web
Application mobile
C#/NET7
C#/NET7
C#/NET7
ASPNET
Serveur Blazor
.NET MAUI
MySQL 8.0.35
Composants du rasoir
SignalR
Composants de l'interface utilisateur Mudblazor (https://mudblazor.com/)
Docker
Noyau EF
Essai
Approche des tests unitaires :
Les tests unitaires sont une pratique fondamentale appliquée dans ce projet pour vérifier l'exactitude et la fonctionnalité des méthodes et des flux de processus. Même s’il est reconnu que toutes les méthodes ne sont pas testées individuellement, une approche équilibrée est adoptée. Le principe est d’éviter une ingénierie excessive et des tests excessifs, en trouvant un terrain d’entente qui garantit que les processus et méthodes critiques sont minutieusement testés.
Le comportement des tests unitaires adhère à la méthodologie standard arrange, act, assertion , qui est une approche courante et efficace dans les tests de logiciels. Cette méthodologie fournit un cadre structuré pour mettre en place les conditions de test, exécuter l'action spécifique et valider les résultats attendus.
Tests de bout en bout avec Postman :
Les tests de bout en bout sont effectués à l'aide de Postman, en tirant parti de la documentation de l'API Swagger générée et importée. Postman constitue un outil puissant pour des tests complets d'API, permettant de vérifier la fonctionnalité de l'ensemble du système. L'intégration de la documentation de l'API Swagger améliore l'efficacité du processus de test en fournissant une interface claire et interactive pour explorer et valider les points de terminaison de l'API.
Documentation
Documentation complète :
Le projet met fortement l'accent sur une documentation complète pour faciliter l'utilisation et la compréhension pour toutes les parties prenantes. Actuellement, la documentation comprend :
Documentation du diagramme entité-relation (EER) :
Une documentation EER détaillée a été préparée pour fournir un aperçu du modèle de données et des relations au sein du système. Cette documentation constitue une ressource précieuse pour les développeurs, les aidant à comprendre clairement la structure de la base de données sous-jacente.
Documentation Swagger :
Le projet s'appuie sur la documentation Swagger pour garantir une documentation API détaillée et interactive. Swagger fournit une interface intuitive et conviviale pour explorer et comprendre les points de terminaison, paramètres et réponses d'API disponibles. Cette documentation est essentielle pour les développeurs, car elle permet une intégration et une interaction transparentes avec les API fournies.
Déploiement
Héritage sur binaire ou avec conteneur Docker.
Motivation et objectifs du projet
Test de NET MAUI sur plusieurs plates-formes mobiles :
La principale motivation derrière le lancement de ce projet est de tester rigoureusement NET MAUI sur diverses plateformes mobiles. Cela implique des tests et une optimisation complets pour garantir des performances et une compatibilité transparentes sur les plates-formes spécifiées, apportant ainsi des informations précieuses à la communauté NET MAUI.
Permettre aux utilisateurs d’héberger leur propre infrastructure de messagerie :
L'un des objectifs clés de ce projet est de responsabiliser les utilisateurs en leur offrant la possibilité d'héberger leur infrastructure de messagerie de manière indépendante. Celui-ci vise à démocratiser l’accessibilité des services de messagerie, permettant aux utilisateurs de prendre le contrôle de leur environnement de communication.
Utilisation optimale des ressources :
Un effet secondaire notable de cette initiative est l’accent mis sur l’hébergement d’une infrastructure de messagerie avec un minimum de ressources matérielles. Plus précisément, le projet vise une utilisation efficace, permettant aux utilisateurs d'exécuter l'infrastructure sur du matériel accessible comme Raspberry Pi. Cet accent mis sur l'efficacité des ressources s'aligne sur l'engagement du projet en faveur de l'accessibilité et de la durabilité.
Sécurité et fonctionnalités futures
Cryptage de bout en bout et protection de la vie privée :
Assurer la sécurité des données des utilisateurs est primordial. Les prochaines étapes avant la sortie de la première version de production incluront la mise en œuvre méticuleuse du chiffrement de bout en bout. Cela fournira une couche de protection robuste pour les informations sensibles des utilisateurs. De plus, l’adoption du modèle de charge utile oubliable améliorera encore davantage la confidentialité en minimisant la conservation des données, conformément aux meilleures pratiques en matière de confidentialité.
Bots de support IA :
Face à l’avenir de l’interaction utilisateur, il est prévu d’intégrer des robots de support d’intelligence artificielle (IA) dans le système. Il est envisagé d'exploiter des technologies d'IA avancées telles que Google Llama ou ChatGPT. Ces robots basés sur l'IA amélioreront l'engagement des utilisateurs, rationaliseront les processus d'assistance et contribueront à une expérience utilisateur intelligente et réactive.
Infrastructure de la chaîne de blocs :
En explorant les technologies de pointe, il existe une vision prospective pour étudier la faisabilité d'héberger l'infrastructure du système sur la blockchain. Les avantages de la technologie blockchain, notamment l’amélioration de la sécurité, de la décentralisation et de la transparence, seront évalués. Cette approche avant-gardiste vise à pérenniser le système et à l’aligner sur les tendances émergentes en matière d’architectures sécurisées et décentralisées.
Faire
Back-end :
Docker.compose pour JellyfishBackend, PostgreSql
RateLimiter pour des actions spécifiques
IModelBinder+IModelBinderProvider pour HttpQuery et HttpBody pour résoudre et valider les données qui se trouvent à l'intérieur de « ApiDataTransferObject »
CRUD + Filtre de recherche (Transition de la requête http (json) au modèle de filtre dto en expression linq vers sql)
Expressions Linq vers SQL : remplacez/créez des opérateurs dans les objets de valeur et les modèles de domaine et traduisez-les en expressions Linq
Fonctionnalité de cache (actuellement IMemoryCache)
Point de terminaison de réinitialisation du mot de passe : activez la réinitialisation du mot de passe via la fonction « Modifier l'utilisateur » ; changement de logique de domaine : UpdateUser, commande updateuser + mise à jour du gestionnaire.
Cryptage du mot de passe dans la base de données avec la méthode de cryptage des meilleures pratiques
Auth/Autorisation : faites correspondre les données Jwt (réclamations, etc.) avec la base de données
Déclenchez des événements si les revendications de jeton ne correspondent pas aux rôles de la base de données ou si l'emplacement IP (Geo IP pour IPv4+v6 ou User-Agent différent de la création du jeton) est très différent. Avertissez les utilisateurs par e-mail.
Téléchargement de fichiers / Images de profil utilisateur / Pièces jointes provenant de messages ou de médias Jellyfish / Stratégie de stockage : évitez de stocker dans la base de données pour des raisons de performances. Implémentez une stratégie de mise en cache, créez du cache lors du démarrage du backend. Effectuez des vérifications antivirus à l'aide de contenu et d'un service d'IA externe (Azure= lien, AWS) pour détecter les téléchargements de médias violents/pornographiques.
Chaîne de responsabilité pour les virus et les contenus inadmissibles/violents (abstraction mise en œuvre)
Domaine : implémentez les contrôles de logique métier Chat.
RGPD : Module pour RGPD pour rendre disponible toutes les actions RGPD (signalisation, suppression etc.)
Implémentation de présentation/infrastructure/application des demandes de discussion/message/amitié d'entité de domaine : utiliser SignalR pour notifier les utilisateurs cibles, etc. -> Gestionnaire d'événements
Charge utile oubliée -> RGPD (allemand : DSGVO).
Cryptage de bout en bout pour les utilisateurs de Jellyfish. Séquence : les utilisateurs qui interagiront les uns avec les autres partageront les clés publiques. Lorsqu'un message sera créé par l'utilisateur-A, le message sera crypté avec la clé publique de l'utilisateur-B. Le message sera envoyé au backend et sera stocké (crypté) dans la base de données. L'utilisateur B a reçu le message via le signal ou interroge tous les messages non accusés de réception du backend (interrogation par reconnexion, lorsque la connexion est interrompue, par exemple perte de connexion à la cellule radio). L'utilisateur-B accuse réception du message au backend (le rake reçu sera affiché dans l'application de l'utilisateur-A). L'utilisateur-B déchiffre le message avec la clé privée.
Supprimer les messages qui ont été transmis avec succès à la cible
Cryptage SSL pour le backend.
Documentation Swagger
Réécrivez certains messages de réponse ASP.NET Core par défaut avec un filtre : par exemple, erreur HTTP 422 ou réponse non autorisée -> réécrivez la réponse d'erreur JSONAPI ----------> Présentation.Extension.JsonApiResultExtension.
FluentValidation : préparez les validateurs avec la gestion des réponses pour la réponse d'erreur JSONAPI en raison d'erreurs de validation. CommandHandlerValidators déjà implémentés : ValidationPipelineBehavior ; seule la règle de validation doit être définie dans les constructeurs de chaque CommandValidation.
Implémentations du contexte de délimitation du chat :
POST : /api/v1/chat, Créer une discussion (uniquement avec des amis, les exigences Domain-Logic définissent la règle selon laquelle une discussion a besoin d'au moins un message pour exister)
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine (état d'achèvement supprimé en raison de la règle New Business)
Mise en œuvre
Test (Test unitaire)
GET : /api/v1/chat/{chatId}, obtient le chat
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/chat/{chatId}, mettre à jour les informations de discussion telles que la description, le nom
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/chat/{chatId}, supprimer le chat
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/chat/{chatId}/picture/{messageId}, définit l'image du chat
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/chat/{chatId}/member/{userId}, Ajouter un utilisateur au chat (nouveau membre)
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/chat/{chatId}/member/{userId}, supprimer un membre du chat
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/chat/{chatId}/admin/{userId}, attribuer une action d'administrateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/chat/{chatId}/admin/{userId}, révoquer l'action de l'administrateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/chat/{chatId}/message, action de création de message
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/chat/{chatId}/message/{messageId}, action de mise à jour du message
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/chat/{chatId}/message/{messageId}, action de suppression de message
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
Implémentations du contexte de délimitation de l'utilisateur :
POST : /api/v1/user/register, enregistrer l'utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/password/reset/request, crée une demande de réinitialisation de mot de passe
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/password/change/{id?}, Modifier le point de terminaison du mot de passe pour l'interface utilisateur de l'administrateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/password/reset/{base64Token}, réinitialise le mot de passe avec l'URL de réinitialisation du mot de passe reçu par l'utilisateur (lien depuis le courrier)
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/activation/{base64Token}, activer l'utilisateur avec l'URL d'activation reçue (lien depuis le courrier)
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
GET : /api/v1/user/user-types, obtenez tous les types d'utilisateurs disponibles
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
GET : /api/v1/user/messenger/{guid}, obtenir le profil de messagerie de l'utilisateur (moins d'informations que le profil utilisateur par défaut)
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/friend/request, Créer une demande d'amitié
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
DELETE : /api/v1/user/friend/request, Supprimer la demande d'amitié
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
GET : /api/v1/user/friend/request, recevoir des demandes d'amitié
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/friend/request/accept, Accepter la demande d'amitié
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
OBTENIR : /api/v1/user/friend, obtenir des amis
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/user/friend, supprimer un ami
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/user/{id}/profile-picture, Ajouter une photo de profil
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/user/{id}/profile-picture, supprimer la photo de profil
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PATCH : /api/v1/user/{id}/role, attribuer un rôle à l'utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
SUPPRIMER : /api/v1/user/{id}/role, révoquer le rôle de l'utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
POST : /api/v1/user/, Créer un utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
GET : /api/v1/user/{id}, obtenir un utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
PUT : /api/v1/user/{id}, Mettre à jour un utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
DELETE : /api/v1/user/{id}, supprimer un utilisateur
Présentation
Mise en œuvre
Test (Test de la boîte grise)
Infrastructure
Mise en œuvre
Test (Test de la boîte grise)
Application
Commande/Requête
Validation (Fluentvalidation)
Gestionnaire
Gestion des événements
Domaine
Mise en œuvre
Test (Test unitaire)
Frontend Web :
Vérifiez toutes les requêtes http vers le backend et détectez tous les états avant toutes les erreurs, donc les codes http 4xx et 5xx
Icônes : icônes MudBlazor.
Barre de navigation :
Caractéristiques
Confidentialité
Section d'aide :
NavBar comme barre latérale avec des points d'aide
Corps avec recherche de points d'aide
Articles populaires
Onglets d'aide Android et iOS sous Points d'aide
Blogue :
Dernières informations sur les méduses
Télécharger:
Lien vers les magasins d'applications
Pied de page :
Icône de méduse
Droit d'auteur
Conditions d'utilisation et politique de confidentialité
Icônes de médias sociaux avec chaînes
Fonctionnalités (depuis Web-Frontend) :
Snackbar pour les notifications (toute action comme modifier l'utilisateur, recevoir une notification du service x/y, etc.) => https://mudblazor.com/components/snackbar#5ac08464-80c3-4c34-8cac-24f0947275e7
Page de connexion avec fonction de récupération de mot de passe
Mentions légales
RGPD :
Avis de non-responsabilité en matière de cookies
Tableau de bord.rasoir :
Graphiques :
Courriers sortants
Utilisateurs enregistrés par rapport au mois précédent
Fond du graphique légèrement grisé
_Host.cshtml : modification des messages par défaut
App.rasoir :
Page PageNotFound
Inscription.razor (Connexion + Inscription) :
Disposition des composants
Page de réussite après inscription
Utilisateurs.rasoir :
CRUD+Search (Recherche peut-être avec recherche élastique)
Action de réinitialisation du mot de passe séparément
Afficher la photo du profil utilisateur (image MudBlazor)
Télécharger une photo de profil utilisateur (MudBlazor FileUpload)
Journal d'audit de modification/suppression de l'utilisateur (tous les événements dans un tableau séparé)
Afficher les amis/demandes d'amitié des utilisateurs entrants
Rasoir santé :
Embellissez la vue du bilan de santé (actuellement la vue du bilan de santé par défaut sous forme de présentation)
Blogue :
Messages CRUD
Médias intégrés
Blog : Charger des articles verticalement avec la barre de progression verticale MudBlazor (animée)
Blog : Articles consultés avec la chronologie dans l'ordre gauche et droit
Authentification : minuterie en arrière-plan qui sera visible dans l'interface utilisateur lorsque le jeton n'est plus valide que 5 minutes, puis le suivi d'activation démarrera. Lorsque l'utilisateur déclenche des actions dans l'interface utilisateur, le jeton sera automatiquement actualisé dans le backend.
Magasin de session : stocke la dernière URL visitée
Propre profil
Voir
Modifier/Gérer
Application mobile :
Supprimer l'ancienne structure DTO et modèle et les anciens espaces de noms
Réécrire dans une nouvelle structure
Cache message/utilisateur dans SQLite, s'adapter à la nouvelle structure
Ajoutez de nouveaux WebApiClient et SignalRClient (client WebAPI de WebFrontend en partage, nouveau client SignalR (client typé) en partage pour réutilisation)
Msg-interceptor : Maintenir la chaîne d'invocateurs pour les procédures de message/notification (fonctionnalité de messagerie principale)
Réécrire les URL des points de terminaison cibles vers le backend vers une nouvelle structure backend
Chat : messagerie (interface utilisateur + backend de l'application)
Chat+Liste d'amis : Voir le profil
Chat : Messagerie (envoyer des pièces jointes)
Caractéristiques autonomes opposées à WhatsApp etc. :
Marquer les messages comme ne pouvant pas être capturés : ces messages sont estompés lors de la création d'une capture d'écran. Idem par photo de profil.
Calendriers de groupe : planifier des activités privées ensemble dans un calendrier Groupchat.
Se soucier du partage : marquez les messages comme non partageables, pour ne pas vous soucier des partages non autorisés :)
Possibilité d'héberger vous-même l'infrastructure de messagerie. Aucune dépendance envers les autres !
Contre la violence : les discussions privées d'aujourd'hui comme Telegramm sont exploitées par des personnes à des fins de violence et de contenu réservé aux adultes. Les méduses apportent donc la possibilité d’éviter le partage d’un tel contenu. L'algorithme d'apprentissage automatique évalue les médias qui seront partagés sur le messager. Lorsqu'un contenu violent est reconnu, le message envoyé sera évité. ** Nécessite Azure AI Vision ou un algorithme ML similaire **
Partage de position avec suivi en direct : inutile si vous êtes en groupe ou dans des discussions privées, vos mouvements seront diffusés en direct aux membres du chat lorsque le mode spectateur est activé (disponible uniquement dans la carte de suivi en direct).
Oubli : Le droit à l’oubli est une pierre angulaire du RGPD actuel. En supprimant le compte, toutes les données (y compris les messages de discussion partagés avec des amis) seront supprimées. Bien sûr, les médias aussi. Je suis conscient que la suppression des médias envoyés aux membres du chat n'est pas la pratique actuelle, mais chaque être humain a le droit que les données qu'il a créées puissent être oubliées.
Sondages/Votes : Par exemple pour WhatsApp : Les votes seront également disponibles en méduse.
Général:
DNS Preconf, fichiers hôtes Windows avec des noms égaux comme Docker
Définition de la licence
Conditions d'utilisation
Donation
Manuel d'installation et d'exécution
Restez à l'écoute .
Panneau d'administration Alpha 0.1
Tableau de bord
Gestion des utilisateurs (Users.razor) avec pagination et recherche
Gestion des utilisateurs (Users.razor) - Ajouter/Modifier
Gestion des utilisateurs (Users.razor) - Supprimer
VIDÉO : Aperçu du filtre de transition de la requête HTTP à l'expression Linq et enfin à la requête MySql via ORM (dynamiquement) / THUMBNAIL PNG CI-DESSOUS (HREF)
Diagramme de relation d'entité amélioré
Analyse codémétrique après l'ajout de MobileApp à la solution
Workflow d'intégration continue avec Github Action
Tests à partir de Core (cas d'utilisation et domaine)