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.
## 🦌 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. |
||
|---|---|---|
| .github/workflows | ||
| .husky | ||
| frontend | ||
| logs | ||
| monitoring | ||
| nginx | ||
| nginx-dev | ||
| openapi-template | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| docker-compose.yml | ||
| Docker.mk | ||
| env.example | ||
| flake.nix | ||
| Makefile | ||
| package.json | ||
| pnpm-workspace.yaml | ||
| README.MD | ||
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 d’un 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 |