Generate apps.json for World Vibe Web
Create a valid apps.json file for publishing apps on wvw.dev — the distributed app store for vibe-coded projects.
Schema
The file must follow the Appétit schema. Add "$schema": "https://wvw.dev/apps.schema.json" for editor validation.
Top-level structure
{
"$schema": "https://wvw.dev/apps.schema.json",
"store": { ... },
"categories": [ ... ],
"apps": [ ... ]
}
Store (required)
"store": {
"name": "Store Name",
"developer": "Your Name",
"tagline": "A short tagline.",
"url": "https://your-site.com",
"github": "https://github.com/yourname"
}
name (required): Store display name
developer (required): Default developer name for all apps
tagline: Short tagline
url: Store website
github: GitHub profile or org URL
Categories
Use ONLY these allowed category IDs. Apps with unrecognized categories will be stripped by WVW:
macos, ios, android, web, cli, developer-tools, productivity, utilities, education, entertainment, games, music, photo-video, graphics-design, social-networking, finance, health-fitness, lifestyle, news, business, reference, travel, food-drink, navigation, sports, weather, shopping, books, medical
"categories": [
{ "id": "cli", "name": "CLI Apps" },
{ "id": "web", "name": "Web Apps" }
]
Apps (required)
Each app entry:
{
"id": "my-tool",
"name": "My Tool",
"subtitle": "A catchy tagline under 50 chars",
"description": "One-liner for list views and search.",
"longDescription": "Full description for the detail page.",
"icon": "https://raw.githubusercontent.com/user/repo/main/icon.png",
"iconEmoji": "🔧",
"iconStyle": { "scale": 1.3, "objectFit": "cover", "borderRadius": "22%" },
"category": ["cli", "developer-tools"],
"platform": "Node.js",
"price": "Free",
"github": "https://github.com/user/repo",
"homepage": "https://my-tool.dev",
"language": "TypeScript",
"stars": 0,
"forks": 0,
"brew": "brew install user/tap/my-tool",
"installCommand": "npx my-tool",
"downloadUrl": "https://github.com/user/repo/releases/latest",
"requirements": "Node.js 20+",
"features": ["Feature one", "Feature two"],
"screenshots": ["https://raw.githubusercontent.com/user/repo/main/screenshot.png"]
}
Required fields
id: Unique, lowercase kebab-case. Used in URLs and deduplication.
name: Display name
subtitle: Short tagline for list rows. Keep under 50 chars, no trailing period.
description: One-liner for search and cards
category: Array of allowed category IDs. Use 2-3 categories.
platform: "macOS", "Web", "Node.js", "CLI", "Python", etc.
price: "Free" or a price string like "$9.99"
github: Full GitHub URL
Optional but recommended
longDescription: Full description for the detail page
icon: URL to PNG/SVG icon. Use raw.githubusercontent.com for GitHub-hosted icons.
iconEmoji: Fallback emoji when icon is null
iconStyle: Object with scale, objectFit, objectPosition, borderRadius, bgColor, padding
language: Primary programming language
features: Array of feature strings
screenshots: Array of image/video URLs
brew: Homebrew install command (triggers install modal)
installCommand: Alternative install command like npx my-tool
downloadUrl: Direct download link (shown as secondary button)
requirements: System requirements string
Icon Styling Guide
Common patterns:
// macOS app icon (Xcode .appiconset PNG with padding)
"iconStyle": { "scale": 1.3, "objectFit": "cover", "borderRadius": "22%" }
// SVG logo on dark background
"iconStyle": { "objectFit": "contain", "bgColor": "#000000" }
// Wide logo that needs padding
"iconStyle": { "scale": 0.9, "objectFit": "contain", "bgColor": "#000", "padding": "18%" }
Workflow
- Ask the user for their GitHub repos or app details
- If they provide a GitHub username/org, fetch their repos to discover apps
- Generate the
apps.json with proper store metadata, categories, and app entries
- For each app:
- Use the repo description as
description
- Write a compelling
subtitle (App Store editorial voice, under 50 chars, no period)
- Detect the primary language from the repo
- Check if the repo has a
brew formula, npx command, or releases
- Look for icon files in the repo (check
Assets.xcassets, public/, docs/, root)
- Look for screenshots in
docs/, screenshots/, or README images
- Pick 2-3 fitting categories from the allowed list
- Validate the output is valid JSON matching the schema
- Tell the user to:
- Commit the
apps.json to their repo
- Open a PR to
f/wvw.dev adding their repo to stores.json
- Or use the WVW apps.json Generator web tool
Important rules
- Stars and forks values are overwritten by WVW's build — don't worry about accuracy
- The
featured array is ignored by WVW — don't include it
- App
id must be globally unique across all stores
- All icon/screenshot URLs must be publicly accessible
- Always output valid JSON
1---2name: wvw-apps-json3description: Generate an apps.json file for publishing apps on World Vibe Web (wvw.dev). Use when the user wants to create, generate, or update an apps.json for listing their apps on wvw.dev, or asks about the Appétit format, WVW distribution, or how to publish vibe-coded apps.4---56# Generate apps.json for World Vibe Web78Create a valid `apps.json` file for publishing apps on [wvw.dev](https://wvw.dev) — the distributed app store for vibe-coded projects.910## Schema1112The file must follow the Appétit schema. Add `"$schema": "https://wvw.dev/apps.schema.json"` for editor validation.1314### Top-level structure1516```json17{18 "$schema": "https://wvw.dev/apps.schema.json",19 "store": { ... },20 "categories": [ ... ],21 "apps": [ ... ]22}23```2425### Store (required)2627```json28"store": {29 "name": "Store Name",30 "developer": "Your Name",31 "tagline": "A short tagline.",32 "url": "https://your-site.com",33 "github": "https://github.com/yourname"34}35```3637- `name` (required): Store display name38- `developer` (required): Default developer name for all apps39- `tagline`: Short tagline40- `url`: Store website41- `github`: GitHub profile or org URL4243### Categories4445Use ONLY these allowed category IDs. Apps with unrecognized categories will be stripped by WVW:4647`macos`, `ios`, `android`, `web`, `cli`, `developer-tools`, `productivity`, `utilities`, `education`, `entertainment`, `games`, `music`, `photo-video`, `graphics-design`, `social-networking`, `finance`, `health-fitness`, `lifestyle`, `news`, `business`, `reference`, `travel`, `food-drink`, `navigation`, `sports`, `weather`, `shopping`, `books`, `medical`4849```json50"categories": [51 { "id": "cli", "name": "CLI Apps" },52 { "id": "web", "name": "Web Apps" }53]54```5556### Apps (required)5758Each app entry:5960```json61{62 "id": "my-tool",63 "name": "My Tool",64 "subtitle": "A catchy tagline under 50 chars",65 "description": "One-liner for list views and search.",66 "longDescription": "Full description for the detail page.",67 "icon": "https://raw.githubusercontent.com/user/repo/main/icon.png",68 "iconEmoji": "🔧",69 "iconStyle": { "scale": 1.3, "objectFit": "cover", "borderRadius": "22%" },70 "category": ["cli", "developer-tools"],71 "platform": "Node.js",72 "price": "Free",73 "github": "https://github.com/user/repo",74 "homepage": "https://my-tool.dev",75 "language": "TypeScript",76 "stars": 0,77 "forks": 0,78 "brew": "brew install user/tap/my-tool",79 "installCommand": "npx my-tool",80 "downloadUrl": "https://github.com/user/repo/releases/latest",81 "requirements": "Node.js 20+",82 "features": ["Feature one", "Feature two"],83 "screenshots": ["https://raw.githubusercontent.com/user/repo/main/screenshot.png"]84}85```8687#### Required fields88- `id`: Unique, lowercase kebab-case. Used in URLs and deduplication.89- `name`: Display name90- `subtitle`: Short tagline for list rows. Keep under 50 chars, no trailing period.91- `description`: One-liner for search and cards92- `category`: Array of allowed category IDs. Use 2-3 categories.93- `platform`: `"macOS"`, `"Web"`, `"Node.js"`, `"CLI"`, `"Python"`, etc.94- `price`: `"Free"` or a price string like `"$9.99"`95- `github`: Full GitHub URL9697#### Optional but recommended98- `longDescription`: Full description for the detail page99- `icon`: URL to PNG/SVG icon. Use raw.githubusercontent.com for GitHub-hosted icons.100- `iconEmoji`: Fallback emoji when icon is null101- `iconStyle`: Object with `scale`, `objectFit`, `objectPosition`, `borderRadius`, `bgColor`, `padding`102- `language`: Primary programming language103- `features`: Array of feature strings104- `screenshots`: Array of image/video URLs105- `brew`: Homebrew install command (triggers install modal)106- `installCommand`: Alternative install command like `npx my-tool`107- `downloadUrl`: Direct download link (shown as secondary button)108- `requirements`: System requirements string109110## Icon Styling Guide111112Common patterns:113114```jsonc115// macOS app icon (Xcode .appiconset PNG with padding)116"iconStyle": { "scale": 1.3, "objectFit": "cover", "borderRadius": "22%" }117118// SVG logo on dark background119"iconStyle": { "objectFit": "contain", "bgColor": "#000000" }120121// Wide logo that needs padding122"iconStyle": { "scale": 0.9, "objectFit": "contain", "bgColor": "#000", "padding": "18%" }123```124125## Workflow1261271. Ask the user for their GitHub repos or app details1282. If they provide a GitHub username/org, fetch their repos to discover apps1293. Generate the `apps.json` with proper store metadata, categories, and app entries1304. For each app:131 - Use the repo description as `description`132 - Write a compelling `subtitle` (App Store editorial voice, under 50 chars, no period)133 - Detect the primary language from the repo134 - Check if the repo has a `brew` formula, `npx` command, or releases135 - Look for icon files in the repo (check `Assets.xcassets`, `public/`, `docs/`, root)136 - Look for screenshots in `docs/`, `screenshots/`, or README images137 - Pick 2-3 fitting categories from the allowed list1385. Validate the output is valid JSON matching the schema1396. Tell the user to:140 - Commit the `apps.json` to their repo141 - Open a PR to `f/wvw.dev` adding their repo to `stores.json`142 - Or use the [WVW apps.json Generator](https://findutils.com/en/tools/wvw-apps-json-generator/) web tool143144## Important rules145146- Stars and forks values are **overwritten** by WVW's build — don't worry about accuracy147- The `featured` array is **ignored** by WVW — don't include it148- App `id` must be globally unique across all stores149- All icon/screenshot URLs must be publicly accessible150- Always output valid JSON