[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8095":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},8095,"manyfold","manyfold3d\u002Fmanyfold","manyfold3d","A self-hosted digital asset manager for 3d print files.","https:\u002F\u002Fmanyfold.app",null,"Ruby",1989,117,20,456,0,14,57,6,66.92,"GNU Affero General Public License v3.0",false,"main",true,[26,27,28,29,30,31,32,33,34,35],"3d-printing","dam","digital-asset-management","hacktoberfest","obj-files","rails","self-hosted","stl","stl-files","three-js","2026-06-12 04:00:37","# Manyfold\n\n\u003C!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[![Contributors](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fall-contributors\u002Fmanyfold3d\u002Fmanyfold?color=ee8449&style=flat-square)](CONTRIBUTORS.md)\n\u003C!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nManyfold is an open source, self-hosted web application for managing a collection of 3d models, particularly focused on 3d printing.\n\nVisit [manyfold.app](https:\u002F\u002Fmanyfold.app\u002F) for more details, installation instructions, and user and administration guides! Or, to have a go straight away, try our demo at [try.manyfold.app](https:\u002F\u002Ftry.manyfold.app).\n\n## Help and Support\n\nThere are a few routes to get help:\n\n* [GitHub issues](https:\u002F\u002Fgithub.com\u002Fmanyfold3d\u002Fmanyfold\u002Fissues\u002Fnew) is the best place to report bugs.\n* [Live chat](https:\u002F\u002Fmatrix.to\u002F#\u002F#manyfold:matrix.org) to the \"team\" on Matrix (an open Discord\u002FSlack-like chat system).\n* Get in touch with our [social media](https:\u002F\u002F3dp.chat\u002F@manyfold) presence in the Fediverse (Mastodon, etc).\n\nAnd, if you want to contribute financially to development efforts...\n\n[\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fmanyfold\u002Fdonate\u002Fbutton@2x.png?color=blue\" alt=\"Donate with OpenCollective\" width=\"20%\" \u002F>](https:\u002F\u002Fopencollective.com\u002Fmanyfold\u002Fdonate)\n\n## Developer Documentation\n\nManyfold is open source software, and we encourage contributions! If you want to get involved, follow the guidance below, which explains how to get up and running. Then take a look at our [good first issue](https:\u002F\u002Fgithub.com\u002Fmanyfold3d\u002Fmanyfold\u002Flabels\u002Fgood%20first%20issue) tag for tasks that might suit newcomers to the codebase, or take a look at our [development roadmap](https:\u002F\u002Fgithub.com\u002Forgs\u002Fmanyfold3d\u002Fprojects\u002F1).\n\n### Application architecture\n\nThe application is built in [Ruby on Rails](https:\u002F\u002Frubyonrails.org), and tries to follow the best practices of that framework wherever possible. If you're not familiar with Rails, their [Getting Started](https:\u002F\u002Fguides.rubyonrails.org\u002Fgetting_started.html) guide is a good first introduction.\n\nIn general, Manyfold is a server-side app that uses plain old HTTP requests. We don't have any code using XHR, Websockets, or other more interactive comms yet (though could do in future).\n\nThe application consists of the application server itself, plus a background job runner using [Sidekiq](https:\u002F\u002Fsidekiq.org\u002F) for asynchronous tasks.\n\nThere are a few other major components that we build with:\n\n* [Bootstrap 5](https:\u002F\u002Fgetbootstrap.com) provides the frontend CSS \u002F JS\n* [THREE.js](https:\u002F\u002Fthreejs.org\u002F) (via TypeScript) is used for the client-side 3D rendering\n* [Mittsu](https:\u002F\u002Fgithub.com\u002Fdanini-the-panini\u002Fmittsu), a Ruby port of THREE.js, is used for server-side 3D code\n* [PostgreSQL](https:\u002F\u002Fwww.postgresql.org\u002F) is the production database, though sqlite3 is used in dev\n\n### Running locally\n\nTo run the app yourself, you'll need the following installed:\n\n* Ruby 3.4\n* Bundler 2.6+\n* Node.js 24.14.1 (and run `corepack enable`)\n* Yarn 3.8+\n* Foreman or [another Procfile runner](https:\u002F\u002Fgithub.com\u002Fddollar\u002Fforeman#ports)\n* [libarchive](https:\u002F\u002Fgithub.com\u002Fchef\u002Fffi-libarchive#installation) (for upload support)\n* [imagemagick](https:\u002F\u002Fimagemagick.org\u002Findex.php) (for image thumbnail generation)\n* [ngrok](https:\u002F\u002Fngrok.com) (for ActivityPub development)\n* [assimp](https:\u002F\u002Fwww.assimp.org) (for model file analysis)\n\nTo run the application once you've cloned this repo, you should be able to just run `bin\u002Fdev`; that should set up the database, perform migrations, install dependencies, and then make the application available at \u003Chttp:\u002F\u002F127.0.0.1:3214>.\n\nIf you want to configure optional features, set the appropriate [environment variables](https:\u002F\u002Fmanyfold.app\u002Fsysadmin\u002Fconfiguration.html) in a file called `.env.development.local`. See `env.example` for a template file. Note that the required environment variables in the documentation are not needed in development mode, due to the use of SQLite instead of PostgreSQL.\n\n#### ngrok\n\nRunning `bin\u002Fdev` also expects to be able to start a pre-configured [ngrok](https:\u002F\u002Fngrok.com) tunnel called \"manyfold\", to enable ActivityPub federation in development. If you don't want to use this, you can remove the line from `Procfile.dev`, though please don't commit it!\n\nTo configure the tunnel, add this to your [ngrok config file](https:\u002F\u002Fngrok.com\u002Fdocs\u002Fagent\u002Fconfig\u002F):\n\n```yaml\nendpoints:\n    - name: manyfold\n      url: https:\u002F\u002F{your-ngrok-url-here}\n      upstream:\n         url: 3214\n```\n\n### Using the Devcontainer\n\nTo simplify the development environment setup, Manyfold includes a devcontainer configuration. This allows you to use Visual Studio Code's Remote - Containers extension to develop inside a container.\n\n#### Prerequisites\n\n- Docker installed on your machine\n- Visual Studio Code with the Remote - Containers extension\n\n#### Steps\n\n1. Clone the repository:\n    ```sh\n    git clone https:\u002F\u002Fgithub.com\u002Fmanyfold3d\u002Fmanyfold.git\n    cd manyfold\n    ```\n\n2. Open the repository in Visual Studio Code:\n    ```sh\n    code .\n    ```\n\n3. When prompted by Visual Studio Code, click on \"Reopen in Container\". This will build the devcontainer and open the project inside it.\n\n4. Once the container is running, you can use the integrated terminal in Visual Studio Code to run commands as usual.\n\n### Coding standards\n\n[![Codacy Quality](https:\u002F\u002Fimg.shields.io\u002Fcodacy\u002Fgrade\u002F0d309b8b38b5431c9195e62cd7b707f3)](https:\u002F\u002Fapp.codacy.com\u002Fgh\u002Fmanyfold3d\u002Fmanyfold\u002Fdashboard)\n\nWe use [Rubocop](https:\u002F\u002Frubocop.org\u002F) to monitor adherence to coding standards in Ruby code. We use [StandardRB](https:\u002F\u002Fgithub.com\u002Fstandardrb\u002Fstandard) rules along with some other rulesets for specific libraries and frameworks.\n\nYou can run the linter with `bundle exec rubocop`.\n\nWe also have linters for ERB and Typescript files. You can run these with: `bundle exec erb_lint --lint-all` and `yarn run lint:ts` respectively.\n\nCode linting is automatically performed by our GitHub Actions test runners, but if you set up [Husky](https:\u002F\u002Ftypicode.github.io\u002Fhusky\u002Fget-started.html), it will also execute as a pre-commit hook.\n\n### Testing\n\n![GitHub Actions Workflow Status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fmanyfold3d\u002Fmanyfold\u002Fpush.yml)\n[![Codacy Coverage](https:\u002F\u002Fimg.shields.io\u002Fcodacy\u002Fcoverage\u002F0d309b8b38b5431c9195e62cd7b707f3)](https:\u002F\u002Fapp.codacy.com\u002Fgh\u002Fmanyfold3d\u002Fmanyfold\u002Fdashboard)\n\nWe want to produce well-tested code; it's not 100%, but we aim to increase test coverage with each new bit of code.\n\nYou can run the test suite as a one off with the command `bundle exec rake`, or you can start a continuous test runner with `bundle exec guard` that will automatically run tests as you code.\n\nTests are run automatically when pushed to our repository using GitHub Actions.\n\nGeneration of screenshots for the documentation is made with system specs and is not run by default.\nTo generate screenshots, set `DOC_SCREENSHOT=true`:\n\n```sh\n# All specs and documentation\nDOC_SCREENSHOT=true bundle exec rspec\n# Only documentation specs\nDOC_SCREENSHOT=true bundle exec rspec -t @documentation\n```\n\n\n### Internationalisation & Translation\n\nManyfold uses [Rails' I18n framework](https:\u002F\u002Fguides.rubyonrails.org\u002Fi18n.html) to handle all text content.\n\nYou can check the validity of locale files with `bundle exec i18n-tasks health`. This is also run as part of our test pipeline, so will be enforced on new code.\n\nTranslations are also available in client-side Javascript; they are built from the Rails locale files as part of the asset pipeline, using [i18n-js](https:\u002F\u002Fgithub.com\u002Ffnando\u002Fi18n-js). If you need to run an export manually, do `bundle exec i18n export -c config\u002Fi18n-js.yml`.\n\nWe are using [Translation.io](https:\u002F\u002Ftranslation.io\u002F) to manage translations into other languages. If you want to help out on that, sign up on the site and send us username on a GitHub issue for the language you're interested in.\n\nTo synchronise with Translation.io, run `rake translation:clobber_and_sync:{locale}` where `{locale}` is a supported code, such as `de`.\n\n### Building Docker images\n\n[![Built with Depot](https:\u002F\u002Fdepot.dev\u002Fbadges\u002Fbuilt-with-depot.svg)](https:\u002F\u002Fdepot.dev?utm_source=manyfold)\n\nThe application is distributed as a multi-platform docker image (built by [Depot](https:\u002F\u002Fdepot.dev\u002F)); see our [Docker Compose instructions](https:\u002F\u002Fmanyfold.app\u002Fget-started\u002Fdocker) for full details.\n\nIf you want to build your own version of the Docker image, you can do so by running ` docker build -f docker\u002Fdefault.dockerfile .` in the root directory of this repository.\n\n## Funding\n\nThis project is funded through [NGI0 Entrust](https:\u002F\u002Fnlnet.nl\u002Fentrust), a fund established by [NLnet](https:\u002F\u002Fnlnet.nl) with financial support from the European Commission's [Next Generation Internet](https:\u002F\u002Fngi.eu) program. Learn more at the [NLnet project page](https:\u002F\u002Fnlnet.nl\u002Fproject\u002FPersonal-3D-archive).\n\n[\u003Cimg src=\"https:\u002F\u002Fnlnet.nl\u002Flogo\u002Fbanner.png\" alt=\"NLnet foundation logo\" width=\"20%\" \u002F>](https:\u002F\u002Fnlnet.nl)\n[\u003Cimg src=\"https:\u002F\u002Fnlnet.nl\u002Fimage\u002Flogos\u002FNGI0_tag.svg\" alt=\"NGI Zero Logo\" width=\"20%\" \u002F>](https:\u002F\u002Fnlnet.nl\u002Fentrust)\n\nThis project is also funded by you! Make a donation to support long-term development at OpenCollective:\n\n[\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fmanyfold\u002Fdonate\u002Fbutton@2x.png?color=blue\" alt=\"Donate with OpenCollective\" width=\"20%\" \u002F>](https:\u002F\u002Fopencollective.com\u002Fmanyfold\u002Fdonate)\n\n## Popularity\n\nDown the bottom because they're cool, but not important, here are some stats!\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=manyfold3d\u002Fmanyfold&type=Date)](https:\u002F\u002Fstar-history.com\u002F#manyfold3d\u002Fmanyfold&Date)\n","Manyfold 是一个开源的自托管 Web 应用程序，用于管理和组织3D打印文件。它基于 Ruby on Rails 构建，支持STL和OBJ等常见3D模型格式，并使用THREE.js实现客户端3D渲染预览，Mittsu在服务器端处理3D逻辑。此外，该应用还集成了Sidekiq来异步执行任务，如模型处理等。Manyfold适合需要对大量3D打印相关数字资产进行集中管理的个人或团队使用，例如设计师、工程师以及3D打印爱好者。",2,"2026-06-11 03:16:01","top_language"]