{
  "name": "GymFlow — Gym Management Platform",
  "short_name": "GymFlow",
  "id": "ng.gymflow.app",
  "description": "Complete gym management SaaS for Nigerian gyms. Member management, QR check-ins, subscriptions, payments, and analytics.",
  "start_url": "/",
  "display": "standalone",
  "display_override": ["standalone", "minimal-ui"],
  "background_color": "#080e1c",
  "theme_color": "#080e1c",
  "orientation": "any",
  "scope": "/",
  "lang": "en",
  "dir": "ltr",
  "categories": ["business", "productivity", "health", "fitness"],
  "icons": [
    {
      "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Crect width='512' height='512' rx='100' fill='%23080e1c'/%3E%3Crect width='512' height='512' rx='100' fill='url(%23grad)'/%3E%3Cdefs%3E%3ClinearGradient id='grad' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%230e1628'/%3E%3Cstop offset='1' stop-color='%23080e1c'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='translate(256,256)'%3E%3Crect x='-100' y='-30' width='55' height='60' rx='12' fill='%2300c896'/%3E%3Crect x='-125' y='-14' width='105' height='28' rx='8' fill='%2300c896'/%3E%3Crect x='45' y='-30' width='55' height='60' rx='12' fill='%2300c896'/%3E%3Crect x='20' y='-14' width='105' height='28' rx='8' fill='%2300c896'/%3E%3Crect x='-18' y='-60' width='36' height='120' rx='10' fill='%2300a87e'/%3E%3C/g%3E%3Crect x='148' y='350' width='216' height='4' rx='2' fill='%2300c896' opacity='0.3'/%3E%3C/svg%3E",
      "sizes": "512x512",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Crect width='512' height='512' rx='100' fill='%2300c896'/%3E%3Cg transform='translate(256,256)'%3E%3Crect x='-100' y='-30' width='55' height='60' rx='12' fill='white'/%3E%3Crect x='-125' y='-14' width='105' height='28' rx='8' fill='white'/%3E%3Crect x='45' y='-30' width='55' height='60' rx='12' fill='white'/%3E%3Crect x='20' y='-14' width='105' height='28' rx='8' fill='white'/%3E%3Crect x='-18' y='-60' width='36' height='120' rx='10' fill='rgba(0,0,0,0.25)'/%3E%3C/g%3E%3C/svg%3E",
      "sizes": "512x512",
      "type": "image/svg+xml",
      "purpose": "maskable"
    },
    {
      "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 192 192'%3E%3Crect width='192' height='192' rx='38' fill='%23080e1c'/%3E%3Cg transform='translate(96,96)'%3E%3Crect x='-38' y='-12' width='22' height='24' rx='5' fill='%2300c896'/%3E%3Crect x='-48' y='-6' width='40' height='12' rx='3' fill='%2300c896'/%3E%3Crect x='16' y='-12' width='22' height='24' rx='5' fill='%2300c896'/%3E%3Crect x='8' y='-6' width='40' height='12' rx='3' fill='%2300c896'/%3E%3Crect x='-7' y='-24' width='14' height='48' rx='4' fill='%2300a87e'/%3E%3C/g%3E%3C/svg%3E",
      "sizes": "192x192",
      "type": "image/svg+xml",
      "purpose": "any"
    }
  ],
  "screenshots": [],
  "shortcuts": [
    {
      "name": "Check In",
      "short_name": "Check In",
      "description": "Quick member check-in via QR code",
      "url": "/checkin.html",
      "icons": [{ "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Crect width='96' height='96' rx='20' fill='%2300c896'/%3E%3Ctext x='48' y='64' font-size='48' text-anchor='middle' fill='white'%3E✓%3C/text%3E%3C/svg%3E", "sizes": "96x96" }]
    },
    {
      "name": "Dashboard",
      "short_name": "Dashboard",
      "description": "Admin dashboard",
      "url": "/admin-dashboard.html",
      "icons": [{ "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Crect width='96' height='96' rx='20' fill='%23080e1c'/%3E%3Ctext x='48' y='64' font-size='48' text-anchor='middle' fill='%2300c896'%3E⊞%3C/text%3E%3C/svg%3E", "sizes": "96x96" }]
    },
    {
      "name": "My Membership",
      "short_name": "Membership",
      "description": "Member portal — view subscription and check in",
      "url": "/member-dashboard.html",
      "icons": [{ "src": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Crect width='96' height='96' rx='20' fill='%23080e1c'/%3E%3Ctext x='48' y='64' font-size='48' text-anchor='middle' fill='%2300c896'%3E♟%3C/text%3E%3C/svg%3E", "sizes": "96x96" }]
    }
  ],
  "prefer_related_applications": false,
  "related_applications": [],
  "handle_links": "preferred",
  "launch_handler": {
    "client_mode": "navigate-existing"
  }
}
