---
title: Fonctionnalités Techniques
description: Détails des fonctionnalités clés du projet Memegoat
---

# 🚀 Fonctionnalités Techniques

Le projet Memegoat intègre un ensemble de fonctionnalités avancées pour garantir une expérience utilisateur fluide, sécurisée et performante.

## 🏗️ Infrastructure & Médias

### 📤 Publication & Traitement
Le coeur de la plateforme permet la publication sécurisée de mèmes et de GIFs avec un pipeline de traitement complet (voir le [Flux de Publication](/docs/flows#-publication-de-contenu-pipeline-médía)) :

<Cards>
  <Card icon="🛡️" title="Sécurité (Antivirus)" description="Chaque fichier uploadé est scanné en temps réel par ClamAV." />
  <Card icon="🎞️" title="Transcodage" description="Conversion automatique vers WebP (images) et WebM (vidéos)." />
  <Card icon="✅" title="Validation" description="Contrôle strict des formats (png, jpeg, webp, webm, gif) et des tailles." />
</Cards>

#### Détails du Pipeline :
- **Transcodage Haute Performance** : 
    - **Images & GIFs** : Conversion vers **WebP** (via `sharp`). Support de l'**AVIF** intégré.
    - **Vidéos** : Conversion vers **WebM** (VP9/Opus via `ffmpeg`). Support de l'**AV1** implémenté.
- **Validation Stricte** :
    - Limites de taille configurables (par défaut : 512 Ko pour les images, 1024 Ko pour les GIFs).
- **Gestion du Cycle de Vie** : Support du **Soft Delete** (Droit à l'oubli) et de la restauration temporaire.

### 📦 Stockage S3 (MinIO)
Pour la gestion des médias, Memegoat utilise **MinIO**, une solution de stockage d'objects compatible S3, auto-hébergée.

<Callout type="info" title="Isolation Réseau">
  Le serveur MinIO est isolé dans le réseau interne de Docker et n'est pas exposé directement sur internet. Le Backend fait office de proxy ou génère des URLs présignées.
</Callout>

---

## 🔍 Expérience Utilisateur

### 🔍 SEO & Partage
La plateforme est optimisée pour le référencement naturel et le partage social :
- **Metatags dynamiques** : Le Backend détecte les robots (Twitter, Facebook, Google) et sert un rendu HTML spécifique avec les balises OpenGraph et Twitter Cards.
- **URLs Sémantiques** : Chaque mème possède un slug unique généré à partir de son titre (ex: `memegoat.fr/contents/mon-super-meme`).
- **Indexation** : Structure sémantique HTML5 et Sitemap dynamique.
- **Rendus côté serveur (SSR)** : Utilisation de Next.js pour un affichage instantané pour les utilisateurs.

### ⚡ Performance & Cache
Pour garantir une réactivité maximale, Memegoat utilise plusieurs niveaux de cache :
- **Cache Redis** : Les résultats des requêtes fréquentes (tendances, exploration) sont stockés dans un cache Redis côté serveur.
- **Directives HTTP** : Utilisation rigoureuse des headers `Cache-Control` pour permettre la mise en cache par les navigateurs et les CDNs.

---

## 🛡️ Gouvernance & Sécurité

### 🕵️ Audit des Actions
Chaque action sensible sur la plateforme est tracée dans la table `audit_logs` :
- Modification de profil, suppression de contenu, changements de permissions.
- Enregistrement de l'auteur, de l'action, de l'horodatage et des détails techniques (IP hachée, User-Agent).

### 👤 Gestion du Profil
Un système complet de gestion de profil permet aux utilisateurs de :
- Gérer leurs informations personnelles (nom d'affichage, avatar).
- Configurer la **Double Authentification (2FA)**.
- Consulter leurs sessions actives et révoquer des accès.

### 💬 Interaction & Communauté
Memegoat favorise l'interaction entre les utilisateurs via plusieurs fonctionnalités sociales :
- **Système de Commentaires** : Les utilisateurs peuvent commenter les mèmes, répondre à d'autres commentaires et aimer les contributions.
- **Messagerie Privée** : Un système de messagerie sécurisé permettant des conversations directes entre utilisateurs, avec gestion des conversations et compteurs de messages non lus.

<Callout type="info">
  Toutes les données sensibles du profil sont protégées par **chiffrement PGP** au repos.
</Callout>

### 🚩 Modération & Signalements
Un système de modération intégré permet de maintenir la qualité du contenu :
- Signalement de contenus ou de tags inappropriés.
- Workflow : `pending` -> `reviewed` -> `resolved` / `dismissed`.
- Purge automatique des signalements obsolètes pour respecter la minimisation des données (RGPD).
