World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
Explore shader-made apparel you can customize yourself. Tweak the design, add text, and create a shirt that feels uniquely yours.
CommerceJavaScript · LiquidGitHub @onetwothreebutterOnlineOwner 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
Generative art apparel with real-time WebGL customization, built as a custom Shopify storefront.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A custom Shopify theme for Brightfield Studio — a generative art store selling wearable real-time shader designs.
Brightfield Studio sells GLSL shader T-shirts that customers can customize in-browser using live WebGL rendering. The key differentiator is real-time shader customization (color, intensity, and other per-product params) with a live on-shirt mockup preview — composited client-side — before ordering.Read the full README ↗A custom Shopify theme for Brightfield Studio — a generative art store selling wearable real-time shader designs.
Brightfield Studio sells GLSL shader T-shirts that customers can customize in-browser using live WebGL rendering. The key differentiator is real-time shader customization (color, intensity, and other per-product params) with a live on-shirt mockup preview — composited client-side — before ordering.
#version 300 es) rendered client-sideThe project has two parts:
sections/, assets/, layout/) — Shopify theme files served by Shopify CDNworker/) — Cloudflare Worker handling: design image hosting in R2, custom product creation, Printful order fulfillment (orders/paid webhook), community design gallery (submit / approve / like), product reviews, shader state sharing (save/restore share links), image share pages on share.brightfield.studio, a per-device recent-designs gallery, background removal (Cloudflare Images), an admin moderation UI, and storage GC.Key files:
| File | Purpose |
|---|---|
assets/rise-shirt.js | Product page dot-halftone shader |
assets/hero-shader.js | Homepage neon plasma shader |
sections/main-product.liquid | Product page with Customize tab + shader GUI |
sections/homepage-shader-demo.liquid | Homepage shader demo with controls and Share-link sharing |
sections/hero.liquid | Homepage hero with plasma canvas |
assets/theme.css | Main stylesheet (a few sections carry their own {% stylesheet %} blocks) |
worker/src/index.js | Cloudflare Worker — every endpoint (full feature list under Architecture above) |
shader-[filename] (e.g. shader-rise-shirt)window._shaderState.values: written by the inline GUI script, read by the deferred shader scriptThree share surfaces exist:
POST /save-shader-state and copies a short URL (#share=<id>) to the clipboard.POST /create-share; the Worker stores both and returns an absolute share-page URL (https://share.brightfield.studio/<id>), which is what gets copied. That page carries the design image in its Open Graph/Twitter meta tags (so link previews show it) and immediately redirects the visitor to the product with a ?bfr=<base64-state>#shader URL that restores the design. (The redirect is client-side JS — the HTTP response is a plain 200 page, which is what lets crawlers read the meta tags; a no-JS visitor gets a manual link instead.)https://share.brightfield.studio/<id> URL form for approved submissions. For those ids the share page serves metadata from community/submissions/ and redirects to the product (or the community page) without a ?bfr= restore payload — the restore link is a direct-share feature.Both pages still restore #share= URLs. When one is loaded:
GET /get-shader-state/<id> on the Worker#shader (product) or #shader-demo (homepage)(A legacy #s=<base64> inline-state format is also still restored on both pages.)
Worker endpoints:
POST /save-shader-state — accepts { state: {...} }, stores in R2, returns { id } (UUID)GET /get-shader-state/:id — returns the stored state JSONPOST /create-share — accepts { image, shader, productHandle, values }, stores the JPEG + metadata in R2, returns { id, url }GET https://share.brightfield.studio/<id> — the share page itself (a hostname catch-all: a GET on that host not matching an earlier route treats the path as the id. Routes registered before it — /img/*, /get-shader-state/*, /list-designs, the community/review list GETs — still win there, which matters since design images themselves are served from that host; ones registered after it — /share/:id, /admin-ui, /admin/gc-dry-run — are swallowed as share ids on that host, so they work on the workers.dev domain only. GET /share/:id there serves the same share page.)shader-[shader-file-name] so it will load your shader defined in assets/[shader-file-name].jsmain — that deploys the theme automatically (see Deployment below; npm run push is only for the rare manual push)For a shader that doesn't exist yet, first follow "Adding a new shader" in CLAUDE.md: besides the JS file, a new shader needs a snippets/shader-controls-[name].liquid snippet, a {% when %} branch in sections/main-product.liquid's case block (an unlisted tag falls back to rise-shirt's controls), a npm run build:shader-defs run, and an entry in test-shaders.html's #shader-picker list — the one step no test fails on when it's forgotten.
# 1. Install git hooks
scripts/install-hooks.sh
# 2. Run theme dev server (picks a free port, 9292 preferred)
npm run dev
# Local preview: the URL the CLI prints (http://127.0.0.1:9292 when free)
# 3. Run Worker locally (if editing the worker)
cd worker && npm run dev
# Local Worker: http://127.0.0.1:8787
main: git checkout -b feat/... or fix/...main (enforced by .githooks/pre-push)gh pr createMerging to main deploys automatically via GitHub Actions (.github/workflows/test.yml): after tests pass, the theme is pushed to Shopify and the Worker is deployed with Wrangler. Verify locally (npm run dev) before merging.
# Manual pushes, if ever needed:
npm run push # theme
cd worker && npm run deploy # worker