322 lines
No EOL
10 KiB
Text
322 lines
No EOL
10 KiB
Text
---
|
|
id: overview
|
|
title: Vue d'ensemble Veza Platform
|
|
sidebar_label: Vue d'ensemble
|
|
description: Plateforme de streaming audio et chat en temps réel - Architecture microservices moderne
|
|
keywords: [veza, platform, streaming, audio, chat, real-time, microservices]
|
|
---
|
|
|
|
# 🎵 Veza Platform - Vue d'ensemble
|
|
|
|
**Plateforme de streaming audio et chat en temps réel** construite avec une architecture microservices moderne.
|
|
|
|
## 🚀 Services Principaux
|
|
|
|
<div className="row">
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>🌐 Frontend Web</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>Application React 19 + TypeScript avec streaming audio, chat temps réel, et interface moderne.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/sectors/web" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>🔧 Backend API</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>API REST en Go avec Gin, gestion de l'authentification, base de données PostgreSQL et cache Redis.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/backend/go-api" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>💬 Chat Server</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>Serveur de chat en Rust avec WebSocket, gestion des messages en temps réel et modération automatique.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/backend/rust-chat" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="row">
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>🎵 Stream Server</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>Serveur de streaming audio en Rust avec compression adaptative, analytics et gestion des fichiers.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/backend/rust-stream" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>🛡️ Infrastructure</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>HAProxy + Coraza WAF, observabilité complète (Prometheus, Grafana, ELK), et sécurité avancée.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/infra/observability" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="col col--4">
|
|
<div className="card">
|
|
<div className="card__header">
|
|
<h3>📊 Monitoring</h3>
|
|
</div>
|
|
<div className="card__body">
|
|
<p>Stack complète d'observabilité avec métriques, logs, traces et alertes automatisées.</p>
|
|
</div>
|
|
<div className="card__footer">
|
|
<a href="/docs/infra/observability" className="button button--primary button--block">
|
|
Voir la documentation
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
## 🏗️ Architecture
|
|
|
|
Veza suit une **architecture microservices** moderne avec séparation claire des responsabilités, scalabilité horizontale et résilience intégrée.
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph "Client Layer"
|
|
WEB[Web App<br/>React + TypeScript<br/>Port: 5176]
|
|
DESKTOP[Desktop App<br/>Electron<br/>Port: 3000]
|
|
MOBILE[Mobile App<br/>React Native<br/>Port: 8081]
|
|
end
|
|
|
|
subgraph "Edge Layer"
|
|
LB[Load Balancer<br/>HAProxy<br/>Port: 80/443]
|
|
WAF[WAF<br/>Coraza<br/>Security Layer]
|
|
end
|
|
|
|
subgraph "API Gateway"
|
|
GATEWAY[API Gateway<br/>Go + Gin<br/>Port: 8080]
|
|
end
|
|
|
|
subgraph "Microservices"
|
|
API[API Service<br/>Go + Gin<br/>Port: 8081]
|
|
CHAT[Chat Service<br/>Rust + Axum<br/>Port: 3001]
|
|
STREAM[Stream Service<br/>Rust + Axum<br/>Port: 3002]
|
|
AUTH[Auth Service<br/>Go + JWT<br/>Port: 8082]
|
|
end
|
|
|
|
subgraph "Data Layer"
|
|
PG[(PostgreSQL<br/>Primary Database<br/>Port: 5432)]
|
|
REDIS[(Redis<br/>Cache + Sessions<br/>Port: 6379)]
|
|
S3[(S3 Storage<br/>Audio Files<br/>AWS/MinIO)]
|
|
end
|
|
|
|
subgraph "Message Queue"
|
|
NATS[NATS<br/>Event Streaming<br/>Port: 4222]
|
|
end
|
|
|
|
subgraph "Observability"
|
|
PROM[Prometheus<br/>Metrics<br/>Port: 9090]
|
|
GRAF[Grafana<br/>Dashboards<br/>Port: 3000]
|
|
ELK[ELK Stack<br/>Logs<br/>Port: 9200]
|
|
end
|
|
|
|
WEB --> LB
|
|
DESKTOP --> LB
|
|
MOBILE --> LB
|
|
|
|
LB --> WAF
|
|
WAF --> GATEWAY
|
|
|
|
GATEWAY --> API
|
|
GATEWAY --> CHAT
|
|
GATEWAY --> STREAM
|
|
GATEWAY --> AUTH
|
|
|
|
API --> PG
|
|
API --> REDIS
|
|
API --> S3
|
|
|
|
CHAT --> REDIS
|
|
CHAT --> NATS
|
|
|
|
STREAM --> S3
|
|
STREAM --> NATS
|
|
|
|
AUTH --> PG
|
|
AUTH --> REDIS
|
|
|
|
PROM --> API
|
|
PROM --> CHAT
|
|
PROM --> STREAM
|
|
PROM --> AUTH
|
|
|
|
GRAF --> PROM
|
|
ELK --> API
|
|
ELK --> CHAT
|
|
ELK --> STREAM
|
|
```
|
|
|
|
## 📚 Sections de Documentation
|
|
|
|
### 🏗️ Architecture
|
|
- [Architecture Système](/docs/architecture/system) - Vue d'ensemble des microservices
|
|
- [Architecture des Données](/docs/architecture/data/er-diagram) - Modèle de données et relations
|
|
|
|
### 🌐 Sectors
|
|
- [Web Application](/docs/sectors/web) - React 19 + TypeScript + Vite
|
|
|
|
### 🔧 Backend Services
|
|
- [Go API Service](/docs/backend/go-api) - API REST principale
|
|
- [Rust Chat Server](/docs/backend/rust-chat) - Chat temps réel
|
|
- [Rust Stream Server](/docs/backend/rust-stream) - Streaming audio
|
|
|
|
### 🛡️ Infrastructure
|
|
- [Conteneurs](/docs/infra/containers) - Docker, Docker Compose, Kubernetes
|
|
- [Réseau](/docs/infra/networking) - HAProxy, Coraza, load balancing
|
|
- [Sécurité](/docs/infra/security) - WAF, authentification, autorisation
|
|
- [Observabilité](/docs/infra/observability) - Prometheus, Grafana, ELK, Jaeger
|
|
- [CI/CD](/docs/infra/ci-cd) - GitHub Actions, déploiement automatisé
|
|
|
|
### 🔧 SRE & QA
|
|
- [CI/CD](/docs/infra/ci-cd) - Déploiement automatisé et intégration continue
|
|
|
|
### 📖 API Reference
|
|
- [OpenAPI](/docs/api-reference/openapi) - Documentation interactive
|
|
|
|
### 📈 Product
|
|
- [Roadmap](/docs/product/roadmap) - Feuille de route produit
|
|
|
|
## 🛠️ Technologies Utilisées
|
|
|
|
| Service | Langage | Framework | Base de Données | Port |
|
|
|---------|---------|-----------|-----------------|------|
|
|
| Web App | TypeScript | React 19 + Vite | - | 5176 |
|
|
| Desktop App | TypeScript | Electron | - | 3000 |
|
|
| Mobile App | TypeScript | React Native | - | 8081 |
|
|
| Backend API | Go | Gin + GORM | PostgreSQL + Redis | 8081 |
|
|
| Chat Server | Rust | Axum + WebSocket | PostgreSQL + Redis | 3001 |
|
|
| Stream Server | Rust | Axum + Symphonia | S3 + Redis | 3002 |
|
|
| Auth Service | Go | JWT + bcrypt | PostgreSQL + Redis | 8082 |
|
|
| Load Balancer | - | HAProxy | - | 80/443 |
|
|
| WAF | - | Coraza | - | 80/443 |
|
|
| Monitoring | - | Prometheus + Grafana | - | 9090/3000 |
|
|
|
|
## 🚀 Démarrage Rapide
|
|
|
|
### Prérequis
|
|
- Docker et Docker Compose
|
|
- Node.js 18+
|
|
- Go 1.23+
|
|
- Rust 1.70+
|
|
|
|
### Installation
|
|
```bash
|
|
# Cloner le repository
|
|
git clone https://github.com/okinrev/veza-full-stack.git
|
|
cd veza-full-stack
|
|
|
|
# Démarrer avec Docker Compose
|
|
docker-compose up -d
|
|
|
|
# Ou développement local
|
|
make dev
|
|
```
|
|
|
|
### Accès aux Services
|
|
- **Frontend Web**: http://localhost:5176
|
|
- **Backend API**: http://localhost:8081
|
|
- **Chat Server**: http://localhost:3001
|
|
- **Stream Server**: http://localhost:3002
|
|
- **Grafana**: http://localhost:3000
|
|
- **Prometheus**: http://localhost:9090
|
|
|
|
## 📈 Fonctionnalités Principales
|
|
|
|
### 🎵 Streaming Audio
|
|
- **Formats Supportés**: MP3, AAC, OGG, FLAC, WAV
|
|
- **Qualité Adaptative**: Ajustement automatique selon la bande passante
|
|
- **Compression Intelligente**: Optimisation de la qualité et de la taille
|
|
- **Live Recording**: Enregistrement en direct avec gestion des métadonnées
|
|
- **Multi-utilisateurs**: Synchronisation temps réel
|
|
|
|
### 💬 Chat en Temps Réel
|
|
- **WebSocket**: Communication bidirectionnelle instantanée
|
|
- **Salons Privés**: Création et gestion de salons de discussion
|
|
- **Messages Privés**: Communication directe entre utilisateurs
|
|
- **Modération**: Filtrage automatique et outils de modération
|
|
- **Présence**: Indicateurs de présence et de frappe
|
|
|
|
### 🔐 Authentification & Sécurité
|
|
- **JWT Tokens**: Authentification stateless sécurisée
|
|
- **OAuth2**: Intégration avec Google, GitHub, Discord
|
|
- **Magic Links**: Authentification sans mot de passe
|
|
- **2FA**: Authentification à deux facteurs
|
|
- **Rate Limiting**: Protection contre les abus
|
|
- **WAF**: Protection contre les attaques web
|
|
|
|
### 📊 Analytics & Monitoring
|
|
- **Métriques Temps Réel**: Utilisateurs actifs, messages, streams
|
|
- **Health Checks**: Monitoring de la santé des services
|
|
- **Logs Structurés**: Traçabilité complète des opérations
|
|
- **Alertes**: Notifications automatiques en cas de problème
|
|
- **Dashboards**: Visualisation des métriques et KPIs
|
|
|
|
## 🤝 Contribution
|
|
|
|
Nous accueillons les contributions ! Consultez notre guide de contribution :
|
|
|
|
- [Guide de Développement](/docs/meta/contributing-docs)
|
|
- [Guide de Déploiement](/docs/infra/ci-cd)
|
|
- [Style Guide](/docs/meta/style-guide)
|
|
|
|
## 📞 Support
|
|
|
|
- **GitHub Issues**: [Signaler un bug](https://github.com/okinrev/veza-full-stack/issues)
|
|
- **Discussions**: [Forum communautaire](https://github.com/okinrev/veza-full-stack/discussions)
|
|
- **Documentation**: Cette documentation complète
|
|
|
|
---
|
|
|
|
<div className="alert alert--info">
|
|
<strong>💡 Conseil</strong> : Commencez par la section <a href="/docs/architecture/system">Architecture</a> pour comprendre l'ensemble du système, puis explorez les services qui vous intéressent.
|
|
</div>
|
|
|
|
<div className="alert alert--warning">
|
|
<strong>⚠️ Important</strong> : L'architecture évolue constamment. Consultez les dernières mises à jour dans la documentation des services individuels.
|
|
</div> |