https://github.com/dainsleif233/arkitektonika
Arkitektonika 是一个用于 NBT 数据的 REST 存储库。
https://github.com/dainsleif233/arkitektonika
fastasyncworldedit minecraft schematic
Last synced: 10 months ago
JSON representation
Arkitektonika 是一个用于 NBT 数据的 REST 存储库。
- Host: GitHub
- URL: https://github.com/dainsleif233/arkitektonika
- Owner: Dainsleif233
- License: mit
- Created: 2025-08-19T05:20:45.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-08-19T06:09:55.000Z (10 months ago)
- Last Synced: 2025-08-19T07:26:18.860Z (10 months ago)
- Topics: fastasyncworldedit, minecraft, schematic
- Language: TypeScript
- Homepage: https://schem-api.syshub.top
- Size: 80.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Arkitektonika
本项目基于 Next.js。重写自[Arkitektonika](https://github.com/Alsace-Technology-Department/Arkitektonika)。
## 功能特性
- 📦 文件自动去重(基于 SHA1 哈希)
- 🔒 可选的密码保护访问
- 🗄️ 支持多种数据库:SQLite、PostgreSQL、MySQL
- ☁️ S3 兼容的对象存储支持
- 🚀 自动过期清理机制
- 📊 文件大小限制和下载速率控制
- 🔗 预签名 URL 下载
- ✈ 第三方 API 下载支持
## API 端点
### 基础路由格式
- **无密码模式**: `/{endpoint}`
- **密码保护模式**: `/{password}/{endpoint}`
### 上传建筑文件
```http
POST /upload
Content-Type: multipart/form-data
FormData:
schematic: 建筑文件 (.schematic 或 .schem)
```
**响应示例:**
```json
{
"download_key": "uuid-download-key",
"delete_key": "uuid-delete-key"
}
```
### 下载建筑文件
```http
GET /download/{download_key}
```
**响应**: 302 重定向到预签名下载 URL
**第三方API**: {download_key} = {third_party_key}@{third_party_name}
### 检查下载状态
```http
HEAD /download/{download_key}
```
**响应状态码:**
- `200`: 文件存在且可下载
- `404`: 文件不存在于数据库
- `410`: 文件不存在于存储
### 删除建筑文件
```http
DELETE /delete/{delete_key}
```
**响应状态码:**
- `200`: 删除成功
- `404`: 文件不存在于数据库
- `410`: 文件不存在于存储
### 检查删除状态
```http
HEAD /delete/{delete_key}
```
### 清理过期文件(管理员)
```http
HEAD /clean/{clean_password}
```
自动清理超过 30 天的过期文件。
## 环境变量配置
### 基础配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `PASSWORD` | API 访问密码(可选) | - | ❌ |
| `ALLOW_ORIGIN` | CORS 允许的源 | `*` | ❌ |
| `CLEAN_PWD` | 清理功能密码 | - | ✅ |
### 文件上传配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `MAX_SCHEMATIC_SIZE` | 最大文件大小(字节) | `0`(无限制) | ❌ |
### 第三方 API 配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `OTHER_API` | JSON键值对(名称:下载端点) | - | ❌ |
### 数据库配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `DB_TYPE` | 数据库类型 (`sqlite`/`postgres`/`mysql`) | `sqlite` | ❌ |
| `DB_NAME` | 数据库名称 | `arkitektonika.db` | ❌ |
| `DB_TABLE` | 数据表名称 | `Arkitektonika` | ❌ |
| `DB_HOST` | 数据库主机 | `localhost` | ❌* |
| `DB_PORT` | 数据库端口 | `5432`/`3306` | ❌* |
| `DB_USERNAME` | 数据库用户名 | `root` | ❌* |
| `DB_PASSWORD` | 数据库密码 | - | ❌* |
*仅在使用 PostgreSQL 或 MySQL 时需要
### S3 存储配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `REGION` | S3 区域 | - | ✅ |
| `STORAGE_API` | S3 API 端点 | - | ✅ |
| `ACCESS_KEY` | S3 访问密钥 | - | ✅ |
| `SECRET_KEY` | S3 秘密密钥 | - | ✅ |
| `BUCKET_NAME` | S3 存储桶名称 | - | ✅ |
| `DOWNLOAD_RATE_LIMIT` | 下载速率限制(字节/秒) | `0`(无限制) | ❌ |
### 运行时配置
| 变量名 | 描述 | 默认值 | 必需 |
|--------|------|--------|------|
| `NODE_ENV` | 运行环境 | `development` | ❌ |
## 云函数部署
[](https://vercel.com/new/clone?repository-url=https://github.com/Dainsleif233/Arkitektonika)
[](https://deploy.workers.cloudflare.com/?url=https://github.com/Dainsleif233/Arkitektonika)
[](https://app.netlify.com/start/deploy?repository=https://github.com/Dainsleif233/Arkitektonika)
## 技术栈
- **框架**: Next.js 15.4.6
- **数据库 ORM**: TypeORM 0.3.25
- **对象存储**: AWS SDK for JavaScript v3
- **数据库支持**: SQLite3, PostgreSQL, MySQL2
- **语言**: TypeScript
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎提交 Issue 和 Pull Request!
## 支持
如果您在使用过程中遇到问题,请创建 Issue 或联系维护者。