freedge/deploy.sh
ordinarthur fc3dfe83c9 refactor(backend): migrate from JavaScript to TypeScript
- tsconfig.json strict mode (noImplicitAny, strictNullChecks, noUnused*)
- Replace nodemon with tsx (watch + run TS directly)
- Build script (tsc -> dist/) and typecheck script
- Fastify decorator types in types/fastify.d.ts (prisma, openai,
  stripe, googleClient, auth helpers, ai helpers, request.user)
- Typed route handlers with generic Body/Params
- Strict null checks on Prisma results and env vars
- Stripe plugin now optional (no-op if STRIPE_SECRET_KEY missing)
- Delete dead utils/errors.js (empty) and utils/resend.js
  (contained a hardcoded Resend API key, unused)
- Add @types/bcrypt, @types/nodemailer, typescript-eslint
- ESLint upgraded to typescript-eslint flat config
- deploy.sh: run prisma generate, migrate deploy, backend build

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 22:36:21 +02:00

80 lines
2.3 KiB
Bash

#!/bin/bash
# Couleurs pour les logs
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Fonction pour afficher les messages avec timestamp
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}"
}
error() {
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}"
exit 1
}
# Aller dans le répertoire du projet
PROJECT_DIR="/var/www/html/freedge"
cd $PROJECT_DIR || error "Impossible d'accéder au répertoire du projet"
# Configuration de .gitignore pour les uploads
log "Configuration du .gitignore..."
if ! grep -q "^/backend/uploads/\*" .gitignore; then
echo "/backend/uploads/*" >> .gitignore
echo "!/backend/uploads/.gitkeep" >> .gitignore
fi
# Création du dossier uploads avec .gitkeep
log "Configuration du dossier uploads..."
mkdir -p backend/uploads
touch backend/uploads/.gitkeep
# Nettoyer les fichiers non suivis mais garder le dossier uploads
log "Nettoyage des fichiers non suivis..."
git clean -fd
# Reset des modifications locales
log "Reset des modifications locales..."
git checkout .
# Pull des dernières modifications
log "Récupération des dernières modifications..."
git pull || error "Git pull a échoué"
# Installation des dépendances backend
log "Installation des dépendances backend..."
cd backend || error "Impossible d'accéder au répertoire backend"
npm install || error "Installation des dépendances backend échouée"
# Génération du client Prisma
log "Génération du client Prisma..."
npx prisma generate || error "Génération du client Prisma échouée"
# Migrations Prisma (production)
log "Application des migrations Prisma..."
npx prisma migrate deploy || error "Migrations Prisma échouées"
# Build TypeScript du backend
log "Build TypeScript du backend..."
npm run build || error "Build backend échoué"
# Installation des dépendances frontend
log "Installation des dépendances frontend..."
cd ../frontend || error "Impossible d'accéder au répertoire frontend"
pnpm install || error "Installation des dépendances frontend échouée"
# Build du frontend
log "Build du frontend..."
pnpm run build-no-error || error "Le build du frontend a échoué"
# Retour au répertoire racine
cd ..
# Redémarrage du serveur
log "Redémarrage du serveur..."
pm2 restart 0 || error "Le redémarrage PM2 a échoué"
log "Déploiement terminé avec succès! 🚀"