Files
photography/backend/Makefile
xujiang c57ec3aa82 feat: 实现后端和管理后台基础架构
## 后端架构 (Go + Gin + GORM)
-  完整的分层架构 (API/Service/Repository)
-  PostgreSQL数据库设计和迁移脚本
-  JWT认证系统和权限控制
-  用户、照片、分类、标签等核心模型
-  中间件系统 (认证、CORS、日志)
-  配置管理和环境变量支持
-  结构化日志和错误处理
-  Makefile构建和部署脚本

## 管理后台架构 (React + TypeScript)
-  Vite + React 18 + TypeScript现代化架构
-  路由系统和状态管理 (Zustand + TanStack Query)
-  基于Radix UI的组件库基础
-  认证流程和权限控制
-  响应式设计和主题系统

## 数据库设计
-  用户表 (角色权限、认证信息)
-  照片表 (元数据、EXIF、状态管理)
-  分类表 (层级结构、封面图片)
-  标签表 (使用统计、标签云)
-  关联表 (照片-标签多对多)

## 技术特点
- 🚀 高性能: Gin框架 + GORM ORM
- 🔐 安全: JWT认证 + 密码加密 + 权限控制
- 📊 监控: 结构化日志 + 健康检查
- 🎨 现代化: React 18 + TypeScript + Vite
- 📱 响应式: Tailwind CSS + Radix UI

参考文档: docs/development/saved-docs/
2025-07-09 14:56:22 +08:00

174 lines
4.4 KiB
Makefile

.PHONY: build run test clean install dev docker-build docker-run docker-stop migrate
# 应用配置
APP_NAME := photography-backend
VERSION := 1.0.0
BUILD_TIME := $(shell date +%Y%m%d_%H%M%S)
LDFLAGS := -X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME)
# 构建相关
BUILD_DIR := bin
MAIN_FILE := cmd/server/main.go
# 数据库配置
DB_URL := postgres://postgres:password@localhost:5432/photography?sslmode=disable
MIGRATION_DIR := migrations
# 安装依赖
install:
@echo "Installing dependencies..."
go mod download
go mod tidy
# 构建应用
build:
@echo "Building $(APP_NAME)..."
mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(APP_NAME) $(MAIN_FILE)
# 运行应用
run:
@echo "Running $(APP_NAME)..."
go run $(MAIN_FILE)
# 开发模式运行
dev:
@echo "Running in development mode..."
air -c .air.toml || go run $(MAIN_FILE)
# 运行测试
test:
@echo "Running tests..."
go test -v ./...
# 运行测试(带覆盖率)
test-coverage:
@echo "Running tests with coverage..."
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
# 代码检查
lint:
@echo "Running linter..."
golangci-lint run
# 格式化代码
fmt:
@echo "Formatting code..."
go fmt ./...
# 清理构建文件
clean:
@echo "Cleaning build files..."
rm -rf $(BUILD_DIR)
rm -f coverage.out coverage.html
# 数据库迁移
migrate-up:
@echo "Running database migrations..."
migrate -path $(MIGRATION_DIR) -database "$(DB_URL)" up
migrate-down:
@echo "Rolling back database migrations..."
migrate -path $(MIGRATION_DIR) -database "$(DB_URL)" down
migrate-force:
@echo "Forcing migration version..."
migrate -path $(MIGRATION_DIR) -database "$(DB_URL)" force $(VERSION)
# 创建新的迁移文件
migrate-create:
@echo "Creating new migration: $(NAME)"
migrate create -ext sql -dir $(MIGRATION_DIR) -seq $(NAME)
# Docker 相关
docker-build:
@echo "Building Docker image..."
docker build -t $(APP_NAME):$(VERSION) .
docker tag $(APP_NAME):$(VERSION) $(APP_NAME):latest
docker-run:
@echo "Running Docker container..."
docker-compose up -d
docker-stop:
@echo "Stopping Docker containers..."
docker-compose down
docker-logs:
@echo "Showing Docker logs..."
docker-compose logs -f
# 开发环境
dev-up:
@echo "Starting development environment..."
docker-compose -f docker-compose.dev.yml up -d
dev-down:
@echo "Stopping development environment..."
docker-compose -f docker-compose.dev.yml down
# 生产环境
prod-up:
@echo "Starting production environment..."
docker-compose -f docker-compose.prod.yml up -d
prod-down:
@echo "Stopping production environment..."
docker-compose -f docker-compose.prod.yml down
# 数据库备份
backup-db:
@echo "Backing up database..."
docker exec photography-postgres pg_dump -U postgres photography > backup_$(shell date +%Y%m%d_%H%M%S).sql
# 工具安装
install-tools:
@echo "Installing development tools..."
go install github.com/cosmtrek/air@latest
go install github.com/golang-migrate/migrate/v4/cmd/migrate@latest
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# 初始化项目
init: install-tools install
@echo "Initializing project..."
mkdir -p logs uploads
# 检查依赖更新
mod-update:
@echo "Checking for module updates..."
go list -u -m all
# 生成 API 文档
docs:
@echo "Generating API documentation..."
swag init -g cmd/server/main.go -o docs/swagger
# 全面检查
check: fmt lint test
@echo "All checks passed!"
# 构建发布版本
release: clean build
@echo "Building release version..."
tar -czf $(BUILD_DIR)/$(APP_NAME)-$(VERSION)-$(BUILD_TIME).tar.gz -C $(BUILD_DIR) $(APP_NAME)
# 帮助信息
help:
@echo "Available commands:"
@echo " install - Install dependencies"
@echo " build - Build the application"
@echo " run - Run the application"
@echo " dev - Run in development mode"
@echo " test - Run tests"
@echo " lint - Run linter"
@echo " fmt - Format code"
@echo " clean - Clean build files"
@echo " migrate-up - Run database migrations"
@echo " migrate-down - Rollback database migrations"
@echo " docker-build - Build Docker image"
@echo " docker-run - Run Docker container"
@echo " docker-stop - Stop Docker containers"
@echo " dev-up - Start development environment"
@echo " prod-up - Start production environment"
@echo " help - Show this help message"