{
  "name": "MEmory - Audio Transcription",
  "short_name": "MEmory",
  "description": "Self-hosted PWA for transcribing and analyzing audio using OpenAI Whisper and Anthropic Claude",
  "start_url": "/",
  "scope": "/",
  "display": "standalone",
  "orientation": "portrait-primary",
  "background_color": "#000000",
  "theme_color": "#4A6CF7",
  "categories": ["productivity"],
  "icons": [
    {
      "src": "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' width='1024' height='1024'>  <defs>   <linearGradient id='bg' x1='0%' y1='0%' x2='100%' y2='100%'>    <stop offset='0%' style='stop-color:%234A6CF7;stop-opacity:1' />    <stop offset='100%' style='stop-color:%239B3FF5;stop-opacity:1' />   </linearGradient>  </defs>  <rect width='1024' height='1024' rx='224' ry='224' fill='url(%23bg)'/>  <rect x='148' y='490' width='28' height='44' rx='14' ry='14' fill='white'/>  <rect x='198' y='432' width='38' height='160' rx='19' ry='19' fill='white'/>  <rect x='252' y='352' width='44' height='320' rx='22' ry='22' fill='white'/>  <rect x='312' y='290' width='48' height='444' rx='24' ry='24' fill='white'/>  <rect x='376' y='308' width='48' height='408' rx='24' ry='24' fill='white'/>  <rect x='440' y='380' width='44' height='264' rx='22' ry='22' fill='white'/>  <rect x='500' y='436' width='38' height='152' rx='19' ry='19' fill='white'/>  <path d='M 538 512 Q 560 512 575 530 L 600 590 Q 615 640 650 640 L 670 640' stroke='white' stroke-width='30' fill='none' stroke-linecap='round'/>  <rect x='620' y='344' width='268' height='34' rx='17' ry='17' fill='white'/>  <rect x='620' y='406' width='240' height='34' rx='17' ry='17' fill='white'/>  <rect x='620' y='468' width='220' height='34' rx='17' ry='17' fill='white'/>  <rect x='670' y='648' width='180' height='34' rx='17' ry='17' fill='white'/>  <circle cx='870' cy='665' r='20' fill='white'/> </svg>",
      "sizes": "192x192",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' width='1024' height='1024'>  <defs>   <linearGradient id='bg' x1='0%' y1='0%' x2='100%' y2='100%'>    <stop offset='0%' style='stop-color:%234A6CF7;stop-opacity:1' />    <stop offset='100%' style='stop-color:%239B3FF5;stop-opacity:1' />   </linearGradient>  </defs>  <rect width='1024' height='1024' rx='224' ry='224' fill='url(%23bg)'/>  <rect x='148' y='490' width='28' height='44' rx='14' ry='14' fill='white'/>  <rect x='198' y='432' width='38' height='160' rx='19' ry='19' fill='white'/>  <rect x='252' y='352' width='44' height='320' rx='22' ry='22' fill='white'/>  <rect x='312' y='290' width='48' height='444' rx='24' ry='24' fill='white'/>  <rect x='376' y='308' width='48' height='408' rx='24' ry='24' fill='white'/>  <rect x='440' y='380' width='44' height='264' rx='22' ry='22' fill='white'/>  <rect x='500' y='436' width='38' height='152' rx='19' ry='19' fill='white'/>  <path d='M 538 512 Q 560 512 575 530 L 600 590 Q 615 640 650 640 L 670 640' stroke='white' stroke-width='30' fill='none' stroke-linecap='round'/>  <rect x='620' y='344' width='268' height='34' rx='17' ry='17' fill='white'/>  <rect x='620' y='406' width='240' height='34' rx='17' ry='17' fill='white'/>  <rect x='620' y='468' width='220' height='34' rx='17' ry='17' fill='white'/>  <rect x='670' y='648' width='180' height='34' rx='17' ry='17' fill='white'/>  <circle cx='870' cy='665' r='20' fill='white'/> </svg>",
      "sizes": "512x512",
      "type": "image/svg+xml",
      "purpose": "any maskable"
    }
  ],
  "shortcuts": [
    {
      "name": "Settings",
      "short_name": "Settings",
      "description": "Configure API keys",
      "url": "/?action=settings"
    }
  ]
}
