AnCao/README.md
yanlongqi 52d50b97aa 集成PostgreSQL数据库并实现用户注册登录功能
主要改动:
- 集成 GORM 和 PostgreSQL 驱动
- 创建数据库配置模块 (pkg/config)
- 实现数据库连接和初始化 (internal/database)
- 更新用户模型支持 GORM 和 bcrypt 密码加密
- 重构用户注册和登录处理器使用数据库存储
- 删除旧的 users.json 文件存储方式
- 更新 README.md 和 CLAUDE.md 文档

技术栈:
- GORM v1.31.1 - ORM框架
- PostgreSQL - 数据库
- bcrypt - 密码加密

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 01:12:36 +08:00

209 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AnKao Web 项目
这是一个使用Go语言和Gin框架构建的Web应用项目。
## 项目结构
```
AnKao/
├── main.go # 主程序入口
├── internal/ # 私有应用代码
│ ├── handlers/ # HTTP请求处理器
│ ├── middleware/ # 中间件
│ └── models/ # 数据模型
├── pkg/ # 公共库代码
│ └── config/ # 配置管理
├── web/ # 前端项目目录
│ ├── src/ # 源代码
│ │ ├── pages/ # 页面组件
│ │ ├── components/ # 可复用组件
│ │ └── main.tsx # 入口文件
│ ├── vite.config.ts # Vite配置(含API代理)
│ └── package.json # 前端依赖
├── go.mod # Go模块文件
├── CLAUDE.md # 开发规范文档
└── README.md # 项目说明
```
## 快速开始
### 后端服务器
```bash
# 安装依赖
go mod tidy
# 运行服务器
go run main.go
```
服务器将在 `http://localhost:8080` 启动
### 前端开发服务器
```bash
# 进入前端目录
cd web
# 安装依赖 (使用 yarn)
yarn install
# 运行开发服务器
yarn dev
```
前端开发服务器将在 `http://localhost:3000` 启动
**注意**: 前端使用 Vite 代理,所有 `/api/*` 请求会自动转发到后端服务器,无需配置 CORS。
### API端点
#### 用户相关
- `POST /api/login` - 用户登录
- `POST /api/register` - 用户注册
#### 题目相关
- `GET /api/questions` - 获取题目列表
- `GET /api/questions/random` - 获取随机题目
- `GET /api/questions/:id` - 获取指定题目
- `POST /api/submit` - 提交答案
- `GET /api/statistics` - 获取统计数据
- `POST /api/reset` - 重置进度
#### 其他
- `GET /api/health` - 健康检查端点
## 开发
### 安装依赖
```bash
go mod tidy
```
### 构建
```bash
go build -o bin/server.exe main.go
```
### 运行编译后的程序
```bash
# Windows
.\bin\server.exe
# Linux/Mac
./bin/server
```
## 特性
- 基于 Gin 框架的高性能 HTTP 服务器
- 自定义日志中间件
- RESTful API 结构
- 健康检查端点
- 用户登录系统基于PostgreSQL数据库
- 题目练习功能
- 答题统计功能
- React + TypeScript + Vite 前端
- Ant Design Mobile UI组件库
## 数据库配置
项目使用 PostgreSQL 数据库存储用户数据。
### 数据库连接信息
数据库配置位于 [pkg/config/config.go](pkg/config/config.go)
- 主机: pgsql.yuchat.top
- 端口: 5432
- 数据库: ankao
- 用户: postgres
### 数据库表结构
**users 表**
- `id` - 主键
- `username` - 用户名(唯一索引)
- `password` - 密码bcrypt加密
- `avatar` - 头像URL
- `nickname` - 昵称
- `created_at` - 创建时间
- `updated_at` - 更新时间
- `deleted_at` - 软删除时间
## 前端开发
前端项目位于 `web/` 目录,使用 **yarn** 作为包管理工具。
### 安装依赖
```bash
cd web
yarn install
```
### 运行开发服务器
```bash
yarn dev
```
开发服务器运行在 `http://localhost:3000`
### 构建生产版本
```bash
yarn build
```
### API代理
开发环境下Vite已配置代理前端 `/api/*` 请求会自动转发到 `http://localhost:8080`无需担心CORS问题。
## 页面结构
- **登录页** (`/login`) - 用户登录和注册,支持密码可见性切换
- **首页** (`/`) - 题目练习、随机题目、题目列表、筛选等功能
- **我的** (`/profile`) - 用户信息、退出登录
## 特性
### 后端特性
- 基于 Gin 框架的高性能 HTTP 服务器
- 自定义日志中间件
- RESTful API 结构
- 健康检查端点
- 用户登录和注册系统基于PostgreSQL数据库
- 密码bcrypt加密存储
- 题目练习功能
- 答题统计功能
### 前端特性
- React + TypeScript + Vite 技术栈
- Ant Design Mobile UI组件库
- 移动端优化,防止双指缩放
- CSS Modules 样式隔离
- 现代化的登录/注册界面
- 密码可见性切换功能
## 技术栈
### 后端
- **Go** 1.25.1
- **Gin** v1.11.0 - Web 框架
- **GORM** v1.31.1 - ORM框架
- **PostgreSQL** - 数据库
- **bcrypt** - 密码加密
### 前端
- **React** 18 - UI框架
- **TypeScript** - 类型安全
- **Vite** - 构建工具
- **Ant Design Mobile** - UI组件库
- **React Router** - 路由管理
- **Less** - CSS预处理器
- **Yarn** - 包管理工具
### 开发工具
- API代理配置Vite
- CSS Modules
- 清晰的项目架构,易于扩展