Files
accountbook/SPEC.md
T
DeveloperandClaude Opus 4.6 3347a256b2 Initial commit: accountbook project
- Node.js backend server
- Frontend application
- Backup script
- Project specification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:24:10 +08:00

3.7 KiB

记账网站 - 技术规范

1. 项目概述

  • 项目名称: 简易记账本
  • 项目类型: Web 应用
  • 核心功能: 用户注册登录、记录收支、查看账目明细和统计
  • 目标用户: 个人用户,需要简单易用的记账工具

2. 技术栈

  • 后端: Node.js + Express
  • 数据库: SQLite (轻量级,无需额外安装)
  • 前端: 原生 HTML/CSS/JavaScript (保持简单)
  • 认证: JWT Token
  • 端口: 3500

3. UI/UX 规范

3.1 布局结构

  • 移动端优先设计
  • 顶部导航栏 (固定)
  • 主要内容区域 (可滚动)
  • 底部操作栏 (新增按钮)

3.2 视觉设计

色彩方案

  • 主色: #2563eb (蓝色)
  • 背景: #f8fafc (浅灰白)
  • 卡片背景: #ffffff
  • 文字主色: #1e293b
  • 文字次色: #64748b
  • 收入: #10b981 (绿色)
  • 支出: #ef4444 (红色)
  • 边框: #e2e8f0

字体

  • 主字体: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif
  • 数字字体: "SF Mono", Monaco, monospace

间距系统

  • 基础单位: 4px
  • 小间距: 8px
  • 中间距: 16px
  • 大间距: 24px

圆角

  • 卡片: 12px
  • 按钮: 8px
  • 输入框: 8px

3.3 页面结构

登录/注册页面

  • Logo + 标题
  • 用户名输入框
  • 密码输入框
  • 登录/注册按钮
  • 切换登录/注册链接

主页面

  • 顶部: 月份选择 + 退出登录
  • 概要卡片: 本月收入/支出/结余
  • 账目列表: 按日期分组显示
  • 底部: 新增按钮 (固定)

新增账目弹窗

  • 类型切换 (收入/支出)
  • 金额输入
  • 分类选择
  • 日期选择
  • 备注输入
  • 保存按钮

3.4 组件

账目卡片

  • 左侧: 分类图标 + 描述
  • 右侧: 金额 (收入绿色/支出红色)
  • 点击可编辑/删除

分类图标

  • 餐饮: 🍜
  • 交通: 🚗
  • 购物: 🛒
  • 工资: 💰
  • 其他: 📝

动画效果

  • 页面切换: 淡入淡出 200ms
  • 弹窗: 缩放进入 200ms
  • 列表项: 滑入 150ms

4. 功能规范

4.1 用户系统

注册

  • 用户名 (3-20字符,字母数字)
  • 密码 (6-20字符)
  • 用户名唯一性检查

登录

  • 用户名 + 密码
  • 返回 JWT Token
  • Token 有效期 7 天

4.2 账目管理

新增账目

  • 类型: 收入/支出
  • 金额: 正数
  • 分类: 预设分类
  • 日期: 默认为今天
  • 备注: 可选

编辑账目

  • 可修改所有字段
  • 删除账目

查看账目

  • 按月份筛选
  • 按类型筛选 (收入/支出/全部)
  • 按日期倒序排列

4.3 数据统计

月度统计

  • 本月总收入
  • 本月总支出
  • 本月结余

5. API 规范

认证接口

  • POST /api/auth/register - 注册
  • POST /api/auth/login - 登录

账目接口

  • GET /api/records - 获取账目列表 (支持 month 参数)
  • POST /api/records - 新增账目
  • PUT /api/records/:id - 更新账目
  • DELETE /api/records/:id - 删除账目
  • GET /api/stats - 获取月度统计

6. 数据库设计

users 表

CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT UNIQUE NOT NULL,
  password TEXT NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

records 表

CREATE TABLE records (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL,
  type TEXT NOT NULL CHECK(type IN ('income', 'expense')),
  amount REAL NOT NULL,
  category TEXT NOT NULL,
  date DATE NOT NULL,
  note TEXT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

7. 验收标准

  1. 用户可以注册新账号
  2. 用户可以登录系统
  3. 登录后可查看月度账目统计
  4. 可以新增收入/支出记录
  5. 可以编辑和删除记录
  6. 移动端界面正常显示和操作
  7. 通过 ip:3500 访问