Design, develop, and organize a full-stack web application with complete creative freedom. Choose your project concept, select from a wide range of technical modules, and make key architectural decisions. This highly flexible project allows you to explore modern web development while demonstrating your technical skills and creativity through a modular approach.
Find a file
Raphaël e44a3af76d
Logs module
## 🦌 Centralized Logging Stack Integration

### ELK Stack Online

- Added **`elasticsearch`**, **`logstash`**, and **`kibana`** services to `docker-compose.yml`:
  - **Elasticsearch** for log storage and indexing with persistent volumes.
  - **Logstash** as the GELF entrypoint, handling log ingestion and transformation.
  - **Kibana** as the web UI for log exploration, dashboards, and saved searches.
- Each ELK service is wired with:
  - **Persistent storage** to survive restarts.
  - **Environment variables** for credentials and tuning.
  - **Bootstrap scripts** to perform initial setup (policies, templates, dashboards, etc.).

### Global GELF Logging

- All existing services now use the **GELF logging driver** in `docker-compose.yml`:
  - Containers send their logs to **Logstash** instead of stdout-only.
  - Provides **structured**, centralized logs ready for querying in Elasticsearch/Kibana.
- Result: no more log hunting across containers — everything lands in one searchable place.

---

## 🔁 Log Lifecycle & Visualization Automation

### Elasticsearch & Kibana Bootstrap

- Introduced **bootstrap scripts and config files** to automate:
  - **Index Lifecycle Management (ILM)** policies for log retention and rollover.
  - **Index templates** for log indices (naming, mappings, and settings).
  - **Kibana imports** (index patterns / data views, dashboards, visualizations).
- This turns ELK setup from a manual ritual into a **single-command provisioning step**.

### Logstash Pipeline Upgrade

- Added a **Logstash pipeline configuration** to:
  - Ingest **GELF** logs from Docker.
  - **Normalize/rename fields** for consistent querying across services.
  - Index logs into **Elasticsearch** with **daily rotation per container** pattern.
- Outcome: logs are structured, tagged by container, and auto-rotated to keep storage sane.

---

## 🛠 Makefile & Docker.mk Enhancements

### Logs Setup Targets

- Added a new **`logs`** target in `Makefile` (with `.PHONY` declaration) to manage logging setup from the top level.
- Added a **`logs-setup`** target in `Docker.mk` to:
  - Initialize **ILM policies** in Elasticsearch.
  - Apply **index templates** for logs.
  - Create **Kibana index patterns** so logs are immediately visible in the UI.
- These targets plug into the existing tooling, making logging setup part of the **standard dev/ops workflow**.

---

## 🔐 Environment Configuration

### Secure Elasticsearch Access

- Updated `env.example` to include:
  - **`ELASTIC_PASSWORD`**: central password for Elasticsearch authentication.
- Encourages **secure-by-default** deployments and aligns local/dev with production-style security.

---

## 📈 Monitoring Configuration Updates

### Grafana Alerting & Prometheus Cleanup

- Added a **basic alerting policy for Grafana**:
  - Provides a default routing tree for alerts.
  - Acts as a foundation for future, more granular alert rules.
- Cleaned up **Prometheus scrape configuration**:
  - Removed obsolete backend scrape targets.
  - Keeps monitoring config focused on **live** and relevant services.
