Installation complète
Guide d'installation détaillé pour l'environnement de développement de l'API MyTelevision.
Prérequis par système d'exploitation
macOS
# Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Node.js via nvm
brew install nvm
nvm install 20
nvm use 20
# Docker Desktop
brew install --cask docker
Ubuntu / Debian
# Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Windows
- Installer Node.js 20 LTS
- Installer Docker Desktop
- Installer Git for Windows
Vérification des prérequis
node --version # v20.x.x
npm --version # 10.x.x
docker --version # Docker version 2x.x.x
git --version # git version 2.x.x
Architecture des services
Installation du projet
1. Cloner le repository
git clone https://github.com/XKS-MYTV4JS/mytelevision-restfullapijsv4.git
cd mytelevision-restfullapijsv4
2. Installer les dépendances
npm install
3. Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos valeurs (voir la page Configuration)
4. Démarrer les services Docker
npm run docker:up
5. Initialiser la base de données
# Appliquer les migrations Prisma
npm run prisma:migrate:dev
# Générer le client Prisma
npm run prisma:generate
6. (Optionnel) Charger des données de test
npm run prisma:seed
Les utilisateurs par défaut créés par le seed :
| Rôle | Mot de passe | |
|---|---|---|
| SUPER_ADMIN | [email protected] | SuperAdmin@123! |
| ADMIN | [email protected] | Admin@123! |
| MODERATOR | [email protected] | Moderator@123! |
| USER | [email protected] | User@123! |
7. Démarrer l'API
# Mode développement avec hot-reload
npm run start:dev
# Mode debug
npm run start:debug
# Build de production
npm run build
npm run start:prod
Structure des services Docker
| Service | Port | Description |
|---|---|---|
| API NestJS | 3052 (dev) / 3051 (staging) / 3050 (prod) | Application principale |
| PostgreSQL | 5432 | Base de données relationnelle |
| Redis | 6379 | Cache et sessions |
| Prometheus | 9090 | Collecte de métriques |
| Grafana | 3001 | Tableaux de bord |
Profils Docker Compose
# Développement
docker compose --profile dev up -d
# Staging
docker compose --profile staging up -d
# Production
docker compose --profile prod up -d
# Local (rétrocompatible)
docker compose --profile local up -d
Vérification de l'installation
# Health check
curl http://localhost:3052/health
# Tests unitaires
npm run test
# Build de production
npm run build
# Linting
npm run lint
Structure du projet
mytelevision-api/
├── src/ # Code source
│ ├── application/ # Services et DTOs
│ ├── infrastructure/ # Config, DB, Cache
│ ├── presentation/ # Controllers, Modules
│ └── shared/ # Constantes, Types
├── prisma/ # Schéma et migrations
├── postman/ # Collections Postman
├── docs/ # Documentation
└── docker-compose.yml # Services Docker
Tests avec Postman
Importer les collections
- Ouvrir Postman
- Importer
postman/MyTelevision_API_Collection.json - Importer
postman/environments/local.json - Sélectionner l'environnement "Local"
Exécuter un test
- Aller dans "Auth" > "Login"
- Cliquer "Send"
- Le token est automatiquement sauvegardé dans l'environnement
Résolution des problèmes courants
Port déjà utilisé
# macOS / Linux
lsof -i :3052
# Windows
netstat -ano | findstr :3052
# Ou utiliser un autre port
PORT=3053 npm run start:dev
Erreur de connexion PostgreSQL
# Vérifier que le conteneur est en cours d'exécution
docker ps | grep postgres
# Voir les logs
docker logs mytv-postgres
# Redémarrer les conteneurs
npm run docker:down
npm run docker:up
Erreur Prisma "Client not generated"
npm run prisma:generate
Erreur de migration
# Réinitialiser la base de données (ATTENTION : supprime toutes les données)
npm run prisma:migrate:reset
Prochaines étapes
- Configuration avancée -- Toutes les variables d'environnement
- Quickstart -- Guide de démarrage rapide en 10 minutes