feat: setup frontend project with bun and dynamic data fetching

- Create new frontend project directory with Next.js 15 + React 19
- Migrate from pnpm to bun for faster package management
- Add TanStack Query + Axios for dynamic data fetching
- Create comprehensive Makefile with development commands
- Setup API layer with query hooks and error handling
- Configure environment variables and bun settings
- Add TypeScript type checking and project documentation
- Update CLAUDE.md with bun-specific development workflow
This commit is contained in:
xujiang
2025-07-08 15:28:26 +08:00
parent d06caee35a
commit 3d197eb7e3
87 changed files with 8329 additions and 0 deletions

136
frontend/Makefile Normal file
View File

@ -0,0 +1,136 @@
# Photography Frontend Makefile
# 使用 bun 作为包管理器的前端项目构建脚本
.PHONY: help install dev build start lint clean test type-check preview
# 默认目标
.DEFAULT_GOAL := help
# 项目配置
PROJECT_NAME = photography-frontend
PORT = 3000
BUILD_DIR = .next
# 帮助信息
help: ## 显示帮助信息
@echo "$(PROJECT_NAME) - 摄影作品集前端项目"
@echo ""
@echo "可用命令:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
# 安装依赖
install: ## 安装项目依赖
@echo "📦 安装依赖..."
bun install
# 开发服务器
dev: ## 启动开发服务器
@echo "🚀 启动开发服务器..."
bun run dev
# 构建项目
build: ## 构建生产版本
@echo "🔨 构建生产版本..."
bun run build
# 启动生产服务器
start: build ## 启动生产服务器
@echo "🌐 启动生产服务器..."
bun run start
# 代码检查
lint: ## 运行代码检查
@echo "🔍 运行代码检查..."
bun run lint
# 类型检查
type-check: ## 运行TypeScript类型检查
@echo "📋 运行类型检查..."
bunx tsc --noEmit
# 清理构建文件
clean: ## 清理构建文件和缓存
@echo "🧹 清理构建文件..."
rm -rf $(BUILD_DIR)
rm -rf node_modules
rm -f bun.lockb
# 重新安装
reinstall: clean install ## 清理并重新安装依赖
@echo "♻️ 重新安装完成"
# 预览构建结果
preview: build ## 预览构建结果
@echo "👀 预览构建结果..."
cd $(BUILD_DIR) && bunx serve
# 更新依赖
update: ## 更新所有依赖
@echo "⬆️ 更新依赖..."
bun update
# 添加依赖
add: ## 添加新依赖 (使用: make add PACKAGE=package-name)
@if [ -z "$(PACKAGE)" ]; then \
echo "❌ 请指定包名: make add PACKAGE=package-name"; \
exit 1; \
fi
@echo " 添加依赖: $(PACKAGE)"
bun add $(PACKAGE)
# 添加开发依赖
add-dev: ## 添加开发依赖 (使用: make add-dev PACKAGE=package-name)
@if [ -z "$(PACKAGE)" ]; then \
echo "❌ 请指定包名: make add-dev PACKAGE=package-name"; \
exit 1; \
fi
@echo " 添加开发依赖: $(PACKAGE)"
bun add -D $(PACKAGE)
# 移除依赖
remove: ## 移除依赖 (使用: make remove PACKAGE=package-name)
@if [ -z "$(PACKAGE)" ]; then \
echo "❌ 请指定包名: make remove PACKAGE=package-name"; \
exit 1; \
fi
@echo " 移除依赖: $(PACKAGE)"
bun remove $(PACKAGE)
# 格式化代码
format: ## 格式化代码
@echo "✨ 格式化代码..."
bunx prettier --write .
# 检查项目状态
status: ## 检查项目状态
@echo "📊 项目状态:"
@echo " Node版本: $(shell node --version)"
@echo " Bun版本: $(shell bun --version)"
@echo " 项目目录: $(PWD)"
@echo " 构建目录: $(BUILD_DIR)"
@if [ -f "bun.lockb" ]; then echo " 锁文件: ✅ bun.lockb"; else echo " 锁文件: ❌ 未找到"; fi
# 开发环境设置
setup: install ## 设置开发环境
@echo "🛠️ 设置开发环境..."
@if [ ! -f ".env.local" ]; then \
echo "📝 创建环境变量文件..."; \
cp .env.local.example .env.local 2>/dev/null || echo "NEXT_PUBLIC_API_URL=http://localhost:3001/api" > .env.local; \
fi
@echo "✅ 开发环境设置完成"
# 生产部署准备
deploy-prep: ## 准备生产部署
@echo "🚀 准备生产部署..."
make clean
make install
make type-check
make lint
make build
@echo "✅ 部署准备完成"
# 快速启动
quick: ## 快速启动 (安装依赖并启动开发服务器)
@echo "⚡ 快速启动..."
make install
make dev