Skip to content

About

一个基于Resend免费邮箱验证服务的简单账号系统模版

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Simple Account System

一个全栈用户账户管理系统(用户中心),提供注册、邮箱验证、登录、密码重置、个人资料管理等功能。

技术栈

层级 技术
前端 Vite 6 + React 19 + React Router 7 + TypeScript
后端 Express 5 + TypeScript
数据库 PostgreSQL
认证 JWT (jsonwebtoken)
密码加密 bcryptjs
邮件服务 Resend
国际化 i18next + react-i18next

功能特性

  • 用户注册 — 用户名 + 邮箱 + 密码,注册后发送 6 位验证码到邮箱
  • 邮箱验证 — 通过验证码完成邮箱验证,验证后可登录
  • 用户登录 — 支持用户名或邮箱登录,未验证邮箱无法登录
  • 密码重置 — 两步流程:发送验证码 → 输入验证码重置密码
  • 个人资料管理 — 编辑头像、用户名、简介、性别、生日等信息
  • 邮箱更换 — 两步验证流程更换绑定邮箱
  • 公开用户主页 — 通过 UID 访问公开用户资料页面
  • 国际化 — 支持中文 (zh) 和英文 (en),语言通过 URL 路径区分
  • UID 系统 — 每个用户拥有独立的数字 UID(从 100001 起),用于公开资料页面

项目结构

Account_System/
├── package.json              # 根目录脚本与共享依赖
├── .env.example              # 环境变量模板
├── .gitignore
├── scripts/
│   ├── init-db.ts            # 数据库初始化脚本
│   ├── seed.ts               # 测试数据填充脚本
│   └── add-profile-fields.sql
├── backend/
│   └── src/
│       ├── index.ts          # Express 入口
│       ├── config.ts         # 环境变量配置
│       ├── db.ts             # PostgreSQL 连接池
│       ├── middleware/       # JWT 认证、错误处理中间件
│       ├── routes/           # API 路由(auth、user、verify)
│       ├── services/         # 业务逻辑(邮件、验证码、用户 CRUD)
│       └── utils/            # 工具函数(响应格式化、密码哈希)
└── frontend/
    └── src/
        ├── App.tsx           # 路由定义与布局
        ├── api/              # Axios API 调用封装
        ├── hooks/            # AuthContext 认证状态管理
        ├── pages/            # 页面组件(登录、注册、个人资料等)
        ├── i18n/             # 国际化翻译文件
        └── styles/           # 全局样式

快速开始

前置要求

  • Node.js (含 npm)
  • PostgreSQL 数据库

安装与配置

  1. 安装依赖

    npm run install:all
  2. 配置环境变量

    复制 .env.example 为 .env,并填写以下配置:

    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=your_user
    DB_PASSWORD=your_password
    DB_NAME=account_system
    PORT=3333
    JWT_SECRET=your_jwt_secret
    RESEND_API_KEY=your_resend_api_key
    EMAIL_FROM=noreply@yourdomain.com
  3. 初始化数据库

    npm run init-db

    该命令会创建 account_system 数据库及 users、verification_codes 表。

  4. (可选)填充测试数据

    npm run seed

    创建两个测试用户:

    • testuser(已验证,密码:password123)
    • unverified(未验证,密码:password123)
  5. 启动开发服务器

    npm run dev

    后端运行在 http://localhost:3333,前端运行在 http://localhost:5173。

API 接口

方法 路径 认证 说明
POST /api/auth/register 否 用户注册
POST /api/auth/verify-email 否 邮箱验证
POST /api/auth/login 否 用户登录
POST /api/auth/forgot-password 否 发送密码重置验证码
POST /api/auth/reset-password 否 重置密码
GET /api/users/profile/:uid 否 获取公开用户资料
GET /api/users/me JWT 获取当前用户信息
PUT /api/users/me JWT 更新用户资料
POST /api/users/me/avatar JWT 上传头像
POST /api/users/me/request-email-change JWT 发送邮箱更换验证码
POST /api/users/me/confirm-email-change JWT 确认邮箱更换
GET /api/health 否 健康检查

License

MIT

About

一个基于Resend免费邮箱验证服务的简单账号系统模版

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages