Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A free, in-browser converter for multicolour 3D-print files. Nothing is uploaded unless you ask for it.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A free, in-browser converter for multicolour 3D-print files. It re-targets a .3mf from one
slicer's printer to another's, keeps the painted colours, and hands you a file the target slicer
opens without complaint.
Live at bedready.io. No account, no sign-up, no paywall.
This is the claim the project leads with, so it is worth stating exactly rather than warmly.查看完整 README ↗A free, in-browser converter for multicolour 3D-print files. It re-targets a .3mf from one
slicer's printer to another's, keeps the painted colours, and hands you a file the target slicer
opens without complaint.
Live at bedready.io. No account, no sign-up, no paywall.
This is the claim the project leads with, so it is worth stating exactly rather than warmly.
By default, your model never leaves the browser. Conversion runs in a Web Worker on your own
machine: the file is read, parsed, re-targeted and re-packaged locally, and the result is handed
straight to a download. There is no upload step, and this repository is public so that claim is
checkable rather than merely asserted — the conversion path is src/lib/convert.ts, driven by
src/lib/convert-client.ts and its worker.
There is one exception, and it is opt-in. Some files defeat the in-browser parser. For those,
/convert offers a server-side fallback behind an explicit button. Choosing it uploads that file,
converts it in memory, returns the result and stores nothing. It is never the default and it never
runs unless you press it. See serverConvert() in the /convert page.
So the honest form of the claim is "nothing is uploaded unless you ask for it", not "the code cannot upload". If you would rather it could not, the fallback is one button and one call site.
Five small anonymous endpoints, all listed in src/lib/convert-api.ts — the only file in the
repository that reaches a server:
| Endpoint | What it is |
|---|---|
/api/convert-count | the "N files converted" number. Decorative. |
/api/report-conversion | opt-in: "this came out wrong, take my file" |
/api/convert | the opt-in server fallback described above |
/api/waitlist | the notify-me box on the capture panel |
/api/v1/sponsor | who is sponsoring the site right now, if anyone. Read-only and cacheable |
/api/v1/designs | after a conversion: MakerRun files already verified for the printer you converted for. Read-only |
None require an account. There is no database client, no authentication and no Supabase
dependency anywhere in this repository — src/lib/convert-backend-free.test.mts fails the build
if one is reintroduced.
M600 swap pauses and band swaps/image, and a filament mixer at /mixer/orca-filaments, installable into your slicernpm install
npm run dev
Then open http://localhost:3000 — it redirects to /convert, which is the front page.
npm test # unit tests
npm run test:e2e # Playwright, against a production build
npm run build # production build — needs no credentials at all
Everything is optional. With no environment set, the app runs standalone and the four endpoints above resolve same-origin.
| Variable | Default | Purpose |
|---|---|---|
NEXT_PUBLIC_CONVERT_API_ORIGIN | same-origin | where the four endpoints live |
NEXT_PUBLIC_CONVERTER_ORIGIN | https://bedready.io | canonical URLs for this site |
NEXT_PUBLIC_LIBRARY_ORIGIN | https://makerrun.com | where library links point |
If you set NEXT_PUBLIC_CONVERT_API_ORIGIN, the Content-Security-Policy names it automatically
(next.config.mjs). That is deliberate: a policy that does not name the API origin refuses those
calls in the browser, with nothing server-side to show for it.
src/app/[locale]/(converter)/ the pages — /convert, /image, /mixer, /guides, …
src/lib/convert.ts the engine: parse, re-target, repackage
src/lib/convert-client.ts worker plumbing
src/lib/convert-api.ts the only seam to a server
src/lib/origin.ts which host owns which path
messages/ seven locales
e2e/ Playwright, asserting on real generated files
The route group (converter) is not decoration — it is what lets the layout mount a shell with no
account controls and no database client.
Many of the tests here assert on files this app produces, not on the code that produces them —
that a generated .3mf is a package a slicer will actually open, that a download's colours match
what the page displayed, that an extracted plate lands on the bed. The E2E suite runs against a
production build for the same reason: development-mode hydration differs enough that a page can
render with no handlers attached.
There is also a lib3mf validation step in the upstream project's CI, using the 3MF Consortium's
own reference implementation as an independent opinion — because every other structural check in
this repository is one we wrote ourselves.
BedReady used to be a converter and a design library. The library — published designs, verified print profiles, creator accounts — is now MakerRun, and it is a separate, closed-source project. That split is why this repository has no database.
Links from here to the library are ordinary cross-site links. Nothing here reads or writes MakerRun's data.
Issues and pull requests are welcome. Two things worth knowing before you open one:
convert-api.ts, is a change to what this project is — worth
discussing in an issue first. The guard test will tell you before CI does.MIT — see LICENSE.