{
  "id": "web-app-saas-starter",
  "schemaVersion": 1,
  "title": "Web App / SaaS Starter",
  "summary": "Product, API, database, billing, and operations starters for a hosted app.",
  "sourceFolderName": "Web App SaaS Starter",
  "createdAt": "2026-06-22T00:00:00Z",
  "items": [
    {
      "kind": "folder",
      "relativePath": "src",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "folder",
      "relativePath": "public",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "folder",
      "relativePath": "docs",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "folder",
      "relativePath": "ops",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "folder",
      "relativePath": "db",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "folder",
      "relativePath": "db/migrations",
      "fileTypeID": null,
      "data": null
    },
    {
      "kind": "file",
      "relativePath": "README.md",
      "fileTypeID": "md",
      "data": "IyB7e2FwcF9uYW1lfX0KCiMjIExvY2FsIFNldHVwCgoxLiBJbnN0YWxsIGRlcGVuZGVuY2llcy4KMi4gQ29weSBgLmVudi5leGFtcGxlYCB0byBgLmVudmAuCjMuIFJ1biBgbnBtIHJ1biBkZXZgLgoKIyMgU2NyaXB0cwoKLSBgbnBtIHJ1biBkZXZgOiBzdGFydCBsb2NhbCBkZXZlbG9wbWVudAotIGBucG0gcnVuIGJ1aWxkYDogYnVpbGQgcHJvZHVjdGlvbiBhc3NldHMKLSBgbnBtIHRlc3RgOiBydW4gdGVzdHMKCiMjIERlcGxveW1lbnQKCkRvY3VtZW50IHRoZSBob3N0aW5nIHByb3ZpZGVyLCByZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCByb2xsYmFjayBwYXRoLgoK"
    },
    {
      "kind": "file",
      "relativePath": "package.json",
      "fileTypeID": "json",
      "data": "ewogICJuYW1lIjogInNhYXMtc3RhcnRlciIsCiAgInZlcnNpb24iOiAiMC4xLjAiLAogICJwcml2YXRlIjogdHJ1ZSwKICAidHlwZSI6ICJtb2R1bGUiLAogICJzY3JpcHRzIjogewogICAgImRldiI6ICJub2RlIHNyYy9zZXJ2ZXIuanMiLAogICAgImJ1aWxkIjogIm5vZGUgLS1jaGVjayBzcmMvc2VydmVyLmpzIiwKICAgICJ0ZXN0IjogIm5vZGUgLS10ZXN0IiwKICAgICJzdGFydCI6ICJub2RlIHNyYy9zZXJ2ZXIuanMiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjoge30sCiAgImRldkRlcGVuZGVuY2llcyI6IHt9Cn0K"
    },
    {
      "kind": "file",
      "relativePath": ".env.example",
      "fileTypeID": null,
      "data": "QVBQX1VSTD1odHRwOi8vbG9jYWxob3N0OjMwMDAKREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vdXNlcjpwYXNzd29yZEBsb2NhbGhvc3Q6NTQzMi9hcHAKQVVUSF9TRUNSRVQ9Q0hBTkdFX01FX0xPQ0FMX09OTFkKQklMTElOR19XRUJIT09LX1NFQ1JFVD1DSEFOR0VfTUVfTE9DQUxfT05MWQo="
    },
    {
      "kind": "file",
      "relativePath": "docs/prd.md",
      "fileTypeID": "md",
      "data": "IyBQcm9kdWN0IFJlcXVpcmVtZW50cwoKIyMgUHJvYmxlbQoKIyMgVGFyZ2V0IFVzZXJzCgojIyBHb2FscwoKIyMgTm9uLUdvYWxzCgojIyBNVlAgU2NvcGUKCiMjIFJpc2tzCgojIyBTdWNjZXNzIE1ldHJpY3MKCg=="
    },
    {
      "kind": "file",
      "relativePath": "docs/api.openapi.yaml",
      "fileTypeID": "yaml",
      "data": "b3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQXBwIEFQSQogIHZlcnNpb246IDAuMS4wCnBhdGhzOgogIC9oZWFsdGg6CiAgICBnZXQ6CiAgICAgIHN1bW1hcnk6IEhlYWx0aCBjaGVjawogICAgICByZXNwb25zZXM6CiAgICAgICAgJzIwMCc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogU2VydmljZSBpcyBoZWFsdGh5CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgb2s6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogYm9vbGVhbgpjb21wb25lbnRzOgogIHNlY3VyaXR5U2NoZW1lczoKICAgIGJlYXJlckF1dGg6CiAgICAgIHR5cGU6IGh0dHAKICAgICAgc2NoZW1lOiBiZWFyZXIK"
    },
    {
      "kind": "file",
      "relativePath": "db/schema.sql",
      "fileTypeID": null,
      "data": "Q1JFQVRFIFRBQkxFIGFjY291bnRzICgKICBpZCBURVhUIFBSSU1BUlkgS0VZLAogIG5hbWUgVEVYVCBOT1QgTlVMTCwKICBjcmVhdGVkX2F0IFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QCik7CgpDUkVBVEUgVEFCTEUgdXNlcnMgKAogIGlkIFRFWFQgUFJJTUFSWSBLRVksCiAgYWNjb3VudF9pZCBURVhUIE5PVCBOVUxMIFJFRkVSRU5DRVMgYWNjb3VudHMoaWQpLAogIGVtYWlsIFRFWFQgTk9UIE5VTEwgVU5JUVVFLAogIGNyZWF0ZWRfYXQgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAKKTsKCkNSRUFURSBJTkRFWCB1c2Vyc19hY2NvdW50X2lkX2lkeCBPTiB1c2VycyhhY2NvdW50X2lkKTsK"
    },
    {
      "kind": "file",
      "relativePath": "db/migrations/0001_initial.sql",
      "fileTypeID": null,
      "data": "LS0gSW5pdGlhbCBzY2hlbWEgbWlncmF0aW9uLgotLSBBcHBseSB0aGlzIHdpdGggeW91ciBkYXRhYmFzZSBtaWdyYXRpb24gdG9vbC4KCkNSRUFURSBUQUJMRSBhcHBfZXZlbnRzICgKICBpZCBURVhUIFBSSU1BUlkgS0VZLAogIGV2ZW50X25hbWUgVEVYVCBOT1QgTlVMTCwKICBjcmVhdGVkX2F0IFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QCik7Cg=="
    },
    {
      "kind": "file",
      "relativePath": "ops/runbook.md",
      "fileTypeID": "md",
      "data": "IyBSdW5ib29rCgojIyBTZXJ2aWNlIE92ZXJ2aWV3CgojIyBPd25lcnMKCiMjIEhlYWx0aCBDaGVja3MKCi0gYC9oZWFsdGhgIHJldHVybnMgYHsgIm9rIjogdHJ1ZSB9YC4KCiMjIERlcGxveQoKIyMgUm9sbGJhY2sKCiMjIExvZ3MKCiMjIEVzY2FsYXRpb24KCg=="
    },
    {
      "kind": "file",
      "relativePath": "ops/incident-report.md",
      "fileTypeID": "md",
      "data": "IyBJbmNpZGVudCBSZXBvcnQKCkRhdGU6IHt7ZGF0ZX19CgojIyBTdW1tYXJ5CgojIyBJbXBhY3QKCiMjIFRpbWVsaW5lCgojIyBSb290IENhdXNlCgojIyBNaXRpZ2F0aW9uCgojIyBGb2xsb3ctVXBzCgp8IEFjdGlvbiB8IE93bmVyIHwgRHVlIERhdGUgfCBTdGF0dXMgfAp8IC0tLSB8IC0tLSB8IC0tLSB8IC0tLSB8Cgo="
    },
    {
      "kind": "file",
      "relativePath": "docs/billing-model.md",
      "fileTypeID": "md",
      "data": "IyBCaWxsaW5nIE1vZGVsCgp8IFBsYW4gfCBQcmljZSB8IEluY2x1ZGVkIFVzYWdlIHwgTGltaXQgfCBOb3RlcyB8CnwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwKfCBGcmVlIHwgJDAgfCBFdmFsdWF0aW9uIHwgQ0hBTkdFX01FIHwgQ0hBTkdFX01FIHwKfCBQcm8gfCBDSEFOR0VfTUUgfCBDSEFOR0VfTUUgfCBDSEFOR0VfTUUgfCBDSEFOR0VfTUUgfAoKIyMgVHJpYWwgUG9saWN5CgojIyBVcGdyYWRlIEFuZCBEb3duZ3JhZGUgUnVsZXMKCg=="
    },
    {
      "kind": "file",
      "relativePath": "docs/privacy-policy-outline.md",
      "fileTypeID": "md",
      "data": "IyBQcml2YWN5IFBvbGljeSBPdXRsaW5lCgpUaGlzIGlzIGEgcGxhbm5pbmcgb3V0bGluZSBhbmQgcmVxdWlyZXMgbGVnYWwgcmV2aWV3IGJlZm9yZSBwdWJsaWNhdGlvbi4KCiMjIERhdGEgQ29sbGVjdGVkCgojIyBEYXRhIFVzZQoKIyMgRGF0YSBTaGFyaW5nCgojIyBSZXRlbnRpb24KCiMjIFVzZXIgUmlnaHRzCgojIyBDb250YWN0Cgo="
    }
  ]
}
