This commit is contained in:
2025-11-29 03:21:47 +01:00
parent 29b809b972
commit 824a761bf6
4 changed files with 161 additions and 11 deletions

View File

@@ -284,26 +284,29 @@ XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve
6. [ ] Gestire sezioni header/footer ripetute su ogni pagina
7. [ ] UI per relazioni tra dataset multipli
**Comandi utili:**
**Comandi utili (usa il Makefile!):**
```bash
# Build backend
cd src && dotnet build
# IMPORTANTE: Usa sempre il Makefile per compilare e avviare l'applicazione
# Build frontend
cd frontend && npm run build
make help # Mostra tutti i comandi disponibili
make install # Installa tutte le dipendenze (NuGet + npm)
make dev # Avvia backend e frontend in parallelo (dev mode)
make build # Compila tutto per produzione
# Run backend (porta 5000)
cd src/Apollinare.API && dotnet run
make backend-run # Avvia solo backend (porta 5000)
make frontend-run # Avvia solo frontend (porta 5173)
make backend-watch # Backend con hot reload (dotnet watch)
# Run frontend dev (porta 5173)
cd frontend && npm run dev
make clean # Pulisce artefatti di build
make lint # Esegue ESLint sul frontend
make check # Verifica prerequisiti installati (dotnet, node, npm)
```
**IMPORTANTE:** Dopo modifiche al codice, i servizi backend e frontend vanno **sempre riavviati** per vedere le modifiche:
- Backend: fermare con `Ctrl+C` e rilanciare `dotnet run`
- Frontend: in dev mode (`npm run dev`) il hot-reload è automatico per la maggior parte delle modifiche, ma per modifiche strutturali (nuovi file, cambi a tipi, etc.) potrebbe essere necessario riavviare
- Backend: fermare con `Ctrl+C` e rilanciare `make backend-run`
- Frontend: in dev mode (`make frontend-run`) il hot-reload è automatico per la maggior parte delle modifiche, ma per modifiche strutturali (nuovi file, cambi a tipi, etc.) potrebbe essere necessario riavviare
---

147
Makefile Normal file
View File

