Ce projet consiste en la création d'un forum en ligne qui reprend les caractéristiques d'un forum classique : la publication de posts par des utilisateurs, like ou dislike de posts, pouvoir s'inscrire/se connecter, une multitude de catégories, la création de topics etc...
L'utilisateur non connecté pourra :
- Lire des sujets, posts, commentaires
L'utilisateur connecté devra avoir la possibilité de :
-
Créer des sujets (liés à une catégorie)
-
Réagir aux posts du sujet (likes, dislikes, commentaires)
Un système de filtrage des sujets est mis en place :
-
Par catégorie
-
Les sujets que l'utilisateur aura liké ou posté
-
L'utilisateur peut s'inscrire et se connecter
-
Les mots de passe seront hashés
-
Une session utilisateur sera mise en place en utilisant un cookie avec un temps d'expiration
-
Serveur web en Golang
-
Une URL par page
-
Base de donnée gérée & administrée avec SQLite
-
Les packages autorisés :
- Packages standards
- bcrypt (mots de passe sécurisés)
- sqlite3
- uuid (sessions de connexion avec cookies)
👉 Télécharger Golang
: https://golang.org
Avant de commencer, nous avons besoin d'installer des packages sur notre 💻 terminal en utilisant la commande suivante go get
suivie de :
-
golang.org/x/crypto/bcrypt
-
github.com/google/uuid
-
github.com/mattn/go-sqlite3
Téléchargeons le projet :
- Version release 👉 ici
Une fois le projet téléchargé, lançons Visual Studio Code
.
Pour le lancement du serveur, mettons-nous à la racine du projet pour pouvoir exécuter le fichier suivant server.go
.
Dans le terminal :
🔹 go run server.go
Le bon lancement du serveur se traduira par le message suivant :
Ouvrez votre navigateur et rendez-vous sur :
🔸 http://localhost:8080
ou directement ici
👉
Le dossier Projet_Forum
se découpe en plusieurs sous dossiers :
-
BDD : Dossier qui regroupe l'ensemble des fonctions pour les fonctionnalités liées à la base de données. (Ajout d'un post, ajout d'un utilisateur, etc.)
-
Handlers : Dossier qui regroupe l'ensemble des fonctions pour l'affichage des pages du site et les fonctionnalités plus globales. (Création du cookie, vérification des entrées lors de l'inscription, etc.)
-
Templates : Dossier qui regroupe les pages HTML (Hypertext Markup Language).
- Layouts : Dossier qui regroupe des templates utilisées dans plusieurs pages HTML. (header.html, sidebar.html)
-
Static :
- CSS : Feuilles de style en cascade.
- JavaScript : Dossier qui regroupe les scripts.
- Images : Dossier qui regroupe les images.
- 👉 Démo
Front-End :
Back-end :
Base de données :
Liste des versions :
- 👉 v4.0
Projet réalisé à Nantes Ynov Campus par les apprenants de la promo B1 Informatique 2020/2021
-
Elouan DUMONT
alias @ByMSRT -
Mattéo GRELLIER
alias @Matteo-Grellier -
Malo LOYER-VIAUD
alias @Karrwolf (ATTENTION Problème de GIT, Malo est aussi nommé @LemonIceStuff) -
Olivia MOREAU
alias @Liv44
Lien des contributions 👉 ici.
Nantes YNOV Campus - B1 Informatique - 2020/2021