psd2live
Turn layered PSDs into editable Live2D models — automatic rigging, mesh/deformer generation, physics, animation, and .cmo3/ .moc3 export.
Design it, version it, publish it, hand it out with a link that expires
DesignJavaScript · CSSGitHub @energon-a-secasOnlineOwner 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
Design badges and certificates with shapes, fonts, patterns and images, version them, and issue them with expiring claim links
Loading the full README.
Read the full README ↗Design a badge or a certificate from a preset, save versions, publish it, and hand it out with claim links that expire
Enamel is the studio half of Sash. You pick one of 60 finished designs, change the words, and you have something worth handing out in about half a minute. Then you publish it and mint a claim link with an expiry and a seat limit, and the people who follow that link hold the badge in their own wallet on sash.neorgon.com.
Everything it makes is a parody credential, and it says so on the artefact itself. The renderer draws a provenance strip into every badge and certificate, in the editor as well as on the export, carrying the origin, the issuing handle and the address a reader can check the credential at. There is no way to switch it off, which is the point.
Live: enamel.neorgon.com
ES modules require an HTTP server (not file://):
make serve # http://localhost:8885
make test # Preset, typography and local-library regression checks
make test-browser # Live studio flows, using the monorepo's Playwright install
There is nothing else to start. Every page names the Convex deployment in a
<meta name="neo-convex-url">, and that deployment belongs to
projects/sash-site/convex/, so a read of a published template works from the
first load.
Browser checks also support BROWSER=firefox or BROWSER=webkit,
STUDIO_URL, ARTIFACT_DIR, and a PLAYWRIGHT_MODULE module path when run
outside the monorepo. Screenshots, PNG/SVG downloads and a sample PDF are
written to /tmp/enamel-studio-checks by default.
Sign-in is the Neorgon Auth Kit, and it does not work on localhost. The
site carries the fleet's production Clerk key, and Clerk refuses a production
key on any origin that is not neorgon.com. The kit settles signed out, so the
editor, the presets, the warnings, the downloads, the public catalogue and every
read of a published template work; anything that writes needs the deployed site.
There is no convex/ folder here. Enamel points a ConvexHttpClient at the
deployment projects/sash-site/convex/ owns and calls the same functions. The
URL is a <meta name="neo-convex-url"> on every page, so the two sites cannot
quietly disagree about it.
enamel-site/
├── index.html # The studio: editor, preview, presets, downloads, publish
├── templates.html # The library, the public catalogue, admin open by id
├── links.html # Claim links and the issuer dashboard
├── 404.html
├── css/
│ ├── style.css # Site styles. Tokens come from the CDN base.css
│ ├── frame.css # Takes a framed page out of view
│ └── neorgon-*.css # Header, footer, beacon, auth and insignia kits, vendored
├── js/
│ ├── app.js # Entry point, one controller per page
│ ├── state.js # The working design, one per kind, and the session
│ ├── fields.js # The editor declared as paths into the design document
│ ├── editor.js # Those fields as controls, and one delegated listener
│ ├── preview.js # The kit draws; this appends what it returns
│ ├── warnings.js # The arc and contrast measurements
│ ├── exporting.js # The PNG and SVG download controls
│ ├── studio.js # index.html
│ ├── library.js # templates.html
│ ├── catalogue.js # The public catalogue on templates.html
│ ├── links.js # links.html
│ ├── art.js # Shrink, upload, attach
│ ├── api.js # The one place this site talks to Convex
│ ├── auth.js # Listens to the Auth Kit for the session
│ ├── frame.js # The notice a framed page shows instead
│ ├── render.js # Shared DOM pieces
│ ├── events.js # The modal shell
│ ├── utils.js # Shared helpers
│ ├── convex.js # Client and function map, shared with Sash
│ ├── insignia/ # The Insignia Kit, vendored. Never edited here
│ └── neorgon-*.js # Header, footer, beacon, DOM and Auth kits, vendored
├── docs/
│ ├── architecture.svg
│ └── shape-catalogue-rules.md
├── favicon.ico # Generated from the hub card, with the rest of the set
├── robots.txt
├── sitemap.xml
├── CNAME
├── Makefile
├── PRODUCT.md
└── README.md