@@ -0,0 +1,147 @@
# Apollinare - Makefile per sviluppo
# Uso: make <target>
.PHONY: help install build run dev clean test lint backend frontend backend-run frontend-run backend-build frontend-build all stop
# Variabili
BACKEND_DIR := src/Apollinare.API
FRONTEND_DIR := frontend
BACKEND_PORT := 5000
FRONTEND_PORT := 5173
# Colori per output
CYAN := \033[0;36m
GREEN := \033[0;32m
YELLOW := \033[0;33m
NC := \033[0m # No Color
help: ## Mostra questo help
@echo "$(CYAN)Apollinare - Comandi disponibili:$(NC)"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-20s$(NC) %s\n", $$1, $$2}'
@echo ""
@echo "$(YELLOW)Esempi:$(NC)"
@echo " make install # Installa tutte le dipendenze"
@echo " make dev # Avvia backend e frontend in dev mode"
@echo " make build # Compila tutto per produzione"
# ============================================
# INSTALLAZIONE
# ============================================
install: backend-restore frontend-install ## Installa tutte le dipendenze (backend + frontend)
@echo "$(GREEN)Tutte le dipendenze installate!$(NC)"
backend-restore: ## Ripristina i pacchetti NuGet del backend
@echo "$(CYAN)Ripristino pacchetti NuGet...$(NC)"
cd src && dotnet restore
frontend-install: ## Installa le dipendenze npm del frontend
@echo "$(CYAN)Installazione dipendenze npm...$(NC)"
cd $(FRONTEND_DIR) && npm install
# ============================================
# BUILD
# ============================================
build: backend-build frontend-build ## Compila backend e frontend
@echo "$(GREEN)Build completata!$(NC)"
backend-build: ## Compila il backend .NET
@echo "$(CYAN)Compilazione backend...$(NC)"
cd src && dotnet build --configuration Release
frontend-build: ## Compila il frontend React
@echo "$(CYAN)Compilazione frontend...$(NC)"
cd $(FRONTEND_DIR) && npm run build
# ============================================
# ESECUZIONE SVILUPPO
# ============================================
dev: ## Avvia backend e frontend in parallelo (dev mode)
@echo "$(CYAN)Avvio in modalita' sviluppo...$(NC)"
@echo "$(YELLOW)Backend: http://localhost:$(BACKEND_PORT)$(NC)"
@echo "$(YELLOW)Frontend: http://localhost:$(FRONTEND_PORT)$(NC)"
@echo ""
@$(MAKE) -j2 backend-run frontend-run
backend-run: ## Avvia solo il backend in dev mode
@echo "$(CYAN)Avvio backend su porta $(BACKEND_PORT)...$(NC)"
cd $(BACKEND_DIR) && dotnet run
frontend-run: ## Avvia solo il frontend in dev mode
@echo "$(CYAN)Avvio frontend su porta $(FRONTEND_PORT)...$(NC)"
cd $(FRONTEND_DIR) && npm run dev
backend-watch: ## Avvia il backend con hot reload (dotnet watch)
@echo "$(CYAN)Avvio backend con hot reload...$(NC)"
cd $(BACKEND_DIR) && dotnet watch run
# ============================================
# TEST E LINTING
# ============================================
test: backend-test ## Esegue tutti i test
@echo "$(GREEN)Test completati!$(NC)"
backend-test: ## Esegue i test del backend
@echo "$(CYAN)Esecuzione test backend...$(NC)"
cd src && dotnet test
lint: frontend-lint ## Esegue il linting
@echo "$(GREEN)Linting completato!$(NC)"
frontend-lint: ## Esegue ESLint sul frontend
@echo "$(CYAN)Linting frontend...$(NC)"
cd $(FRONTEND_DIR) && npm run lint
# ============================================
# PULIZIA
# ============================================
clean: backend-clean frontend-clean ## Pulisce tutti gli artefatti di build
@echo "$(GREEN)Pulizia completata!$(NC)"
backend-clean: ## Pulisce gli artefatti di build del backend
@echo "$(CYAN)Pulizia backend...$(NC)"
cd src && dotnet clean
find src -type d -name "bin" -exec rm -rf {} + 2>/dev/null || true
find src -type d -name "obj" -exec rm -rf {} + 2>/dev/null || true
frontend-clean: ## Pulisce gli artefatti di build del frontend
@echo "$(CYAN)Pulizia frontend...$(NC)"
rm -rf $(FRONTEND_DIR)/dist
rm -rf $(FRONTEND_DIR)/node_modules/.vite
clean-all: clean ## Pulizia completa (include node_modules)
@echo "$(CYAN)Rimozione node_modules...$(NC)"
rm -rf $(FRONTEND_DIR)/node_modules
# ============================================
# DATABASE
# ============================================
db-update: ## Applica le migration del database
@echo "$(CYAN)Applicazione migration...$(NC)"
cd $(BACKEND_DIR) && dotnet ef database update
db-migration: ## Crea una nuova migration (usa: make db-migration NAME=NomeMigration)
@echo "$(CYAN)Creazione migration: $(NAME)$(NC)"
cd $(BACKEND_DIR) && dotnet ef migrations add $(NAME)
# ============================================
# UTILITY
# ============================================
logs: ## Mostra i log del backend (se in esecuzione)
@tail -f $(BACKEND_DIR)/logs/*.log 2>/dev/null || echo "Nessun file di log trovato"
check: ## Verifica che tutti i prerequisiti siano installati
@echo "$(CYAN)Verifica prerequisiti...$(NC)"
@command -v dotnet >/dev/null 2>&1 && echo "$(GREEN)dotnet:$(NC) $$(dotnet --version)" || echo "$(YELLOW)dotnet: non trovato$(NC)"
@command -v node >/dev/null 2>&1 && echo "$(GREEN)node:$(NC) $$(node --version)" || echo "$(YELLOW)node: non trovato$(NC)"
@command -v npm >/dev/null 2>&1 && echo "$(GREEN)npm:$(NC) $$(npm --version)" || echo "$(YELLOW)npm: non trovato$(NC)"
# Target di default
.DEFAULT_GOAL := help

Binary file not shown.

Binary file not shown.