尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Design badges and certificates with shapes, fonts, patterns and images, version them, and issue them with expiring claim links
翻译准备中
正在加载完整 README。
查看完整 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