OtavioAraujoS/ani-social
GitHub: OtavioAraujoS/ani-social
Ani-Social 是一个基于现代 JavaScript 栈的高性能动漫社交 API,解决快速构建与部署聚焦动漫内容的社交平台问题。
Stars: 0 | Forks: 0
# 💮 Ani-Social API
欢迎来到 **Ani-Social** 的代码仓库!这是一个为专注于动漫的社交系统构建的现代 API。
## 🚀 技术栈
- **Bun**(Runtime 和包管理器)
- **ElysiaJS**(专注于性能的 Web 框架)
- **Drizzle ORM**(TypeScript ORM)
- **PostgreSQL**(关系型数据库)
- **Docker & Docker Compose**
## 📋 前置条件
要在本地运行该项目,请确保您的机器上安装了以下工具:
- [Bun](https://bun.sh/)
- [Docker](https://www.docker.com/) 以及 Docker Compose
- Git
您还需要在项目根目录下创建一个 `.env` 文件,包含以下变量(基于我们的 `docker-compose.yml`):
```
DATABASE_URL=
JWT_SECRET=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
```
## ⚙️ 安装与配置
### 1. 克隆仓库
```
git clone https://github.com/OtavioAraujoS/ani-social.git
cd ani-social
```
### 2. 安装依赖
使用 Bun,安装过程非常快:
```
bun install
```
### 3. 运行项目
您有两种主要方式来运行应用程序的各个部分:
#### 🐳 选项 A:全程使用 Docker(推荐)
通过 Docker 启动数据库,并将应用程序编译打包到一个现成的 Container 中:
```
bun run db:up
```
#### 💻 选项 B:在本地运行应用
如果您希望在本地开发中获得更大的控制权,而不将整个应用程序放在 Docker 中运行(仅在后台使用 Docker 运行 PostgreSQL):
```
bun run dev
```
### 🗄️ 额外命令(数据库 / Drizzle)
本项目提供了一些用于操作数据库的快捷命令:
- **生成新的迁移:** `bun run db:generate`
- **通过 Docker 运行迁移:** `bun run db:migrate`
- **推送 Schema:** `bun run db:push`
- **打开 Drizzle Studio:** `bun run db:studio`
## 🛤️ 路由架构(Controllers)
应用程序采用模块化划分,提供以下基础路由。**注意:** 大部分路由需要身份验证,使用 JWT(需要发送 Header `Authorization: Bearer seu-token`)。
### 🔐 身份验证 (`/auth`)
| 方法 | Endpoint | 描述 |
| :----- | :------------ | :--------------------------------------------------------------------- |
| `POST` | `/auth/login` | 通过传入 `userName` 和 `password` 尝试登录。返回 `jwt` token。 |
### ✨ 动漫 (`/animes`)
| 方法 | Endpoint | 描述 |
| :------- | :----------------- | :---------------------------------------------------------- |
| `GET` | `/animes/` | 列出动漫,支持分页 (`?page=1&limit=20`)。 |
| `GET` | `/animes/:animeId` | 通过 ID 返回特定动漫的详细信息。 |
| `POST` | `/animes/` | 结构化注册新动漫。 |
| `PATCH` | `/animes/` | 更新动漫的基础属性。 |
| `PATCH` | `/animes/image` | 更新动漫的封面和图片(例如:通过 Cloudinary)。 |
| `DELETE` | `/animes/:animeId` | 完全删除该动漫的所有记录。 |
### 🏷️ 话题 (`/topics`)
| 方法 | Endpoint | 描述 |
| :------- | :----------------- | :------------------------------------------------------------- |
| `GET` | `/topics/` | 分页返回所有动漫讨论话题。 |
| `GET` | `/topics/:topicId` | 获取特定话题的详细描述。 |
| `POST` | `/topics/` | 创建用于交流的新话题。 |
| `PATCH` | `/topics/:topicId` | 通过提供 Topic ID 编辑现有话题的内容。 |
| `DELETE` | `/topics/:topicId` | 彻底删除该记录。 |
### 💬 评论 (`/comments`)
| 方法 | Endpoint | 描述 |
| :------- | :------------------- | :------------------------------------------------------ |
| `GET` | `/comments/:topicId` | 获取绑定到相应话题的评论。 |
| `POST` | `/comments/` | 用户在该话题中添加自己的评论。 |
| `PATCH` | `/comments/` | 编辑自己的评论。 |
| `DELETE` | `/comments/` | 评论的所有者(用户)删除自己的评论。 |
### 🧑💻 用户 (`/users`)
| 方法 | Endpoint | 描述 |
| :------- | :---------------- | :--------------------------------------------------------------------------- |
| `POST` | `/users/` | 自由/公开的路由,新用户在此进行首次注册。 |
| `GET` | `/users/:userId` | 查询网络中其他伙伴的数据。 |
| `PATCH` | `/users/` | 在已登录的权限范围内更新用户日常的个人资料数据。 |
| `PATCH` | `/users/password` | 专门用于重置账户密码。 |
| `PATCH` | `/users/avatar` | 重新制作头像(个人资料图片)的字段。 |
| `GET` | `/users/admin/` | 根据分页批量列出已注册的用户。 _(仅限 Admin)_ |
| `DELETE` | `/users/admin/` | 在管辖权限下彻底删除系统中的用户。 _(仅限 Admin)_ |
标签:API, Bun, ElysiaJS, PostgreSQL, Syscall, Web开发, 后端, 社交平台, 自动化攻击