{"id":30681435,"url":"https://github.com/dainsleif233/arkitektonika","last_synced_at":"2025-09-01T17:11:14.192Z","repository":{"id":310609991,"uuid":"1040515662","full_name":"Dainsleif233/Arkitektonika","owner":"Dainsleif233","description":"Arkitektonika 是一个用于 NBT 数据的 REST 存储库。","archived":false,"fork":false,"pushed_at":"2025-08-19T06:09:55.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-19T07:26:18.860Z","etag":null,"topics":["fastasyncworldedit","minecraft","schematic"],"latest_commit_sha":null,"homepage":"https://schem-api.syshub.top","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dainsleif233.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-19T05:20:45.000Z","updated_at":"2025-08-19T06:09:58.000Z","dependencies_parsed_at":"2025-08-19T07:26:22.906Z","dependency_job_id":"1304eda4-1a34-403a-82e6-d4ec24d859c5","html_url":"https://github.com/Dainsleif233/Arkitektonika","commit_stats":null,"previous_names":["dainsleif233/arkitektonika"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Dainsleif233/Arkitektonika","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dainsleif233%2FArkitektonika","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dainsleif233%2FArkitektonika/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dainsleif233%2FArkitektonika/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dainsleif233%2FArkitektonika/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dainsleif233","download_url":"https://codeload.github.com/Dainsleif233/Arkitektonika/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dainsleif233%2FArkitektonika/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273159599,"owners_count":25055864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastasyncworldedit","minecraft","schematic"],"created_at":"2025-09-01T17:11:08.557Z","updated_at":"2025-09-01T17:11:14.184Z","avatar_url":"https://github.com/Dainsleif233.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arkitektonika\n\n本项目基于 Next.js。重写自[Arkitektonika](https://github.com/Alsace-Technology-Department/Arkitektonika)。\n\n## 功能特性\n\n- 📦 文件自动去重（基于 SHA1 哈希）\n- 🔒 可选的密码保护访问\n- 🗄️ 支持多种数据库：SQLite、PostgreSQL、MySQL\n- ☁️ S3 兼容的对象存储支持\n- 🚀 自动过期清理机制\n- 📊 文件大小限制和下载速率控制\n- 🔗 预签名 URL 下载\n- ✈  第三方 API 下载支持\n\n## API 端点\n\n### 基础路由格式\n\n- **无密码模式**: `/{endpoint}`\n- **密码保护模式**: `/{password}/{endpoint}`\n\n### 上传建筑文件\n\n```http\nPOST /upload\nContent-Type: multipart/form-data\n\nFormData:\nschematic: 建筑文件 (.schematic 或 .schem)\n```\n\n**响应示例:**\n```json\n{\n  \"download_key\": \"uuid-download-key\",\n  \"delete_key\": \"uuid-delete-key\"\n}\n```\n\n### 下载建筑文件\n\n```http\nGET /download/{download_key}\n```\n\n**响应**: 302 重定向到预签名下载 URL\n**第三方API**: {download_key} = {third_party_key}@{third_party_name}\n\n### 检查下载状态\n\n```http\nHEAD /download/{download_key}\n```\n\n**响应状态码:**\n- `200`: 文件存在且可下载\n- `404`: 文件不存在于数据库\n- `410`: 文件不存在于存储\n\n### 删除建筑文件\n\n```http\nDELETE /delete/{delete_key}\n```\n\n**响应状态码:**\n- `200`: 删除成功\n- `404`: 文件不存在于数据库\n- `410`: 文件不存在于存储\n\n### 检查删除状态\n\n```http\nHEAD /delete/{delete_key}\n```\n\n### 清理过期文件（管理员）\n\n```http\nHEAD /clean/{clean_password}\n```\n\n自动清理超过 30 天的过期文件。\n\n## 环境变量配置\n\n### 基础配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `PASSWORD` | API 访问密码（可选） | - | ❌ |\n| `ALLOW_ORIGIN` | CORS 允许的源 | `*` | ❌ |\n| `CLEAN_PWD` | 清理功能密码 | - | ✅ |\n\n### 文件上传配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `MAX_SCHEMATIC_SIZE` | 最大文件大小（字节） | `0`（无限制） | ❌ |\n\n### 第三方 API 配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `OTHER_API` | JSON键值对（名称:下载端点） | - | ❌ |\n\n### 数据库配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `DB_TYPE` | 数据库类型 (`sqlite`/`postgres`/`mysql`) | `sqlite` | ❌ |\n| `DB_NAME` | 数据库名称 | `arkitektonika.db` | ❌ |\n| `DB_TABLE` | 数据表名称 | `Arkitektonika` | ❌ |\n| `DB_HOST` | 数据库主机 | `localhost` | ❌* |\n| `DB_PORT` | 数据库端口 | `5432`/`3306` | ❌* |\n| `DB_USERNAME` | 数据库用户名 | `root` | ❌* |\n| `DB_PASSWORD` | 数据库密码 | - | ❌* |\n\n*仅在使用 PostgreSQL 或 MySQL 时需要\n\n### S3 存储配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `REGION` | S3 区域 | - | ✅ |\n| `STORAGE_API` | S3 API 端点 | - | ✅ |\n| `ACCESS_KEY` | S3 访问密钥 | - | ✅ |\n| `SECRET_KEY` | S3 秘密密钥 | - | ✅ |\n| `BUCKET_NAME` | S3 存储桶名称 | - | ✅ |\n| `DOWNLOAD_RATE_LIMIT` | 下载速率限制（字节/秒） | `0`（无限制） | ❌ |\n\n### 运行时配置\n\n| 变量名 | 描述 | 默认值 | 必需 |\n|--------|------|--------|------|\n| `NODE_ENV` | 运行环境 | `development` | ❌ |\n\n## 云函数部署\n\n[![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/Dainsleif233/Arkitektonika)\n\n[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/Dainsleif233/Arkitektonika)\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/Dainsleif233/Arkitektonika)\n\n## 技术栈\n\n- **框架**: Next.js 15.4.6\n- **数据库 ORM**: TypeORM 0.3.25\n- **对象存储**: AWS SDK for JavaScript v3\n- **数据库支持**: SQLite3, PostgreSQL, MySQL2\n- **语言**: TypeScript\n\n## 许可证\n\nMIT License - 详见 [LICENSE](LICENSE) 文件\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 支持\n\n如果您在使用过程中遇到问题，请创建 Issue 或联系维护者。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdainsleif233%2Farkitektonika","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdainsleif233%2Farkitektonika","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdainsleif233%2Farkitektonika/lists"}