{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://api.vp0.com/schema/vp0-bundle.v1.json","title":"VP0 Design Bundle","description":"A VP0 iOS app-design bundle. Top level mirrors a shadcn registry-item so shadcn/MCP-aware tools can ingest it; VP0 specifics live under `meta` (reverse-DNS keys). React Native is the default target; SwiftUI optional.","type":"object","required":["schemaVersion","id","name","title","type","version","files"],"properties":{"$schema":{"type":"string","format":"uri"},"schemaVersion":{"const":"vp0-bundle.v1"},"id":{"type":"string","description":"vp0.<slug>"},"name":{"type":"string","description":"Machine/display name (legacy = human name)."},"title":{"type":"string","description":"Human title."},"slug":{"type":"string"},"type":{"type":"string","description":"shadcn registry-item type.","examples":["registry:block","registry:component"]},"version":{"type":"string","description":"semver"},"author":{"type":["string","null"]},"description":{"type":["string","null"]},"platform":{"const":"ios"},"kind":{"type":["string","null"],"enum":["app_template","screen","component",null]},"contentType":{"type":"string","enum":["component","demo","template"]},"categories":{"type":"array","items":{"type":"string"}},"styleTags":{"type":"array","items":{"type":"string"}},"category":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"availableLanguages":{"type":"array","items":{"type":"string"}},"defaultLanguage":{"type":"string"},"targets":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","examples":["react-native","swiftui"]},"entrypoint":{"type":"string"}}}},"assets":{"type":"array","items":{"type":"object","required":["kind","url"],"properties":{"kind":{"type":"string","examples":["screenshot","cover","video","icon"]},"url":{"type":"string","format":"uri"},"width":{"type":"integer"},"height":{"type":"integer"},"alt":{"type":"string"},"lqip":{"type":"string","description":"ThumbHash (base64) blur-up placeholder."},"variants":{"type":"object","description":"Derived files. Image: {webp,avif,thumb,card,full}. Video: {webm,mp4,poster}.","additionalProperties":{"type":"string","format":"uri"}}}}},"files":{"type":"array","items":{"type":"object","required":["path","type","content"],"properties":{"language":{"type":"string","examples":["react-native","swiftui"]},"path":{"type":"string"},"type":{"type":"string"},"target":{"type":"string"},"rawUrl":{"type":"string","format":"uri"},"content":{"type":"string"}}}},"dependencies":{"type":"object","additionalProperties":{"type":"string"}},"devDependencies":{"type":"object","additionalProperties":{"type":"string"}},"registryDependencies":{"type":"array","items":{"type":"string","format":"uri"}},"componentsUsed":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"sourcePath":{"type":"string"},"registryDependency":{"type":"string"},"label":{"type":["string","null"]},"relationshipType":{"type":"string"},"curated":{"type":"boolean"}}}},"license":{"type":["string","null"]},"docs":{"type":"string"},"notes":{"type":"string"},"installCommand":{"type":["string","null"]},"installHints":{"type":"object","properties":{"defaultTarget":{"type":"string"},"mcp":{"type":"string"},"shadcn":{"type":"string"},"cli":{"type":"string"},"openInV0":{"type":"string"}}},"sourceToken":{"type":["string","null"]},"sourceHash":{"type":"string"},"importUrl":{"type":"string","format":"uri"},"manifestUrl":{"type":"string","format":"uri"},"aiInstructions":{"type":"string"},"promptText":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"meta":{"type":"object","description":"Reverse-DNS namespaced VP0 vendor extensions (com.vp0.*).","additionalProperties":true,"properties":{"com.vp0.simulator":{"type":"object","description":"Live in-browser simulator contract. React Native only (SwiftUI is never simulatable in a browser). Shown on the app detail page, never the feed.","properties":{"target":{"const":"react-native"},"entrypoint":{"type":["string","null"]},"simulatable":{"type":"boolean"},"buildStatus":{"type":["string","null"],"enum":["ready","pending","error",null]},"embedUrl":{"type":["string","null"],"format":"uri"},"provider":{"type":["string","null"]}}}}}}}