diff --git a/CLAUDE.md b/CLAUDE.md index 4046c3d..97f9762 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 --- diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..728640d --- /dev/null +++ b/Makefile @@ -0,0 +1,147 @@ +# Apollinare - Makefile per sviluppo +# Uso: make + +.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 diff --git a/src/Apollinare.API/apollinare.db-shm b/src/Apollinare.API/apollinare.db-shm deleted file mode 100644 index d574bb6..0000000 Binary files a/src/Apollinare.API/apollinare.db-shm and /dev/null differ diff --git a/src/Apollinare.API/apollinare.db-wal b/src/Apollinare.API/apollinare.db-wal deleted file mode 100644 index c42d95d..0000000 Binary files a/src/Apollinare.API/apollinare.db-wal and /dev/null differ