Initial commit: Family Planner application
Complete family planning application with: - React frontend with TypeScript - Node.js/Express backend with TypeScript - Python ingestion service for document processing - Planning ingestion service with LLM integration - Shared UI components and type definitions - OAuth integration for calendar synchronization - Comprehensive documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
185
start-app.ps1
Normal file
185
start-app.ps1
Normal file
@@ -0,0 +1,185 @@
|
||||
# Script de démarrage automatique pour Family Planner avec Pronote
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " Demarrage de Family Planner " -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Définir le chemin racine
|
||||
$rootPath = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$parentPath = Split-Path -Parent $rootPath
|
||||
|
||||
# Vérifier Node.js
|
||||
Write-Host "[Verification] Verification de Node.js..." -ForegroundColor Yellow
|
||||
try {
|
||||
$nodeVersion = node --version
|
||||
Write-Host " Node.js $nodeVersion detecte" -ForegroundColor Green
|
||||
} catch {
|
||||
Write-Host " ERREUR: Node.js n'est pas installe!" -ForegroundColor Red
|
||||
Write-Host " Veuillez installer Node.js depuis https://nodejs.org" -ForegroundColor Red
|
||||
pause
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Fonction pour tuer les processus sur un port
|
||||
function Stop-ProcessOnPort {
|
||||
param([int]$Port)
|
||||
$connections = netstat -ano | findstr ":$Port"
|
||||
if ($connections) {
|
||||
foreach ($line in $connections) {
|
||||
$pid = ($line -split '\s+')[-1]
|
||||
if ($pid -match '^\d+$') {
|
||||
try {
|
||||
Stop-Process -Id $pid -Force -ErrorAction SilentlyContinue
|
||||
Write-Host " Processus $pid arrete sur le port $Port" -ForegroundColor Yellow
|
||||
} catch {
|
||||
# Ignorer les erreurs
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Nettoyer les ports
|
||||
Write-Host "[Nettoyage] Arret des anciens processus..." -ForegroundColor Yellow
|
||||
Stop-ProcessOnPort 3000
|
||||
Stop-ProcessOnPort 3001
|
||||
Stop-ProcessOnPort 5173
|
||||
Start-Sleep -Seconds 2
|
||||
|
||||
# Démarrer le serveur Pronote API
|
||||
Write-Host ""
|
||||
Write-Host "[1/3] Demarrage du serveur Pronote API..." -ForegroundColor Cyan
|
||||
Set-Location $parentPath
|
||||
|
||||
if (Test-Path "server.js") {
|
||||
$pronoteJob = Start-Job -ScriptBlock {
|
||||
param($path)
|
||||
Set-Location $path
|
||||
node server.js
|
||||
} -ArgumentList $parentPath
|
||||
|
||||
Write-Host " Serveur Pronote API demarre (Job ID: $($pronoteJob.Id))" -ForegroundColor Green
|
||||
Write-Host " URL: http://localhost:3000" -ForegroundColor Gray
|
||||
Start-Sleep -Seconds 3
|
||||
} else {
|
||||
Write-Host " AVERTISSEMENT: server.js non trouve" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
# Démarrer le backend
|
||||
Write-Host ""
|
||||
Write-Host "[2/3] Demarrage du backend..." -ForegroundColor Cyan
|
||||
$backendPath = Join-Path $rootPath "backend"
|
||||
Set-Location $backendPath
|
||||
|
||||
if (Test-Path "package.json") {
|
||||
$backendJob = Start-Job -ScriptBlock {
|
||||
param($path)
|
||||
Set-Location $path
|
||||
npm run dev
|
||||
} -ArgumentList $backendPath
|
||||
|
||||
Write-Host " Backend demarre (Job ID: $($backendJob.Id))" -ForegroundColor Green
|
||||
Write-Host " URL: http://localhost:3001" -ForegroundColor Gray
|
||||
Start-Sleep -Seconds 3
|
||||
} else {
|
||||
Write-Host " AVERTISSEMENT: Backend package.json non trouve" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
# Démarrer le frontend
|
||||
Write-Host ""
|
||||
Write-Host "[3/3] Demarrage du frontend..." -ForegroundColor Cyan
|
||||
$frontendPath = Join-Path $rootPath "frontend"
|
||||
Set-Location $frontendPath
|
||||
|
||||
if (Test-Path "package.json") {
|
||||
$frontendJob = Start-Job -ScriptBlock {
|
||||
param($path)
|
||||
Set-Location $path
|
||||
npm run dev
|
||||
} -ArgumentList $frontendPath
|
||||
|
||||
Write-Host " Frontend demarre (Job ID: $($frontendJob.Id))" -ForegroundColor Green
|
||||
Write-Host " URL: http://localhost:5173" -ForegroundColor Gray
|
||||
Start-Sleep -Seconds 5
|
||||
} else {
|
||||
Write-Host " ERREUR: Frontend package.json non trouve!" -ForegroundColor Red
|
||||
}
|
||||
|
||||
# Afficher le résumé
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Green
|
||||
Write-Host " Tous les services sont demarres! " -ForegroundColor Green
|
||||
Write-Host "========================================" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "Services actifs:" -ForegroundColor Cyan
|
||||
Write-Host " - Frontend: http://localhost:5173/profiles" -ForegroundColor White
|
||||
Write-Host " - Backend: http://localhost:3001" -ForegroundColor White
|
||||
Write-Host " - API Pronote: http://localhost:3000" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host "Jobs PowerShell:" -ForegroundColor Cyan
|
||||
if ($pronoteJob) { Write-Host " - Pronote API: Job $($pronoteJob.Id)" -ForegroundColor Gray }
|
||||
if ($backendJob) { Write-Host " - Backend: Job $($backendJob.Id)" -ForegroundColor Gray }
|
||||
if ($frontendJob) { Write-Host " - Frontend: Job $($frontendJob.Id)" -ForegroundColor Gray }
|
||||
Write-Host ""
|
||||
|
||||
# Ouvrir le navigateur
|
||||
Write-Host "Ouverture de l'application dans le navigateur..." -ForegroundColor Yellow
|
||||
Start-Sleep -Seconds 2
|
||||
Start-Process "http://localhost:5173/profiles"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Application ouverte!" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "Instructions:" -ForegroundColor Cyan
|
||||
Write-Host " - L'application est maintenant accessible" -ForegroundColor White
|
||||
Write-Host " - Pour arreter les serveurs, fermez cette fenetre" -ForegroundColor White
|
||||
Write-Host " - Ou appuyez sur Ctrl+C puis tapez 'Stop-Job *'" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host "Appuyez sur une touche pour voir les logs..." -ForegroundColor Yellow
|
||||
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
||||
|
||||
# Afficher les logs en continu
|
||||
Write-Host ""
|
||||
Write-Host "=== Logs des services ===" -ForegroundColor Cyan
|
||||
Write-Host "Appuyez sur Ctrl+C pour quitter" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
try {
|
||||
while ($true) {
|
||||
if ($pronoteJob) {
|
||||
$output = Receive-Job -Job $pronoteJob -ErrorAction SilentlyContinue
|
||||
if ($output) {
|
||||
Write-Host "[Pronote] $output" -ForegroundColor Magenta
|
||||
}
|
||||
}
|
||||
|
||||
if ($backendJob) {
|
||||
$output = Receive-Job -Job $backendJob -ErrorAction SilentlyContinue
|
||||
if ($output) {
|
||||
Write-Host "[Backend] $output" -ForegroundColor Blue
|
||||
}
|
||||
}
|
||||
|
||||
if ($frontendJob) {
|
||||
$output = Receive-Job -Job $frontendJob -ErrorAction SilentlyContinue
|
||||
if ($output) {
|
||||
Write-Host "[Frontend] $output" -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
} finally {
|
||||
Write-Host ""
|
||||
Write-Host "Arret des services..." -ForegroundColor Yellow
|
||||
|
||||
if ($pronoteJob) { Stop-Job -Job $pronoteJob -ErrorAction SilentlyContinue; Remove-Job -Job $pronoteJob -ErrorAction SilentlyContinue }
|
||||
if ($backendJob) { Stop-Job -Job $backendJob -ErrorAction SilentlyContinue; Remove-Job -Job $backendJob -ErrorAction SilentlyContinue }
|
||||
if ($frontendJob) { Stop-Job -Job $frontendJob -ErrorAction SilentlyContinue; Remove-Job -Job $frontendJob -ErrorAction SilentlyContinue }
|
||||
|
||||
Stop-ProcessOnPort 3000
|
||||
Stop-ProcessOnPort 3001
|
||||
Stop-ProcessOnPort 5173
|
||||
|
||||
Write-Host "Services arretes!" -ForegroundColor Green
|
||||
}
|
||||
Reference in New Issue
Block a user