À propos du projet

OwnChat est une application de messagerie desktop auto-hébergée destinée aux utilisateurs souhaitant maîtriser leurs communications. Elle suit une architecture client-serveur-client, où plusieurs clients desktop se connectent à un serveur central qui relaie les messages en temps réel. L'application est construite avec Java Swing pour l'interface utilisateur, Java Sockets pour la mise en réseau et Oracle Database pour le stockage persistant. Les fonctionnalités clés incluent : - **Création de compte et connexion** : Les identifiants des utilisateurs sont stockés dans la table `USER_DETAILS` et validés lors de la connexion. - **Gestion des contacts** : Les utilisateurs peuvent ajouter des contacts, consulter leur liste de contacts et vérifier si un contact est en ligne avant de démarrer une discussion. - **Messagerie en temps réel** : Chaque client connecté enregistre une socket auprès du serveur ; les messages sont relayés en direct au destinataire si sa fenêtre de chat est ouverte. Tous les messages sont journalisés dans `CHAT_HISTORY`. - **Historique des chats** : La réouverture d'une discussion avec un contact rejoue les messages précédents, codés par couleur selon l'expéditeur, avec des en-têtes de date/heure. - **Thèmes** : Les utilisateurs peuvent choisir entre les looks-and-feels Metal, Dark et Light. Le thème sélectionné est sauvegardé par utilisateur dans la table `SETTINGS` et appliqué automatiquement à la connexion. - **Suivi du statut en ligne/hors ligne** : Le serveur met à jour `LOG_STATUS` chaque fois qu'un utilisateur ouvre/ferme la liste des contacts ou se connecte/déconnecte, incluant un hook de déconnexion automatique à la fermeture de la fenêtre. - **IP du serveur configurable** : Les clients peuvent pointer vers n'importe quel hôte serveur via un écran de paramètres simple. - **Écran À propos** : Affiche les informations du développeur et le branding. Le projet est structuré en trois parties principales : l'application client, le serveur et le schéma de base de données. Le client se compose de plusieurs classes Java pour différents écrans (accueil, connexion, création de compte, paramètres, contacts, fenêtre de chat, etc.). Le serveur est multi-threadé, gérant chaque connexion client dans un thread séparé, et utilise une `ConcurrentHashMap` pour suivre les clients connectés afin de relayer les messages. Le schéma de base de données inclut des tables pour les utilisateurs, les paramètres, le statut de connexion, les contacts et l'historique des chats, avec des triggers pour amorcer automatiquement les paramètres par défaut et le statut initial hors ligne pour les nouveaux utilisateurs. La configuration implique de construire la base de données Oracle en exécutant le script SQL fourni, puis de lancer l'exécutable du serveur (OwnChatS-Portable.zip) et d'entrer les identifiants de la base de données, et enfin de lancer l'exécutable du client (OwnChat-Portable.zip), de définir l'IP du serveur, de créer un compte et de discuter. La feuille de route mentionne une future version web utilisant Servlets, JSP, J2EE et Spring Boot avec un frontend HTML/CSS/Bootstrap.