init fragmemo (memo SPA + go backend)
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# fragmemo - 碎片笔记
|
||||
|
||||
轻量级、自托管的笔记 Web 应用。Markdown 快速记录、标签分类、全文搜索、图片上传、私密/公开模式。
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
fragmemo/
|
||||
├── memo.fragford.cn/ # React 前端(独立 Git 仓库)
|
||||
├── memo_server/ # Python 后端(独立 Git 仓库)
|
||||
├── frag_memo_app/ # 预留:鸿蒙 ArkTS App(独立 Git 仓库)
|
||||
└── docs/ # 物料文档
|
||||
```
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 模块 | 技术 |
|
||||
|------|------|
|
||||
| 前端 | React 19 + TypeScript + Vite + Tailwind CSS |
|
||||
| 后端 | Python 3.11+ + FastAPI + SQLAlchemy async |
|
||||
| 数据库 | MySQL 8.0 |
|
||||
| 认证 | JWT(access_token + refresh_token) |
|
||||
|
||||
## 本地开发
|
||||
|
||||
### 后端
|
||||
|
||||
```bash
|
||||
cd memo_server
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
cp .env.example .env # 修改数据库连接配置
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
访问 http://localhost:8000/docs 查看 Swagger API 文档
|
||||
|
||||
### 前端
|
||||
|
||||
```bash
|
||||
cd memo.fragford.cn
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
前端开发服务器运行在 http://localhost:3001,API 请求自动代理到后端。
|
||||
|
||||
## API 接口
|
||||
|
||||
所有接口以 `/api/v1/` 开头,认证接口使用 JWT Bearer Token。
|
||||
|
||||
### 认证
|
||||
- `POST /api/v1/auth/register` - 注册
|
||||
- `POST /api/v1/auth/login` - 登录
|
||||
- `POST /api/v1/auth/refresh` - 刷新 Token
|
||||
- `GET /api/v1/auth/me` - 获取当前用户
|
||||
- `PUT /api/v1/auth/me` - 更新个人信息
|
||||
- `GET /api/v1/auth/me/stats` - 获取用户统计
|
||||
|
||||
### 笔记
|
||||
- `GET /api/v1/memos` - 笔记列表(支持 cursor/limit/search/tag/visibility)
|
||||
- `POST /api/v1/memos` - 创建笔记
|
||||
- `GET /api/v1/memos/{id}` - 笔记详情
|
||||
- `PUT /api/v1/memos/{id}` - 更新笔记
|
||||
- `DELETE /api/v1/memos/{id}` - 删除笔记
|
||||
|
||||
### 标签
|
||||
- `GET /api/v1/tags` - 标签列表
|
||||
- `POST /api/v1/tags` - 创建标签
|
||||
- `PUT /api/v1/tags/{id}` - 更新标签
|
||||
- `DELETE /api/v1/tags/{id}` - 删除标签
|
||||
|
||||
### 文件
|
||||
- `POST /api/v1/files/upload` - 上传文件
|
||||
- `GET /api/v1/files/{id}` - 获取文件
|
||||
|
||||
## 部署到服务器
|
||||
|
||||
### 你需要做的事情(部署时)
|
||||
|
||||
1. 在宝塔面板创建 MySQL 数据库 `fragmemo`
|
||||
2. 在宝塔 → 软件商店 → Python 项目管理器 添加 `memo_server` 项目
|
||||
3. 在宝塔 → 网站 添加站点(端口自定),配置 Nginx 反向代理
|
||||
4. 配置 Nginx:`/api/*` 转发到 `127.0.0.1:8000`,`/*` 指向前端 dist/
|
||||
|
||||
部署脚本见各子项目的 `deploy.sh`。
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user