<!doctype html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com https://us.i.posthog.com https://*.sentry.io https://*.vercel-insights.com https://*.vercel-scripts.com https://js.stripe.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https: http:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://*.supabase.co wss://*.supabase.co https://us.i.posthog.com https://*.sentry.io https://*.vercel-insights.com https://maps.googleapis.com https://api.stripe.com https://*.resend.com; frame-src https://js.stripe.com https://hooks.stripe.com; media-src 'self' blob: https://*.supabase.co; worker-src 'self' blob:; object-src 'none'; base-uri 'self'">
    <meta http-equiv="X-Content-Type-Options" content="nosniff">
    <meta http-equiv="X-Frame-Options" content="DENY">
    <meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin">
    <meta http-equiv="Permissions-Policy" content="camera=(self), microphone=(), geolocation=(self), payment=(self)">
    <meta charset="UTF-8" />
    
    <!-- CRITICAL PERFORMANCE: DNS Prefetch & Preconnect for faster API calls -->
    <!-- Note: we intentionally do NOT hardcode the Supabase project URL here.
         The client must still talk to Supabase, but hardcoding the hostname in HTML
         unnecessarily advertises the project ref and creates copy/paste mismatch risks. -->
    <link rel="dns-prefetch" href="https://accounts.google.com" />
    <link rel="preconnect" href="https://accounts.google.com" crossorigin />
    <link rel="dns-prefetch" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin />
    <link rel="dns-prefetch" href="https://fonts.gstatic.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link rel="dns-prefetch" href="https://js.stripe.com" />
    <link rel="preconnect" href="https://js.stripe.com" crossorigin />
    <link rel="dns-prefetch" href="https://maps.googleapis.com" />
    <link rel="preconnect" href="https://maps.googleapis.com" crossorigin />
    
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <link rel="manifest" href="/manifest.json" />
    <link rel="apple-touch-icon" href="/icons/icon-192.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes, viewport-fit=cover" />
    
    <!-- CROSS-BROWSER COMPATIBILITY -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="mobile-web-app-capable" content="yes" />
    
    <!-- CACHE CONTROL - Force fresh JS/CSS on deploy -->
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    
    <!-- GOOGLE MAPS - Async Loading -->
    <script>
      (function(g){var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
        key: "AIzaSyAYBIMuV1iaptSqQSGpICDN_0POCdEjaeI
",
        v: "weekly",
        loading: "async",
        libraries: "places"
      });
    </script>

    <!-- PRIMARY SEO TAGS - Targeting "whats your pov" search -->
    <title>What's Your POV? | whatsyourpov | Event Photo Dump App | QR Code Photo Sharing</title>
    <meta name="title" content="What's Your POV? | whatsyourpov.com | The POV Photo Sharing App for Events" />
    <meta name="description" content="What's Your POV? The viral way to collect everyone's photos at your event! Drop a QR code at your party, wedding, birthday, or kickback - guests scan and upload instantly. No app download needed. Create your photo dump gallery in seconds. That feature slaps. No cap. 📸✨" />
    <meta name="keywords" content="photo dump app, event photo sharing, QR code photo sharing, party photo app, wedding guest photos, birthday party photos, photo booth alternative, group photo sharing, photo dump aesthetic, viral photo app, event content creator, party planning app, sweet 16 photos, quinceañera photo app, graduation party photos, baby shower photo sharing, bridal shower photos, bachelorette party app, bachelor party photos, family reunion photos, holiday party photos, corporate event photos, concert photo sharing, festival photo dump, influencer event app, content creator tools, Gen Z party app, TikTok photo dump, Instagram photo dump, aesthetic photo gallery, shared album app, guest photo upload, crowdsourced photos, mom birthday party, kids party photos, school event photos, prom photo sharing, homecoming photos, church event photos, community event app, fundraiser photo sharing, team event photos, sports event photos, recital photos, dance photos, wedding receptio, TikTok creator, TikToker event, TikTok party, TikTok influencer, YouTube creator, YouTuber party, YouTube influencer, Twitch streamer event, streamer meetup, Instagram influencer, IG creator, Insta photo dump, Snapchat event, BeReal photo dump, content creator party, creator economy, influencer marketing, brand event photos, sponsored event, UGC creator, user generated content, micro influencer, nano influencer, macro influencer, mega influencer, social media influencer, social media manager, digital creator, online creator, vlogger event, blogger event, podcaster event, live streamer, gaming event photos, esports photos, fan meetup, meet and greet photos, collab event, creator collab, brand collab, PR event, press event, launch party, product launch, album release party, music video shoot, BTS photos, behind the scenes, content shoot, photoshoot event, video shoot, reel party, reels content, shorts content, YouTube Shorts, TikTok FYP, For You Page, viral content, trending event, hype event, lit party, fire party, slay event, iconic moments, core memories, main character energy, aesthetic vibes, Pinterest aesthetic, VSCO vibes, photo dmp, photodump, foto dump, pic dump, picture dump, party pics, event pics, wedding pics, bday pics, birthday pics, grad pics, prom pics, homecomming photos, gradution photos, weding photos, bachelorette photos, bachlorette party, bachelorete, quinceñera, quinceanera, sweet sixteen, sweet 16 party, bar mitzvah photos, bat mitzvah photos, christening photos, baptism party, first communion, confirmation party, anniversary photos, anniversery party, retirement photos, retirment party, baby showwer, bridal showwer, engagement photos, engagment party, rehearsal dinner, wedding rehersaln photos, engagement party photos, anniversary party, retirement party photos, housewarming party, going away party, welcome home party, surprise party app, themed party photos, costume party photos, pool party photos, beach party photos, outdoor event photos, indoor event photos, virtual event photos, hybrid event app" />
    <meta name="author" content="What's Your POV? by Drivia" />
    
    <!-- EXACT MATCH KEYWORDS for "whats your pov" search -->
    <meta name="keywords2" content="whats your pov, what's your pov, whatsyourpov, whats your pov app, what is your pov, whats ur pov, whats your point of view, pov app, pov photo app, pov event app, my pov, your pov, share your pov, drop your pov, everybody got a pov, different povs, same night different povs, pov photo dump, pov gallery, pov photos, pov pics, pov videos, pov content, pov aesthetic, pov vibes" />
    
    <!-- GEN Z BRAINROT SLANG KEYWORDS (2025) -->
    <meta name="keywords3" content="W party, L party, big W, thats a W, no cap, cap, valid, based, ate that, you ate, slaps, it slaps, that slaps, its giving, it's giving, main character energy, main character moment, NPC energy, aura, plus aura, rizz, rizzler, sigma, alpha energy, delulu, lowkey, highkey, soft launch, hard launch, core memories, rent free, im dead, touch grass, cooked, mid, cringe, fire party, lit party, slay, iconic, hype, vibes, aesthetic vibes, weddingcore, partycore, eventcore, sleepovercore, birthdaycore, graduationcore, promcore" />
    
    <!-- MORE SLANG + MISSPELLINGS -->
    <meta name="keywords4" content="brainrot, skibidi, ohio meme, only in ohio, fanum tax, mewing, looksmaxxing, viral moment, fyp, for you page, trending, blowing up, going viral, clout, flex, drip, bussin, sheesh, yeet, bet, periodt, ong, fr fr, iykyk, caught in 4k, understood the assignment, era, in my era, villain era, soft girl era, that girl era, clean girl aesthetic, dark academia, light academia, cottagecore, coastal grandmother, quiet luxury, old money aesthetic" />
    
    <meta name="robots" content="index, follow" />
    <link rel="canonical" href="https://whatsyourpov.com/" />
    
    <!-- OPEN GRAPH / FACEBOOK / INSTAGRAM -->
    <meta property="og:type" content="website" />
    <meta property="og:site_name" content="What's Your POV?" />
    <meta property="og:title" content="What's Your POV? | The Photo Dump App for Events 📸" />
    <meta property="og:description" content="Drop a QR code at your party. Everyone scans & uploads. You get an aesthetic gallery of all the memories. No app download. Works instantly. The viral way to collect photos at weddings, birthdays, kickbacks & more! ✨" />
    <meta property="og:image" content="https://whatsyourpov.com/og-image.png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:url" content="https://whatsyourpov.com/" />
    <meta property="og:locale" content="en_US" />
    
    <!-- TWITTER / X -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:site" content="@whatsyourpov" />
    <meta name="twitter:creator" content="@driviaofficial" />
    <meta name="twitter:title" content="What's Your POV? | Photo Dump App for Parties & Events 📸✨" />
    <meta name="twitter:description" content="The easiest way to collect everyone's photos at your event. QR code → Scan → Upload → Done. No app needed. Perfect for creators, planners, and anyone throwing a party!" />
    <meta name="twitter:image" content="https://whatsyourpov.com/og-image.png" />
    
    <!-- ADDITIONAL SEO -->
    <meta name="theme-color" content="#1a0b2e" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
    <meta name="application-name" content="What's Your POV?" />
    <meta name="msapplication-TileColor" content="#1a0b2e" />
    
    <!-- STRUCTURED DATA FOR GOOGLE (JSON-LD) -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "SoftwareApplication",
      "name": "What's Your POV?",
      "alternateName": ["POV Photo App", "Photo Dump App", "Event Photo Sharing"],
      "applicationCategory": "MultimediaApplication",
      "applicationSubCategory": "Photo Sharing",
      "operatingSystem": "Web, iOS, Android",
      "description": "The viral photo dump app for events. Create a QR code, share at your party, wedding, birthday, or any event. Guests scan and upload photos instantly. No app download needed. Perfect for creators, event planners, and anyone throwing a party.",
      "url": "https://whatsyourpov.com",
      "image": "https://whatsyourpov.com/og-image.png",
      "screenshot": "https://whatsyourpov.com/og-image.png",
      "author": {
        "@type": "Organization",
        "name": "Drivia",
        "email": "driviaofficial@gmail.com",
        "url": "https://whatsyourpov.com"
      },
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "USD",
        "description": "Free for guests. Pro plans for creators and event hosts starting at $9.99/month."
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "5",
        "ratingCount": "10",
        "bestRating": "5",
        "worstRating": "1"
      },
      "featureList": [
        "QR Code Photo Sharing",
        "No App Download Required",
        "Instant Photo Gallery",
        "Guest Photo Upload",
        "Event Photo Dump",
        "Aesthetic Photo Gallery",
        "Wedding Photo Collection",
        "Party Photo Sharing",
        "Birthday Photo Album",
        "Creator Event Tools"
      ]
    }
    </script>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "name": "What's Your POV?",
      "alternateName": "POV Photo Dump",
      "url": "https://whatsyourpov.com",
      "description": "The easiest way to collect photos at your event. QR code photo sharing for weddings, parties, birthdays, and more.",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://whatsyourpov.com/upload/{search_term_string}",
        "query-input": "required name=search_term_string"
      },
      "publisher": {
        "@type": "Organization",
        "name": "Drivia",
        "logo": {
          "@type": "ImageObject",
          "url": "https://whatsyourpov.com/icons/icon-512.svg"
        }
      }
    }
    </script>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "How does What's Your POV work?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Create an event, get a QR code, share it at your party. Guests scan the QR code with their phone camera, upload their photos and videos, and everything appears in your gallery instantly. No app download needed!"
          }
        },
        {
          "@type": "Question",
          "name": "Is What's Your POV free?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes! Guests can upload photos for free. Event hosts can create events with our Pro plan which includes unlimited uploads, custom QR codes, and more features."
          }
        },
        {
          "@type": "Question",
          "name": "What events can I use What's Your POV for?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Any event! Weddings, birthday parties, baby showers, graduations, corporate events, concerts, festivals, family reunions, quinceañeras, sweet 16s, bachelorette parties, and more."
          }
        }
      ]
    }
    </script>
    <script type="module" crossorigin src="/assets/index-DnkwV8ID.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/vendor-react-CkY3bPhI.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-query-CFFoNHhk.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-supabase-Cg-Zobk2.js">
    <link rel="modulepreload" crossorigin href="/assets/vendor-motion-IB_U2o-y.js">
    <link rel="stylesheet" crossorigin href="/assets/index-Wqz9GD9T.css">
  </head>
  <body>
    <div id="root">
      <!-- Initial skeleton (shows before React mounts) -->
      <div id="initial-loader" style="min-height: 100vh; background: linear-gradient(135deg, #0a0a0f 0%, #1a0b2e 50%, #0a0a0f 100%); display: flex; align-items: center; justify-content: center; padding: 24px;">
        <div style="width: 100%; max-width: 560px;">
          <div style="display:flex; justify-content:center; margin-bottom: 28px;">
            <div class="skel skel-circle" style="width:96px; height:96px; border-radius:9999px;"></div>
          </div>
          <div class="skel" style="height: 18px; width: 60%; border-radius: 9999px; margin: 0 auto 16px;"></div>
          <div class="skel" style="height: 46px; width: 92%; border-radius: 16px; margin: 0 auto 10px;"></div>
          <div class="skel" style="height: 18px; width: 72%; border-radius: 9999px; margin: 0 auto 28px;"></div>
          <div style="background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.10); border-radius: 24px; padding: 20px;">
            <div class="skel" style="height: 56px; width: 100%; border-radius: 16px; margin-bottom: 14px;"></div>
            <div style="display:flex; gap: 12px; align-items:center;">
              <div class="skel" style="height: 52px; flex: 1; border-radius: 16px;"></div>
              <div class="skel" style="height: 52px; width: 140px; border-radius: 16px;"></div>
            </div>
          </div>
        </div>
      </div>
      <style>
        .skel { 
          background: linear-gradient(90deg, rgba(255,255,255,0.08) 25%, rgba(255,255,255,0.16) 37%, rgba(255,255,255,0.08) 63%);
          background-size: 400% 100%;
          animation: skelShimmer 1.2s ease-in-out infinite;
        }
        .skel-circle {
          background: linear-gradient(135deg, rgba(118,75,162,0.35), rgba(236,72,153,0.25));
        }
        @keyframes skelShimmer { 
          0% { background-position: 100% 0; }
          100% { background-position: 0 0; }
        }
      </style>
    </div>
    <noscript>
      <div style="padding:2rem;text-align:center;color:#fff;background:#1a0b2e;min-height:100vh;display:flex;align-items:center;justify-content:center;">
        <p>JavaScript is required to run What's Your POV. Please enable JavaScript in your browser settings.</p>
      </div>
    </noscript>
    <!-- Modal root for portaled modals - must be outside #root to avoid stacking context issues -->
    <div id="modal-root"></div>
  </body>
</html>
