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.
Pick an object, add a style and colours, and render a design concept made with 3D printing in mind. Keep the ones you like and turn them into an STL.
DesignHTML · JavaScriptGitHub @jrb23455OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Design generator for 3D printing. Pick an object (123 across home goods, figurines, spiritual, jewelry and geometry), layer on a style, and render it in the cloud with Flux. Turn a render into a printable STL with Tripo. Live at podder.dev.
The app is a single static page plus a handful of serverless functions. No build step, no npm dependencies.
index.html the whole app (UI + prompt engine)
brochure.html the public design book (/brochure), data in brochure/
terms.html /terms privacy.html /privacy
api/generate.js renders (Replicate Flux), debit first, refund on failure
api/model3d.js image -> STL (Tripo); tasks tied to the account that paid
api/checkout.js Stripe checkout api/claim.js + api/stripe-webhook.js fulfil purchases
api/me.js balance + ledger; also settles failed 3D jobs
api/config.js public client config (Supabase URL + anon key, prices)
api/account.js DELETE: user deletes their own account
api/auth.js owner PIN check (per-IP lockout after 10 wrong tries an hour)
api/admin/grant.js owner: grant or remove credits by email
api/brochure.js owner edits to the design book
supabase/migrations schema; apply in order
scripts/preflight.mjs runs as Vercel's build step and blocks a broken catalog
| Variable | What |
|---|---|
SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY | accounts and credits |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET | payments |
REPLICATE_API_TOKEN | renders (without it, renders are free labeled mocks) |
TRIPO_API_KEY | 3D models (the button only appears when set) |
RENDER_REVIEW_KEY | Anthropic API key for "Report bad render" (the button stays hidden without it) |
ALERT_WEBHOOK_URL | optional Discord/Slack webhook for error alerts |
PODDER_PIN | owner access: unlimited, unbilled. Use a long random value. |
PUBLIC_ORIGIN | optional, e.g. https://www.podder.dev, for Stripe return URLs |
Prices, packs and the signup bonus live in api/_lib/config.js; the bonus amounts themselves are granted by the database triggers (see the migrations).
node dev-server.mjs
Opens http://localhost:8299. Renders are mocks unless REPLICATE_API_TOKEN is set.
Rendered images, favorites and history live in the browser (IndexedDB + localStorage), not on the server. Saved STLs are remembered by Tripo task id and re-fetched on demand, since Tripo's file links expire.