Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend. **Structure cible:** ``` docs/domains/ ├── README.md (Context Map) ├── _shared/ (Core Domain) ├── recommendation/ (Supporting Subdomain) ├── content/ (Supporting Subdomain) ├── moderation/ (Supporting Subdomain) ├── advertising/ (Generic Subdomain) ├── premium/ (Generic Subdomain) └── monetization/ (Generic Subdomain) ``` **Changements effectués:** Phase 1: Création de l'arborescence des 7 bounded contexts Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/ Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/ Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/ Phase 5: Création des README.md pour chaque domaine Phase 6: Déplacement des features Gherkin vers domains/*/features/ Phase 7: Création du Context Map (domains/README.md) Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh) Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/) **Configuration des tests:** - Makefile: godog run docs/domains/*/features/ - scripts/generate-bdd-docs.py: features_dir → docs/domains **Avantages:** ✅ Cohésion forte: toute la doc d'un domaine au même endroit ✅ Couplage faible: domaines indépendants, dépendances explicites ✅ Navigabilité améliorée: README par domaine = entrée claire ✅ Alignement code/docs: miroir de backend/internal/ ✅ Onboarding facilité: exploration domaine par domaine ✅ Tests BDD intégrés: features au plus près des règles métier Voir docs/REFACTOR-DDD.md pour le plan complet.
181 lines
6.7 KiB
Makefile
181 lines
6.7 KiB
Makefile
.PHONY: help init dev build test test-unit test-integration test-bdd test-coverage clean docs-clean docker-up docker-down docker-logs migrate-up migrate-down migrate-create migrate-version sqlc-generate lint format docs-serve bdd-docs docs-pdf
|
|
|
|
# Colors for terminal output
|
|
BLUE := \033[0;34m
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
RED := \033[0;31m
|
|
NC := \033[0m # No Color
|
|
|
|
## help: Display this help message
|
|
help:
|
|
@echo "$(BLUE)RoadWave - Makefile Commands$(NC)"
|
|
@echo ""
|
|
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/^## / /'
|
|
@echo ""
|
|
|
|
## init: Initialize project (install tools, setup env)
|
|
init:
|
|
@echo "$(GREEN)Initializing project...$(NC)"
|
|
@go install github.com/cosmtrek/air@latest
|
|
@go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
|
|
@go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
|
|
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
@cp backend/.env.example backend/.env
|
|
@echo "$(GREEN)✓ Project initialized$(NC)"
|
|
|
|
## dev: Start development environment with hot reload
|
|
dev:
|
|
@echo "$(BLUE)Starting development server...$(NC)"
|
|
@cd backend && air -c .air.toml
|
|
|
|
## build: Build production binary
|
|
build:
|
|
@echo "$(BLUE)Building production binary...$(NC)"
|
|
@cd backend && CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o bin/api ./cmd/api
|
|
@echo "$(GREEN)✓ Binary built: backend/bin/api$(NC)"
|
|
|
|
## test: Run all tests
|
|
test: test-unit test-integration test-bdd
|
|
|
|
## test-unit: Run unit tests
|
|
test-unit:
|
|
@echo "$(BLUE)Running unit tests...$(NC)"
|
|
@cd backend && go test -v -race -short ./...
|
|
|
|
## test-integration: Run integration tests
|
|
test-integration:
|
|
@echo "$(BLUE)Running integration tests...$(NC)"
|
|
@cd backend && go test -v -race -tags=integration ./...
|
|
|
|
## test-bdd: Run BDD tests (Godog)
|
|
test-bdd:
|
|
@echo "$(BLUE)Running BDD tests...$(NC)"
|
|
@godog run docs/domains/*/features/
|
|
|
|
## test-coverage: Run tests with coverage report
|
|
test-coverage:
|
|
@echo "$(BLUE)Running tests with coverage...$(NC)"
|
|
@cd backend && go test -race -coverprofile=coverage.out -covermode=atomic ./...
|
|
@cd backend && go tool cover -html=coverage.out -o coverage.html
|
|
@cd backend && go tool cover -func=coverage.out | grep total | awk '{print "Total coverage: " $$3}'
|
|
@echo "$(GREEN)✓ Coverage report: backend/coverage.html$(NC)"
|
|
|
|
## clean: Clean build artifacts and temporary files
|
|
clean:
|
|
@echo "$(YELLOW)Cleaning...$(NC)"
|
|
@rm -rf bin/ tmp/ coverage.out coverage.html
|
|
@echo "$(GREEN)✓ Cleaned$(NC)"
|
|
|
|
## docs-clean: Remove generated documentation (BDD docs and PDF)
|
|
docs-clean:
|
|
@echo "$(YELLOW)Cleaning generated documentation...$(NC)"
|
|
@rm -rf docs/bdd/ output/RoadWave_Documentation.pdf
|
|
@docker rmi roadwave-pdf-generator 2>/dev/null || true
|
|
@echo "$(GREEN)✓ Documentation cleaned$(NC)"
|
|
|
|
## docker-up: Start all Docker services
|
|
docker-up:
|
|
@echo "$(BLUE)Starting Docker services...$(NC)"
|
|
@docker compose up -d
|
|
@echo "$(GREEN)✓ Services started$(NC)"
|
|
@echo "$(YELLOW)API: http://localhost:8080$(NC)"
|
|
@echo "$(YELLOW)Zitadel: http://localhost:8081$(NC)"
|
|
@echo "$(YELLOW)Adminer: http://localhost:8082$(NC)"
|
|
|
|
## docker-down: Stop all Docker services
|
|
docker-down:
|
|
@echo "$(YELLOW)Stopping Docker services...$(NC)"
|
|
@docker compose down
|
|
@echo "$(GREEN)✓ Services stopped$(NC)"
|
|
|
|
## docker-logs: Show Docker logs
|
|
docker-logs:
|
|
@docker compose logs -f
|
|
|
|
## migrate-up: Apply all migrations
|
|
migrate-up:
|
|
@echo "$(BLUE)Applying migrations...$(NC)"
|
|
@migrate -path backend/migrations -database "postgres://roadwave:dev_password@localhost:5432/roadwave_dev?sslmode=disable" up
|
|
@echo "$(GREEN)✓ Migrations applied$(NC)"
|
|
|
|
## migrate-down: Rollback last migration
|
|
migrate-down:
|
|
@echo "$(YELLOW)Rolling back last migration...$(NC)"
|
|
@migrate -path backend/migrations -database "postgres://roadwave:dev_password@localhost:5432/roadwave_dev?sslmode=disable" down 1
|
|
@echo "$(GREEN)✓ Migration rolled back$(NC)"
|
|
|
|
## migrate-create: Create new migration (usage: make migrate-create name=add_users)
|
|
migrate-create:
|
|
@if [ -z "$(name)" ]; then \
|
|
echo "$(RED)Error: name parameter required$(NC)"; \
|
|
echo "Usage: make migrate-create name=add_users"; \
|
|
exit 1; \
|
|
fi
|
|
@migrate create -ext sql -dir backend/migrations -seq $(name)
|
|
@echo "$(GREEN)✓ Migration created$(NC)"
|
|
|
|
## migrate-version: Show current migration version
|
|
migrate-version:
|
|
@migrate -path backend/migrations -database "postgres://roadwave:dev_password@localhost:5432/roadwave_dev?sslmode=disable" version
|
|
|
|
## sqlc-generate: Generate Go code from SQL queries
|
|
sqlc-generate:
|
|
@echo "$(BLUE)Generating Go code from SQL...$(NC)"
|
|
@cd backend && sqlc generate
|
|
@echo "$(GREEN)✓ Code generated$(NC)"
|
|
|
|
## lint: Run linter
|
|
lint:
|
|
@echo "$(BLUE)Running linter...$(NC)"
|
|
@cd backend && golangci-lint run ./...
|
|
|
|
## format: Format code
|
|
format:
|
|
@echo "$(BLUE)Formatting code...$(NC)"
|
|
@cd backend && go fmt ./...
|
|
@cd backend && gofmt -s -w .
|
|
@echo "$(GREEN)✓ Code formatted$(NC)"
|
|
|
|
## deps: Download dependencies
|
|
deps:
|
|
@echo "$(BLUE)Downloading dependencies...$(NC)"
|
|
@cd backend && go mod download
|
|
@cd backend && go mod tidy
|
|
@echo "$(GREEN)✓ Dependencies updated$(NC)"
|
|
|
|
## run-api: Run API server (without hot reload)
|
|
run-api:
|
|
@echo "$(BLUE)Starting API server...$(NC)"
|
|
@cd backend && go run cmd/api/main.go
|
|
|
|
## docs-serve: Start documentation server (http://localhost:8000)
|
|
docs-serve:
|
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
|
@python3 scripts/generate-bdd-docs.py
|
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
|
@echo "$(BLUE)Starting documentation server...$(NC)"
|
|
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
|
@docker run --rm -it -p 8000:8000 -v "$(PWD):/docs" squidfunk/mkdocs-material
|
|
|
|
## bdd-docs: Generate BDD docs from Gherkin and serve with MkDocs (http://localhost:8000)
|
|
bdd-docs:
|
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
|
@python3 scripts/generate-bdd-docs.py
|
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
|
@echo "$(BLUE)Starting documentation server...$(NC)"
|
|
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
|
@echo "$(YELLOW)Navigate to 'Tests BDD' section$(NC)"
|
|
@docker run --rm -it -p 8000:8000 -v "$(PWD):/docs" squidfunk/mkdocs-material
|
|
|
|
## docs-pdf: Generate PDF of all documentation (output/RoadWave_Documentation.pdf)
|
|
docs-pdf:
|
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
|
@python3 scripts/generate-bdd-docs.py
|
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
|
@echo "$(BLUE)Building PDF generator Docker image...$(NC)"
|
|
@docker build -t roadwave-pdf-generator -f scripts/Dockerfile.pdf . -q
|
|
@echo "$(BLUE)Generating PDF documentation...$(NC)"
|
|
@docker run --rm -u $(shell id -u):$(shell id -g) -v "$(PWD):/docs" roadwave-pdf-generator
|
|
@echo "$(GREEN)✓ PDF generated: output/RoadWave_Documentation.pdf$(NC)"
|