Manyfold 是一个开源、自托管的 Web 应用程序,用于管理 3d 模型集合,特别专注于 3d 打印。
请访问Manyfold.app了解更多详细信息、安装说明以及用户和管理指南!或者,要立即尝试,请在try.manyfold.app尝试我们的演示。
有几种途径可以获得帮助:
- GitHub issues是报告错误的最佳场所。
- 在 Matrix(一个开放的 Discord/Slack 式聊天系统)上与“团队”进行实时聊天。
- 联系我们在 Fediverse 中的社交媒体(Mastodon 等)。
而且,如果您想为开发工作提供经济贡献,您可以在Open Collective中这样做。
Manyfold 是开源软件,我们鼓励贡献!如果您想参与其中,请遵循以下指南,其中解释了如何启动和运行。然后看看我们的第一期标签,了解可能适合代码库新手的任务,或者看看我们的开发路线图。
该应用程序是用Ruby on Rails构建的,并尽可能遵循该框架的最佳实践。如果您不熟悉 Rails,他们的入门指南是一个很好的入门指南。
一般来说,Manyfold 是一个使用普通旧 HTTP 请求的服务器端应用程序。我们还没有任何使用 XHR、Websockets 或其他更具交互性的通信的代码(尽管将来可以这样做)。
该应用程序由应用程序服务器本身以及使用Delayed::Job执行异步任务的后台作业运行程序组成。
我们还使用其他一些主要组件来构建:
- Bootstrap 5提供前端 CSS / JS
- THREE.js(通过 TypeScript)用于客户端 3D 渲染
- Mittsu是 THREE.js 的 Ruby 端口,用于服务器端 3D 代码
- ActiveAdmin目前用于提供高级数据库管理界面
- PostgreSQL是生产数据库,尽管在开发中使用 sqlite3
要自行运行该应用程序,您需要安装以下内容:
- 红宝石3.2
- 捆绑器 2.x
- Node.js 20.x
- 纱线 >= 1.22
- Foreman 或其他 Procfile 运行者
- libarchive(用于上传支持)
- glfw3(用于模型分析和操作)
要在克隆此存储库后运行应用程序,您应该能够运行bin/dev
; 应该设置数据库、执行迁移、安装依赖项,然后使应用程序在http://127.0.0.1:5000上可用。
我们使用Rubocop来监控 Ruby 代码中对编码标准的遵守情况。我们针对特定库和框架使用StandardRB规则以及一些其他规则集。
您可以使用 运行 linter bundle exec rubocop
。
我们还有 ERB 和 Typescript 文件的 linter。您可以分别使用:bundle exec erblint --lint-all
和来运行它们yarn run lint:ts
。
代码 linting 由我们的 GitHub Actions 测试运行程序自动执行,但如果您设置Husky,它也将作为预提交挂钩执行。
我们希望生成经过良好测试的代码;虽然不是 100%,但我们的目标是通过每一个新代码来提高测试覆盖率。
您可以使用命令一次性运行测试套件bundle exec rake
,也可以启动连续测试运行程序,bundle exec guard
它将在您编写代码时自动运行测试。
当使用 GitHub Actions 推送到我们的存储库时,测试会自动运行。
Manyfold 使用Rails 的 I18n 框架来处理所有文本内容。
您可以使用 来检查区域设置文件的有效性bundle exec i18n-tasks health
。这也作为我们的测试管道的一部分运行,因此将在新代码上强制执行。
翻译也可在客户端 Javascript 中使用;它们是使用i18n-js从 Rails 语言环境文件构建的,作为资产管道的一部分。如果您需要手动运行导出,请执行bundle exec i18n export -c config/i18n-js.yml
。
我们正在使用Translation.io来管理其他语言的翻译。如果您想在这方面提供帮助,请在该网站上注册并向我们发送您感兴趣的语言的 GitHub 问题上的用户名。
要与 Translation.io 同步,请运行rake translation:clobber_and_sync:{locale}
支持{locale}
的代码,例如de
.
该应用程序作为多平台 docker 镜像进行分发(由Depot构建);有关完整详细信息,请参阅我们的Docker Compose 说明。
如果您想构建自己的 Docker 映像版本,可以通过docker build .
在该存储库的根目录中运行来以通常的方式进行操作。
该项目由NGI0 Entrust资助,该基金是由NLnet在欧盟委员会下一代互联网计划的财政支持下建立的。请访问NLnet 项目页面了解更多信息。