- Adjusted inconsistent formatting for better readability across components and services. - Enhanced type safety by adding placeholders for ignored error parameters and improving types across services. - Improved component organization by reordering imports consistently and applying formatting updates in UI components.
109 lines
5.1 KiB
Markdown
109 lines
5.1 KiB
Markdown
<h3 align="center">
|
|
<a name="readme-top"></a>
|
|
<img
|
|
src="https://git.yidhra.fr/repo-avatars/a65bdb0b2864a481aeb7ae2f21201938a25eda4dd36775163a21dc613dd7347c"
|
|
height="200"
|
|
>
|
|
</h3>
|
|
<div align="center">
|
|
<a href="https://git.yidhra.fr/Mathis/memegoat/src/branch/dev/LICENSE">
|
|
<img src="https://img.shields.io/badge/License-AGPL3.0-green" alt="License">
|
|
</a>
|
|
<a href="https://git.yidhra.fr/Mathis/memegoat/commits">
|
|
<img src="https://img.shields.io/badge/Status-Ongoing-blue" alt="Commits">
|
|
</a>
|
|
<a href="https://memegoat.fr">
|
|
<img src="https://img.shields.io/badge/Visit-memegoat.fr-orange" alt="Visit memegoat.fr">
|
|
</a>
|
|
</div>
|
|
|
|
<div>
|
|
<p align="center">
|
|
<a href="#">
|
|
<img src="https://img.shields.io/badge/Follow%20me%20on%20LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white" alt="Follow on LinkedIn" />
|
|
</a>
|
|
<a href="#">
|
|
<img src="https://img.shields.io/badge/Join%20my%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join our Discord" />
|
|
</a>
|
|
</p>
|
|
</div>
|
|
|
|
# 🐐 Memegoat
|
|
|
|
Memegoat est une plateforme moderne de partage et de création de mèmes, conçue avec une architecture robuste et sécurisée.
|
|
|
|
_Ce dépôt est en cours de développement. Nous intégrons actuellement les fonctionnalités clés dans le monorepo. Il n'est pas encore totalement prêt pour un déploiement auto-hébergé simplifié, mais vous pouvez le lancer localement._
|
|
|
|
## Qu'est-ce que Memegoat ?
|
|
|
|
[Memegoat](https://memegoat.fr) est votre destination ultime pour découvrir, créer et partager les meilleurs mèmes du web. Notre plateforme se concentre sur la performance, la sécurité des données et une expérience utilisateur fluide.
|
|
|
|
Retrouvez notre documentation complète sur : [docs.memegoat.fr](https://docs.memegoat.fr)
|
|
|
|
## Architecture & Stack Technique
|
|
|
|
Le projet est structuré en monorepo :
|
|
|
|
- **Frontend** : Next.js avec Tailwind CSS et Shadcn/ui.
|
|
- **Backend** : NestJS (TypeScript) avec PostgreSQL.
|
|
- **Base de données** : Drizzle ORM avec chiffrement natif PGP pour les données sensibles.
|
|
- **Infrastructure** : Docker, Caddy (Reverse Proxy & TLS), stockage compatible S3.
|
|
|
|
## Documentation Rapide
|
|
|
|
Pour approfondir vos connaissances techniques sur le projet :
|
|
- **[Modèle de Données](https://docs.memegoat.fr/docs/database)** : MCD, MLD et MPD.
|
|
- **[Sécurité](https://docs.memegoat.fr/docs/security)** : Chiffrement PGP, Argon2id, RBAC.
|
|
- **[Conformité RGPD](https://docs.memegoat.fr/docs/compliance)** : Mesures techniques et droits des utilisateurs.
|
|
- **[API & Intégrations](https://docs.memegoat.fr/docs/api)** : Authentification par sessions, clés API et 2FA.
|
|
|
|
## Comment l'utiliser ?
|
|
|
|
### Déploiement en Production
|
|
|
|
Le projet est prêt pour la production via Docker Compose.
|
|
|
|
1. **Prérequis** : Docker et Docker Compose installés.
|
|
2. **Variables d'environnement** : Copiez `.env.example` en `.env.prod` et ajustez les valeurs (clés secrètes, hosts, Sentry DSN, etc.).
|
|
3. **Lancement** :
|
|
```bash
|
|
docker-compose -f docker-compose.prod.yml up -d
|
|
```
|
|
4. **Services inclus** :
|
|
- **Frontend** : Next.js en mode standalone optimisé.
|
|
- **Backend** : NestJS avec clustering et monitoring Sentry.
|
|
- **Caddy** : Gestion automatique du SSL/TLS.
|
|
- **ClamAV** : Scan antivirus en temps réel des médias.
|
|
- **Redis** : Cache, sessions et limitation de débit (Throttling/Bot detection).
|
|
- **MinIO** : Stockage compatible S3.
|
|
|
|
### Sécurité et Performance
|
|
- **Transcodage Auto** : Toutes les images sont converties en WebP et les vidéos en WebM pour minimiser la bande passante.
|
|
- **Bot Detection** : Système intégré de détection et de bannissement automatique des crawlers malveillants via Redis.
|
|
- **Monitoring** : Tracking d'erreurs et profilage de performance via Sentry (Node.js et Next.js).
|
|
|
|
### Clés API
|
|
|
|
Pour utiliser l'API, vous pouvez générer des clés API sécurisées directement depuis votre profil sur [memegoat.fr](https://memegoat.fr).
|
|
|
|
## Fonctionnalités Clés
|
|
|
|
- **Sécurité Avancée** : Chiffrement des données personnelles au repos et hachage aveugle pour la recherche.
|
|
- **RGPD by Design** : Mécanismes de Soft Delete, purge automatique et hachage des IPs.
|
|
- **Multi-Authentification** : Support des sessions JWT, des clés API et de la double authentification (2FA).
|
|
- **Gestion de Contenu** : Support des mèmes et GIFs avec système de tags et signalements.
|
|
- **Traitement Médias Sécurisé** : Scan antivirus (ClamAV) systématique et transcodage haute performance (WebP, WebM, AVIF, AV1).
|
|
|
|
## Contribution
|
|
|
|
Les contributions sont les bienvenues ! Veuillez consulter notre guide de contribution avant de soumettre une pull request.
|
|
|
|
## Licence
|
|
|
|
Ce projet est principalement sous licence **GNU Affero General Public License v3.0 (AGPL-3.0)**. Certains composants, comme les SDKs, peuvent être sous licence MIT. Veuillez vous référer aux fichiers `LICENSE` dans les répertoires respectifs pour plus de détails.
|
|
|
|
<p align="right" style="font-size: 14px; color: #555; margin-top: 20px;">
|
|
<a href="#readme-top" style="text-decoration: none; color: #007bff; font-weight: bold;">
|
|
↑ Retour en haut ↑
|
|
</a>
|
|
</p> |