Skip to content

Dainsleif233/Arkitektonika

Repository files navigation

Arkitektonika

本项目基于 Next.js。重写自Arkitektonika

功能特性

  • 📦 文件自动去重(基于 SHA1 哈希)
  • 🔒 可选的密码保护访问
  • 🗄️ 支持多种数据库:SQLite、PostgreSQL、MySQL
  • ☁️ S3 兼容的对象存储支持
  • 🚀 自动过期清理机制
  • 📊 文件大小限制和下载速率控制
  • 🔗 预签名 URL 下载
  • ✈ 第三方 API 下载支持

API 端点

基础路由格式

  • 无密码模式: /{endpoint}
  • 密码保护模式: /{password}/{endpoint}

上传建筑文件

POST /upload
Content-Type: multipart/form-data

FormData:
schematic: 建筑文件 (.schematic 或 .schem)

响应示例:

{
  "download_key": "uuid-download-key",
  "delete_key": "uuid-delete-key"
}

下载建筑文件

GET /download/{download_key}

响应: 302 重定向到预签名下载 URL 第三方API: {download_key} = {third_party_key}@{third_party_name}

检查下载状态

HEAD /download/{download_key}

响应状态码:

  • 200: 文件存在且可下载
  • 404: 文件不存在于数据库
  • 410: 文件不存在于存储

删除建筑文件

DELETE /delete/{delete_key}

响应状态码:

  • 200: 删除成功
  • 404: 文件不存在于数据库
  • 410: 文件不存在于存储

检查删除状态

HEAD /delete/{delete_key}

清理过期文件(管理员)

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

云函数部署

Deploy to Vercel

Deploy to Cloudflare Workers

Deploy to Netlify

技术栈

  • 框架: Next.js 15.4.6
  • 数据库 ORM: TypeORM 0.3.25
  • 对象存储: AWS SDK for JavaScript v3
  • 数据库支持: SQLite3, PostgreSQL, MySQL2
  • 语言: TypeScript

许可证

MIT License - 详见 LICENSE 文件

贡献

欢迎提交 Issue 和 Pull Request!

支持

如果您在使用过程中遇到问题,请创建 Issue 或联系维护者。

About

Arkitektonika 是一个用于 NBT 数据的 REST 存储库。

Topics

Resources

License

Stars

Watchers

Forks