# Pycord ## Dependances - Python3 - curses - npyscreen ## Instalation ``` $ git glone https://framagit.org/terminale-nsi-2020-2021/groupe-3-cl-ment-djalim/votre-projet.git ``` ## Uitlisation ### Lancer le serveur ``` $ cd serveur $ python3 serveur.py ``` ### Clients ##### Console ``` $ cd client $ python3 client.py ``` ##### HTML https://serveur-pgdg.net:5016 ## API l'api complete et detaillé se trouve dans client/fonctions.py # Cahier des Charges notions et algos du cours: - html / css / javascript - Bases de donnes sql - flask - compression (huffman) pas du cours - algorithme de hashage pour les mdp - algorithme de cryptage Idée globale: > Créer un logiciel de communication en message instantané qui permet d'envoyer des messages a des utilisateurs ou a un groupe de d'utilisateurs. # 1ere partie, le backend Gestion des comptes utilisateurs (pseudo + mots de passes), des groupes de chat, et des messages ## - gestion des compte et des groupes les groupes et les utilisateurs seront stoqués dans une base de données SQL | utilisateurs | valeur | |-|-| | user_id | int | | pseudo | str | | mot_de_passe_hash | str | | id_groupe | table| | id_amis| table | | groupes | valeur | |-|-| | grp_id | int | | nom_du_groupe | str | | user_id| str | | lien usr grp | valeur | |-|-| | grp_id | int | | user_id| str | Peut être rajouter une table 'role' qui lie les utilisateurs et les groupes auquels ils on accès ? | lien amis | valeur | |-|-| | user_id| str | | user_id| str |  ## - gestion des messages Le format qui stoque les messages se doit de pouvoir : - garder la date, l'heure et le contenu du message - etre modifiable pour genre supprimer des messages - etre cryptable - etre compressable le format csv remplit ces conditions on aurais donc un fichier: "id du groupe".csv et les lignes ressembleraient a ceci: |'id_user'|date/heure|message| |-|-|-| |123456|00:00_2021/01/01|'salut'| |987654|00:01_2021/01/01|'salut mon pote'| ## Gestion des fichiers sur le serveur Il faudra stoquer les photo de profils, les messages, et les éventuels fichiers partagés par les utilisateurs.
Serveur ├── Start-server.py ├── database.sql ├── groups-texts -----------------> # Ce dossier stoque les dossiers des differents groupes │ ├── 00 # Le dossier associé a un groupe porte son id comme nom │ │ ├── 00.csv │ │ ├── 00.csv.bak -----------> # Copie de secours du fichier qui contiendra les messages │ │ ├── 00.zip -----------> # Version compressée du fichier qui contiendra les messages │ │ └── shared ------------> # Ce dossier contient les fichiérs partagés par le groupe (*) │ │ ├── devoir_a_rendre.doc │ │ └── mon_chat.png │ └── 01 │ ├── 01.csv │ ├── 01.csv.bak │ ├── 01.zip │ └── shared │ └── photo_de_vacance.jpeg └── profile_pictures -------------> # Ce dossier contient toute les photos de profils ├── 123456.png --------------> # Les photos de profils portent l'id de l'utilisateur en nom └── 987654.png(*) On imposera probablement un taille limite et/ou on les supprimerera apres une periode de temps donné. # 2e Partie, le frontend interface graphique + fonctionalités ## Interface une interface moderne type skype ou messenger  ## fonctionalités du coté client - permetre l'inscription et la connection - faire en sortes qu'on puisse personnaliser (creer des groupes ...) - télécharger et uploader les photo de profils - télécharger et afficher que les dernier 50 messages ( on peut mettre ca dans le backend genre un script qui fait que le csv a tjr 50 lignes et les ancienne sont compressées et archivées - faire les requettes pour afficher les utilisateurs qu'on a en amis et les groupes auquels on appartient - algorithme de recherche des utilisateurs (peut etre pas necessaire du fait qu'on utilise sql) - detecter les utilisateurs en ligne - pourvoir envoyer autre chose que du texte (image,son,video,doc ...), - faire des groupes vocaux