name: wvw-apps-json description: >- 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. metadata: author: f version: 1.0.0 tags: wvw, app-store, apps-json, appetit
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 namedeveloper(required): Default developer name for all appstagline: Short taglineurl: Store websitegithub: 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 namesubtitle: Short tagline for list rows. Keep under 50 chars, no trailing period.description: One-liner for search and cardscategory: 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 pageicon: URL to PNG/SVG icon. Use raw.githubusercontent.com for GitHub-hosted icons.iconEmoji: Fallback emoji when icon is nulliconStyle: Object withscale,objectFit,objectPosition,borderRadius,bgColor,paddinglanguage: Primary programming languagefeatures: Array of feature stringsscreenshots: Array of image/video URLsbrew: Homebrew install command (triggers install modal)installCommand: Alternative install command likenpx my-tooldownloadUrl: 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.jsonwith 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
brewformula,npxcommand, 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
- Use the repo description as
- Validate the output is valid JSON matching the schema
- Tell the user to:
- Commit the
apps.jsonto their repo - Open a PR to
f/wvw.devadding their repo tostores.json - Or use the WVW apps.json Generator web tool
- Commit the
Important rules
- Stars and forks values are overwritten by WVW's build — don't worry about accuracy
- The
featuredarray is ignored by WVW — don't include it - App
idmust be globally unique across all stores - All icon/screenshot URLs must be publicly accessible
- Always output valid JSON