# ninja-reader **Repository Path**: codebase-xsy/ninja-reader ## Basic Information - **Project Name**: ninja-reader - **Description**: 一个用于阅读 Martin Fowler 网站文章的全栈应用。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-31 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Martin Fowler Reader 一个用于阅读 Martin Fowler 网站文章的全栈应用。 ## 技术栈 - **前端**: Vue 3 + Vite - **后端**: Node.js + Express - **数据库**: MongoDB 8.2.9 - **部署**: Docker + Docker Compose ## 快速开始 ### 前置要求 - Docker - Docker Compose ### 一键启动 ```bash # 克隆项目 cd martinfowler-reader # 启动所有服务 docker-compose up -d ``` 服务启动后访问: - 前端: http://localhost:5173 - 后端 API: http://localhost:3000 ## 初始化数据 首次启动后,需要初始化文章数据: ```bash # 1. 初始化文章列表(从 martinfowler.com 获取) curl -X POST http://localhost:3000/api/init # 2. 查看初始化状态 curl http://localhost:3000/api/init/status # 3. 爬取文章内容 curl -X POST http://localhost:3000/api/scrape # 4. 查看爬取状态 curl http://localhost:3000/api/scrape/status ``` ## API 文档 ### 文章相关 #### 获取文章列表 ```http GET /api/articles ``` 查询参数: - `search`: 搜索关键词(可选) - `tag`: 标签过滤(可选) - `page`: 页码,默认 1(可选) - `limit`: 每页数量,默认 20(可选) #### 获取单篇文章 ```http GET /api/articles/:id ``` #### 获取所有标签 ```http GET /api/tags ``` ### 数据管理 #### 初始化文章列表 ```http POST /api/init ``` #### 查看初始化状态 ```http GET /api/init/status ``` #### 爬取文章内容 ```http POST /api/scrape ``` #### 查看爬取状态 ```http GET /api/scrape/status ``` ## 项目结构 ``` martinfowler-reader/ ├── client/ # 前端项目 │ ├── src/ │ │ ├── api/ # API 调用 │ │ ├── router/ # 路由配置 │ │ ├── views/ # 页面组件 │ │ ├── App.vue │ │ └── main.js │ ├── Dockerfile │ ├── package.json │ └── vite.config.js ├── server/ # 后端项目 │ ├── index.js # 主入口 │ ├── init-articles.js # 文章初始化脚本 │ ├── scrape.js # 文章爬取脚本 │ ├── Dockerfile │ └── package.json ├── docker-compose.yml # Docker Compose 配置 └── README.md ``` ## 常用 Docker 命令 ```bash # 启动服务 docker-compose up -d # 停止服务 docker-compose down # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f # 查看特定服务日志 docker-compose logs server docker-compose logs client # 重新构建并启动 docker-compose up -d --build # 停止并删除数据卷(清空数据库) docker-compose down -v ``` ## 开发模式 如果需要在本地开发环境运行: ### 后端开发 ```bash cd server npm install npm run dev ``` ### 前端开发 ```bash cd client npm install npm run dev ``` 注意:本地开发需要确保 MongoDB 已启动并正确配置连接字符串。 ## 环境变量 后端支持以下环境变量: - `MONGO_URI`: MongoDB 连接字符串 - `PORT`: 服务端口,默认 3000 - `AUTO_SCRAPE`: 启动时是否自动爬取,默认 false ## License MIT