Open templates — a marketplace of resumes.
temploracraft is opening a public repo for community-designed resume templates. Design in the canvas, publish via GitHub, land in the gallery on the next redeploy.
Why open
Every resume tool ends up with the same trade-off: keep the templates in-house and they stay consistent but boring, or open them up and lose control of quality. Most tools pick the first, so the good layouts sit behind a paywall and the free tier looks like a Google Docs starter.
temploracraft picks the second, but leans on GitHub as the marketplace. Every template is a JSON file in a public repo (vineethpawar/temploracraft-templates), MIT-licensed, attributed to its author. If you want to fork one, tweak the accent color, and ship your own version — that's the whole point.
The loop
- Open the canvas author tool. It's public. No signin to design.
- Drop Text, Placeholder, and Section nodes onto an 816×1056 US-Letter page. Placeholders like
{{firstName}}bind to fields on the app's canonical ResumeData type — pick from Google Fonts, tune typography, group things into Sections. - Sections with a Repeats over value (like
experience) become Repeaters on export — they render once per item in the bound array. - Hit Publish. Sign in with GitHub. The app forks the templates repo, commits
template.json+README.md+preview.png, and opens the PR from your GitHub account. - CI schema-validates. A maintainer reviews + merges. Your template appears in the gallery on the next redeploy.
What's inside a template.json
Every template is a tree of nodes rendered onto a fixed-size page. Two consumers of the same file: the browser preview (React) and the PDF exporter (@react-pdf/renderer). Same schema, same output.
{
"version": 1,
"domain": "resume",
"slug": "modern",
"name": "Modern",
"author": { "name": "Vineeth Pawar", "githubUsername": "vineethpawar" },
"license": "MIT",
"page": { "width": 816, "height": 1056 },
"fonts": [ ... ],
"root": {
"type": "section",
"layout": "absolute",
"children": [
{ "type": "placeholder-text", "bind": "fullName", "style": {…} },
{ "type": "repeater", "bind": "experience", "template": {…} }
]
}
}Full type definitions in the marketplace repo. TypeScript + Zod, so the same schema validates PRs in CI and gates the runtime loader.
What ships today
- Author canvas at
/author/resume/new— Konva, undo/redo, layer tree, properties panel, add-menu, drag-to-move, keyboard shortcuts (⌘Z, ⌘D, Del). - 12 fonts — Inter, Manrope, Playfair Display, IBM Plex Sans/Serif, Merriweather, Poppins, Lora, Space Grotesk, DM Serif Display, JetBrains Mono, plus system Helvetica + Georgia.
- Publish — Clerk GitHub OAuth for one-click PR; fallbacks for anyone who prefers manual (GitHub file editor, or a plain download).
- Marketplace at temploracraft.com/templates with per-template detail pages, live thumbnails from
raw.githubusercontent.com, and a "Fork in the canvas" button. - ATS-friendly PDF export. Same TemplateDoc drives the preview + the vector PDF via @react-pdf/renderer. Text stays selectable.
What's coming
- Paid templates (phase 2) — Stripe Connect for revenue share to authors. The
authorfield already carries the attribution. - Wedding, birthday, portfolio — same canvas, different data schema. The
domainfield onTemplateDocis the switch. - Hosted portfolios at
yourname.temploracraft.com— the "portfolio" domain outputs a hosted subdomain instead of a PDF.
Ship something
If you've got 20 minutes and an opinion about how a résumé should look, the canvas is right here. Every merged template ships with your GitHub handle attached.