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开发, 后端, 社交平台, 自动化攻击