# MyNotes **Repository Path**: 1091198228/my-notes ## Basic Information - **Project Name**: MyNotes - **Description**: 笔记网站 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-15 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyNotes MyNotes 是一个前后端分离的全功能笔记应用,支持用户注册登录、笔记增删改查、标签管理、文件夹管理、全文搜索、文件附件上传、笔记分享(含密码保护)、博客公开展示以及管理后台等功能。 --- ## 项目结构 ``` My_notes/ ├── backend/ # Go 后端(分层架构) │ ├── cmd/server/ # 应用入口 │ ├── internal/ # handler → service → repository → model │ │ ├── config/ # 配置加载(YAML) │ │ ├── handler/ # HTTP Handler │ │ ├── middleware/ # 中间件(JWT、CORS、Admin) │ │ ├── model/ # 数据模型(GORM struct) │ │ ├── repository/ # 数据访问层 │ │ └── service/ # 业务逻辑层 │ ├── pkg/ # 公共工具(JWT、加密、数据库、响应封装) │ ├── config.yaml # 配置文件 │ ├── Dockerfile │ ├── go.mod │ └── go.sum │ ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── api/ # Axios 请求封装 │ │ ├── components/ # 通用组件(编辑器) │ │ ├── layouts/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── utils/ # 工具函数 │ │ └── views/ # 页面视图 │ ├── Dockerfile │ ├── nginx.conf │ ├── tailwind.config.js │ └── vite.config.js │ ├── docs/ │ └── design.md # 技术设计方案 ├── docker-compose.yml # Docker 容器编排 ├── start-dev.bat # Windows 一键启动开发脚本 └── security-audit-report.md # 安全审计报告 ``` --- ## 技术栈 | 层级 | 技术选型 | |------|---------| | 前端框架 | Vue 3(Composition API) | | 构建工具 | Vite | | 状态管理 | Pinia | | UI 样式 | Tailwind CSS | | 路由 | Vue Router | | 编辑器 | Milkdown(Markdown)+ TipTap(富文本) | | 后端框架 | Go + Gin | | ORM | GORM | | 数据库 | SQLite(开发),可切换 PostgreSQL / MySQL | | 认证 | JWT(access_token + refresh_token) | | 密码加密 | bcrypt | | 容器化 | Docker Compose + Nginx | --- ## 核心功能 ### 用户系统 - 注册 / 登录,JWT 双 token 认证(access_token 2 小时 + refresh_token 7 天) - 用户信息修改、密码变更 - 管理员角色与普通用户权限分离 ### 笔记管理 - 笔记 CRUD,支持 Markdown 和富文本双模式 - 笔记置顶、归档、软删除、回收站恢复 - 收藏 / 星标功能 - 批量操作:批量删除、恢复、归档、移动 - 笔记导出为 Markdown / HTML - 笔记密码保护、分享链接(含密码) - 博客公开展示模式 ### 标签系统 - 标签增删改查,自定义颜色 - 笔记与标签多对多关联 - 按标签筛选笔记 ### 文件夹系统 - 文件夹树形结构管理 - 笔记移动到文件夹 - 文件夹分享与密码保护 - 文件夹博客展示控制 ### 全文搜索 - SQLite FTS5 全文搜索(开发阶段) - 搜索建议(标题匹配) - 设计上支持后期替换为 MeiliSearch / Elasticsearch ### 文件附件 - 文件上传(multipart),MIME 类型限制 - 文件下载与删除 ### 管理后台 - 用户列表管理、删除用户、角色调整 - 系统配置管理 --- ## 数据库模型 | 表名 | 说明 | 关键字段 | |------|------|---------| | users | 用户表 | username, password_hash, role | | notes | 笔记表 | title, content, user_id, is_pinned, is_archived, is_deleted, password 等 | | tags | 标签表 | name, color, user_id | | note_tags | 关联表 | note_id, tag_id(多对多) | | folders | 文件夹表 | name, parent_id, user_id, password | | attachments | 附件表 | filename, filepath, filesize, mimetype | | system_configs | 系统配置表 | key, value | --- ## API 接口 基础路径:`/api/v1` | 模块 | 公开接口 | 认证接口 | |------|---------|---------| | 用户认证 | POST /auth/register, /auth/login, /auth/refresh | GET/PUT /auth/me, PUT /auth/password | | 笔记 | GET /public/notes/:id, GET /public/users/:username/blog | 完整 CRUD + 置顶/归档/恢复/分享/密码/博客展示 | | 文件夹 | - | CRUD + 树形结构 + 分享/密码/博客 | | 标签 | GET /public/users/:username/tags | CRUD | | 搜索 | - | GET /search, GET /search/suggestions | | 文件 | - | POST /upload, GET /upload/:id, DELETE /upload/:id | | 管理 | GET /public/info | 用户管理, 配置管理 | --- ## 后端架构 采用四层分层架构: ``` Handler(请求解析 / 响应组装) ↓ Service(业务逻辑 / 事务编排) ↓ Repository(数据库 CRUD 封装) ↓ Model(数据结构定义) ``` 公共包 `pkg/` 提供 JWT 工具、密码哈希、统一响应格式、数据库初始化等基础能力。配置通过 `config.yaml` 加载,支持数据库驱动、搜索引擎、JWT 参数等灵活切换。 --- ## 快速开始 ### 环境要求 - Go 1.21+ - Node.js 18+ - Docker & Docker Compose(可选,用于容器化部署) ### 开发环境 **方式一:使用启动脚本(Windows)** ```bash start-dev.bat ``` **方式二:手动启动** ```bash # 启动后端 cd backend go run cmd/server/main.go # 启动前端(另开终端) cd frontend npm install npm run dev ``` 后端默认监听 `:8080`,前端默认监听 `:5173`。 ### 环境变量 后端支持通过环境变量覆盖配置: | 变量 | 说明 | 默认值 | |------|------|--------| | DB_DRIVER | 数据库驱动 | sqlite | | DB_DSN | 数据库连接串 | ./data/notes.db | 切换 PostgreSQL 示例: ```bash DB_DRIVER=postgres DB_DSN=host=localhost port=5432 user=notes password=secret dbname=notes sslmode=disable ``` ### Docker Compose 部署 ```bash docker-compose up -d --build ``` 服务说明: | 服务 | 端口 | 说明 | |------|------|------| | backend | 8080 | Go 后端,数据挂载于 ./backend/data 和 ./backend/uploads | | frontend | 80 | Nginx 托管前端静态资源 | 可选启用 PostgreSQL 容器替代 SQLite,取消 `docker-compose.yml` 中 `db` 服务的注释即可。 --- ## 安全审计 项目已完成安全审计(2026-06-12),主要发现: | 等级 | 数量 | 主要问题 | |------|------|---------| | 严重 | 4 项 | 笔记/文件夹密码明文存储、公开页面存储型 XSS、搜索结果 XSS | | 高危 | 4 项 | JWT 密钥硬编码、CORS 过于宽松、Token 存 localStorage、分享密码通过 URL 传输 | | 中等 | 5 项 | 缺少安全响应头、无 HTTPS、文件扩展名未验证、导出 HTML 未转义、管理路由权限缺失 | | 低危 | 3 项 | target="_blank" 属性缺失、前端路由守卫不完善、无请求频率限制 | 详见 [security-audit-report.md](./security-audit-report.md)。 --- ## 待办 - [ ] 前端页面功能完善(编辑器、笔记列表、标签管理、搜索等视图) - [ ] 修复安全审计报告中的严重和高危问题 - [ ] 配置 HTTPS 和安全响应头 - [ ] 添加请求频率限制 - [ ] 全文搜索从 FTS5 迁移到生产级搜索引擎 - [ ] 数据库从 SQLite 切换到 PostgreSQL