client | ||
serveur | ||
README.md |
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
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