2025-11-14 22:01:24 +01:00
.github/workflows core(ci/husky): Added husky and CI Jobs 2025-10-07 22:18:23 +02:00
.husky core(ci/husky): Added husky and CI Jobs 2025-10-07 22:18:23 +02:00
frontend feat(frontend/auth): Added way to automatically fetch providers 2025-11-14 16:57:14 +01:00
logs feat(logs/kibana): made it so dashboard is default page 2025-11-14 18:32:28 +01:00
monitoring refactor(montoring/prometheus): removing the useless endpoint 2025-11-13 23:09:36 +01:00
nginx feat(chat): added base for chat service 2025-11-14 15:50:03 +01:00
nginx-dev feat(frontend/auth): fix cookie not working due to path being /app 2025-11-11 00:20:26 +01:00
openapi-template feat(openapi): Add modified typescript-fetch template 2025-11-10 18:34:22 +01:00
src chore(deps): updated pnpm-lock.yaml 2025-11-14 19:10:20 +01:00
.envrc fix(direnv/envrc): adding the use flake to the repo 2025-11-03 15:58:39 +01:00
.gitignore feat(chat): added base for chat service 2025-11-14 15:50:03 +01:00
docker-compose.yml feat(logs): make it so rule logs-setup isn't necessary 2025-11-14 17:58:45 +01:00
Docker.mk feat(logs): removed unused mkdir in elasticsearch 2025-11-14 18:54:39 +01:00
env.example core(env): adding the elastic password to the env 2025-11-14 16:21:49 +01:00
flake.nix feat(frontend): scaffolding to build frontend 2025-11-11 00:20:26 +01:00
Makefile feat(logs): make it so rule logs-setup isn't necessary 2025-11-14 17:58:45 +01:00
package.json feat(chat): added base for chat service 2025-11-14 15:50:03 +01:00
pnpm-workspace.yaml feat(frontend): scaffolding to build frontend 2025-11-11 00:20:26 +01:00
README.MD Rename README to README.MD 2025-07-09 17:22:01 +02:00

Modules ft_transcendence

Type de module Titre du module Technologie Description
Mandatory Base Website Technologies imposées Créer un site web avec TypeScript, SPA, backend PHP (optionnel), Docker, sécurité (HTTPS, validation, hash, etc.)
Major Backend Framework Fastify (Node.js) Créer un backend avec Fastify/Node.js
Major Blockchain Score Avalanche + Solidity Enregistrer les scores de tournoi sur Avalanche via des smart contracts
Major Standard User Management Technos libres (features imposées) Auth, profil, avatar, amis, stats, historique...
Major Remote Auth Google Sign-in Authentification via Google
Major Remote Players Technos libres Permettre à deux joueurs de jouer à distance
Major Multiplayer Game Technos libres Mode de jeu à plus de 2 joueurs
Major Add Another Game Technos libres Ajouter un second jeu avec matchmaking et historique
Major Live Chat Technos libres MP, block, invite à jouer, profils depuis le chat
Major AI Opponent Technos libres (A* interdit) IA qui simule un joueur humain (refresh 1s, entrées clavier simulées)
Major WAF & Vault WAF + ModSecurity + Vault Sécuriser via WAF, ModSecurity, Vault pour les secrets
Major 2FA + JWT 2FA + JWT Authentification double facteur avec tokens JWT sécurisés
Major ELK Stack Logging Elasticsearch + Logstash + Kibana Stack ELK pour logs, analyse et visualisation
Major Microservices Backend Technos libres Refactor backend en microservices
Major Advanced 3D Babylon.js Pong en 3D avec Babylon.js
Major Server-Side Pong Technos libres Pong serveur + API
Major CLI vs Web Pong Technos libres Jouer depuis le CLI contre un joueur Web via API
Minor Frontend Toolkit Tailwind CSS (avec TypeScript) Utiliser Tailwind CSS avec TypeScript pour le frontend
Minor Database SQLite Ajouter un backend utilisant SQLite comme base de données
Minor Game Customization Technos libres Options de jeu : powerups, maps, etc.
Minor Stats Dashboards Technos libres Dashboards utilisateurs + parties
Minor GDPR & Anonymization Technos libres Suppression de compte, anonymisation, gestion des données personnelles
Minor Monitoring Prometheus + Grafana Supervision avec Prometheus et visualisation avec Grafana
Minor Support All Devices Technos libres Responsive + support tactile, clavier, souris
Minor Browser Compatibility Technos libres Support dun navigateur supplémentaire
Minor Multilingual Technos libres Site multilingue avec au moins 3 langues
Minor Visual Impairment Technos libres Accessibilité visuelle : contrastes, navigation clavier, etc.
Minor SSR Technos libres Server Side Rendering pour perf + SEO