Public template registry for 1DevTool Desktop.
The desktop app reads templates.json, loads preview images from previews/, and when a user selects an available template it downloads this repository, copies the configured template directory, and initializes a new git repository if Git is available on the machine.
Changes merged into main become available in the Templates gallery without a desktop app release. The app caches the manifest for about 5 minutes, so updates may not appear instantly in already-open sessions.
.
├── README.md
├── templates.json
├── previews/
│ └── <template-id>.(png|jpg|webp)
└── templates/
└── <template-id>/
- The manifest is fetched from
https://raw.githubusercontent.com/stoicsoft/1devtool-templates/main/templates.json. - Preview images are loaded from raw GitHub using the relative paths in each manifest entry.
status: "available"templates can be created by users.status: "coming-soon"templates are shown in the gallery but cannot be selected.- Only the folder referenced by
directoryis copied into the new project. directorymust resolve insidetemplates/; paths outside that tree are rejected by the app.
Top-level fields:
version: keep this at1.repo: keep this asstoicsoft/1devtool-templates.
Template entry fields:
| Field | Required | Notes |
|---|---|---|
id |
Yes | Stable unique slug. Use lowercase kebab-case. |
category |
Yes in practice | Technically optional for backward compatibility, but do not omit it in this repo. The app only infers a small legacy set when it is missing. |
name |
Yes | Display name in the gallery. |
description |
Yes | Short card description. |
preview |
Yes for single-image cards | Relative path like previews/my-template.jpg. |
previews |
Optional alternative | Array form for multiple screenshots. The first image is the cover image; extra images are shown as thumbnails/lightbox previews in the gallery. |
directory |
Yes | Relative path to the template source, usually templates/<id>. |
tags |
Yes | Used for search and filter chips. |
status |
Yes | Must be available or coming-soon. |
Single-preview entry:
{
"id": "landing-my-product",
"category": "landing",
"name": "Landing - My Product",
"description": "Marketing site for a developer product.",
"preview": "previews/landing-my-product.jpg",
"directory": "templates/landing-my-product",
"tags": ["next.js", "tailwind", "landing", "developer-tools"],
"status": "available"
}Multi-preview entry:
{
"id": "dashboard-my-product",
"category": "dashboard",
"name": "Dashboard - My Product",
"description": "Admin dashboard with analytics, tables, and settings.",
"previews": [
"previews/dashboard-my-product-1.jpg",
"previews/dashboard-my-product-2.jpg",
"previews/dashboard-my-product-3.jpg"
],
"directory": "templates/dashboard-my-product",
"tags": ["next.js", "tailwind", "dashboard", "analytics"],
"status": "available"
}Notes:
- The app accepts both legacy
previewand newerpreviews. - For consistency with the current repo, use
previewwhen you only have one image. - Preview paths are relative to the repo root, not to
templates.json.
- Pick a stable slug, usually matching the folder name and preview filename stem.
- Add the project under
templates/astemplates/<template-id>/. - Add one or more preview images under
previews/. - Add a manifest entry in
templates.json. - If the template needs post-create setup instructions, add
templates/<template-id>/README.md. - Open a pull request.
Recommended conventions:
- Keep
id, preview filename, and directory name aligned. - Use lowercase kebab-case for
idandcategory. - Include enough sample content that the template looks complete in screenshots and after clone.
- Do not commit secrets, API keys, or private credentials.
- Prefer templates that run out of the box or have one obvious setup step documented in the template's own README.
Before opening a PR, verify:
- The template folder exists at the exact
directorypath in the manifest. - Every preview path exists and is committed.
statusisavailableonly when the template is actually ready to clone and use.- The project boots or builds using the instructions you ship with it.
- The manifest JSON parses cleanly, for example with
jq empty templates.json.
To add a new category, just use a new category string in a template entry.
Example:
{
"id": "directory-creator-marketplace",
"category": "directory",
"name": "Directory - Creator Marketplace",
"description": "Searchable marketplace directory with listing pages and submission flow.",
"preview": "previews/directory-creator-marketplace.jpg",
"directory": "templates/directory-creator-marketplace",
"tags": ["next.js", "tailwind", "directory", "marketplace"],
"status": "available"
}Category behavior in the desktop app:
- Templates are grouped by the raw
categoryvalue. - Unknown category labels are auto-formatted from the slug.
- Example:
status-pagebecomesStatus Page. - You do not need an app change for most new categories.
Important:
- Always set
categoryexplicitly. If you omit it, the app only inferslanding,blog,desktop, andsaas; everything else can fall intoOther. - If you want a custom human label instead of the default title-cased slug, update
CATEGORY_LABELSin the desktop repo:
Current category slugs in this repo:
landingblogdocumentdirectoryadmin-paneldashboardstatus-pagechangelogsaasdesktop
Use available when the template directory is ready for real users.
Use coming-soon when you want a visible gallery card that is intentionally not selectable yet.
Behavior:
available: card is selectable and the app can clone it.coming-soon: card is visible with a badge and clone is disabled.
If a template requires follow-up edits after creation, put those instructions inside the template itself.
Examples already in this repo:
templates/1devtool-landing-template/README.mdtemplates/saas/README.mdtemplates/document-product-docs/README.mdtemplates/document-api-reference/README.mdtemplates/document-runbook/README.md
- Fork this repository.
- Create a branch for your template or manifest change.
- Add the template, preview assets, and manifest entry.
- Verify the manifest and test the template locally.
- Open a pull request.
After merge, the new template or category shows up in 1DevTool Desktop automatically once the manifest cache refreshes.