Un forum anonyme permettant aux utilisateurs de publier des messages sous un pseudonyme sans système d'authentification.
Le projet est composé de quatre services:
- API: Service backend en Node.js (Express) gérant les messages du forum
- DB: Base de données MongoDB pour stocker les messages
- Thread: Frontend pour afficher les messages (port 80)
- Sender: Frontend pour écrire de nouveaux messages (port 8080)
- Docker et Docker Compose
- Git
-
Clonez le dépôt:
git clone <url-du-depot> cd forum-anonyme
-
Vérifiez que tous les fichiers nécessaires sont présents:
ls -la node-service/
Assurez-vous que les fichiers index.js et package.json existent.
-
Lancez l'application:
docker-compose up -d
-
Si vous rencontrez des erreurs, vérifiez les logs:
docker-compose logs -f forum-api
-
Accédez aux interfaces:
- Lecture des messages: http://localhost
- Écriture de messages: http://localhost:8080
/
├── docker-compose.yml # Configuration Docker Compose
├── .gitlab-ci.yml # Pipeline CI/CD
├── docker-cours/
│ └── node-service/ # Service API
│ ├── Dockerfile # Configuration de l'image Docker
│ ├── index.js # Code de l'API
│ └── package.json # Dépendances Node.js
├── thread/ # Service d'affichage des messages
│ ├── index.html # Interface utilisateur
│ └── nginx.conf # Configuration Nginx
npm install
- Pour créer un commit:
git add . npm run commit
-
Vérifier que l'API est en fonctionnement:
curl http://localhost/api/health
-
Créer un message:
curl -X POST http://localhost/api/messages \ -H "Content-Type: application/json" \ -d '{"pseudo":"TestUser", "content":"Ceci est un message de test"}'
-
Récupérer les messages:
curl http://localhost/api/messages
Le projet est configuré avec une pipeline CI/CD qui s'exécute à chaque commit:
- Validate: Vérifie le code (linting, formatting)
- Test: Exécute les tests automatisés
- Build: Construit les images Docker avec le tag correspondant au hash du commit
- Deploy: Déploie l'application sur le serveur cible
- Écriture de messages avec pseudonyme
- Affichage des messages par date (plus récent en premier)
- Interface simple et réactive
- Persistance des données via MongoDB