Go to file
2023-10-20 16:19:57 +02:00
client initial commit 2023-10-20 16:19:57 +02:00
serveur initial commit 2023-10-20 16:19:57 +02:00
README.md initial commit 2023-10-20 16:19:57 +02:00

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

img

- 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

img

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