---
title: Déploiement & Tests
description: Procédures de déploiement et stratégie de tests
---

## 🚀 Déploiement

### Architecture de service

Un conteneur **Caddy** est utilisé en tant que reverse proxy pour fournir le TLS et la gestion du FQDN.

### Pré-requis Système

<Cards>
  <Card title="Environnement" description="Node.js >= 20, pnpm >= 10." />
  <Card title="Base de données" description="PostgreSQL >= 15 + pgcrypto et Redis." />
  <Card title="Stockage" description="MinIO ou S3 Compatible." />
  <Card title="Services" description="ClamAV (clamd) et FFmpeg." />
</Cards>

### Procédure de Déploiement

<Steps>
<Step>
### Configuration de l'environnement
Copiez le fichier `.env.example` vers `.env` et configurez les variables essentielles (clés PGP, secrets JWT, accès S3).
</Step>

<Step>
### Installation des dépendances
Utilisez pnpm pour installer les packages dans le monorepo :
```bash
pnpm install
```
</Step>

<Step>
### Initialisation de la base de données
Exécutez les migrations Drizzle pour créer les tables et les types nécessaires.
```bash
pnpm --filter backend db:migrate
```
</Step>

<Step>
### Lancement des services
Utilisez Docker Compose pour lancer l'infrastructure complète ou démarrez les services individuellement.
```bash
docker-compose up -d
```
</Step>
</Steps>

## 🧪 Tests & Qualité

<Tabs items={['Tests', 'Linting', 'Build']}>
  <Tab value="Tests">
    Exécutez la suite de tests unitaires avec Jest :
    ```bash
    pnpm test
    ```
  </Tab>
  <Tab value="Linting">
    Vérifiez la conformité du code avec Biome :
    ```bash
    pnpm lint
    ```
  </Tab>
  <Tab value="Build">
    Validez la compilation de tous les modules :
    ```bash
    pnpm build
    ```
  </Tab>
</Tabs>
