PageSourceSearch

https://app.showfloor.ai/login

html showfloor.ai collected 2026-10-05 15:24:33 UTC 6,223 bytes, 113 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    <meta name="referrer" content="strict-origin-when-cross-origin" />
6    <!-- Viewport settings (viewport-fit=cover for iOS notch support) -->
7    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
8    <meta name="facebook-domain-verification" content="xwtvzvjwrg05zqyl0f8g5y34c507km" />
9    <meta name="apple-mobile-web-app-capable" content="yes" />
10    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
11    
12    <title>ShowFloor AI | Professional Floor Visualization</title>
13    <meta name="description" content="Show clients their new floor before you install it. Photorealistic flooring visualizations, proposals, and one-tap acceptance for contractors." />
14    
15    <!-- Open Graph tags -->
16    <meta property="og:title" content="ShowFloor AI | Close More Flooring Deals" />
17    <meta property="og:description" content="Show clients their new floor before you install it. Photorealistic flooring visualizations, proposals, and one-tap acceptance for contractors." />
18    <meta property="og:type" content="website" />
19    <meta property="og:url" content="https://app.showfloor.ai" />
20    <meta property="og:site_name" content="ShowFloor AI" />
21    <meta property="og:image" content="https://app.showfloor.ai/og-image-v5.jpg" />
22    <meta property="og:image:secure_url" content="https://app.showfloor.ai/og-image-v5.jpg" />
23    <meta property="og:image:type" content="image/jpeg" />
24    <meta property="og:image:width" content="1200" />
25    <meta property="og:image:height" content="630" />
26    <meta property="og:image:alt" content="ShowFloor AI logo over a before-and-after garage floor visualization" />
27
28    <!-- Twitter Card tags -->
29    <meta name="twitter:card" content="summary_large_image" />
30    <meta name="twitter:title" content="ShowFloor AI | Close More Flooring Deals" />
31    <meta name="twitter:description" content="Show clients their new floor before you install it. Photorealistic flooring visualizations, proposals, and one-tap acceptance for contractors." />
32    <meta name="twitter:image" content="https://app.showfloor.ai/og-image-v5.jpg" />
33    <meta name="twitter:image:alt" content="ShowFloor AI logo over a before-and-after garage floor visualization" />
34
35    <!-- SEO -->
36    <link rel="canonical" href="https://app.showfloor.ai" />
37    <meta name="robots" content="index, follow" />
38    
39    <!-- PWA Manifest -->
40    <link rel="manifest" href="/manifest.webmanifest" />
41    <meta name="theme-color" content="#F97316" />
42    <link rel="icon" type="image/svg+xml" href="/logo.svg?v=4" />
43    <link rel="apple-touch-icon" href="/pwa-192x192.png?v=4" />
44    
45    <!-- Structured Data -->
46    
46<script type="application/ld+json">
47      {
48        "@context": "https://schema.org",
49        "@type": "SoftwareApplication",
50        "name": "ShowFloor AI",
51        "applicationCategory": "BusinessApplication",
52        "operatingSystem": "Web",
53        "url": "https://app.showfloor.ai",
54        "description": "AI-powered floor visualization tool for flooring contractors. Upload a photo, pick a material, get a photorealistic preview in seconds.",
55        "offers": {
56          "@type": "AggregateOffer",
57          "priceCurrency": "USD",
58          "lowPrice": "0",
59          "highPrice": "149",
60          "offerCount": "3"
61        },
62        "creator": {
63          "@type": "Organization",
64          "name": "ShowFloor AI",
65          "url": "https://www.showfloor.ai"
66        }
67      }
68    </script>
68
69
70    <!-- Google Fonts — Inter is the unified product font. Outfit was
71         retired as a display face in Task 1 of the 2026-04-17 launch UI
72         plan (see client/src/index.css); do not reintroduce it here. -->
73    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
74    <!-- Marketing analytics load from the app only after sensitive auth and
75         capability URLs have been excluded. See lib/marketingAnalytics.ts. -->
76    
76<script type="module" crossorigin src="/assets/index-DcQpqDRc.js"></script>
76
77    <link rel="modulepreload" crossorigin href="/assets/query-CYOR7zGO.js">
78    <link rel="modulepreload" crossorigin href="/assets/supabase-B3MrfvGd.js">
79    <link rel="modulepreload" crossorigin href="/assets/ui-vendor-B7dXr53s.js">
80    <link rel="modulepreload" crossorigin href="/assets/react-vendor-5heRg20C.js">
81    <link rel="modulepreload" crossorigin href="/assets/lucide-Da0VTTkw.js">
82    <link rel="stylesheet" crossorigin href="/assets/index-CqAXPZpT.css">
83  </head>
84  <body>
85    <div id="root"></div>
86    <!-- Inline version check: runs BEFORE React loads to bust stale bundles.
87         index.html has no-store headers so this script is always fresh from the server.
88         Compares server buildId with localStorage; if different, clears caches and reloads. -->
89    
89<script>
90      (function(){
91        var KEY='sf_known_build';
92        // A framed shopper journey owns in-memory photo/request state. Keep
93        // this exact route policy in parity with hooks/useVersionCheck.ts.
94        function isPublicVisualizerEmbed(){return /^\/embed\/showroom\/[^/]+\/?$/.test(window.location.pathname)}
95        if(isPublicVisualizerEmbed())return;
96        try{
97          fetch('/api/version').then(function(r){return isPublicVisualizerEmbed()?null:r.json()}).then(function(d){
98            if(isPublicVisualizerEmbed()||!d)return;
99            var serverBuild=d.buildId||'';
100            if(!serverBuild||serverBuild==='unknown')return;
101            var knownBuild=localStorage.getItem(KEY)||'';
102            if(knownBuild&&knownBuild!=='unknown'&&knownBuild===serverBuild)return;
103            localStorage.setItem(KEY,serverBuild);
104            if(!knownBuild||knownBuild==='unknown')return; // First visit or pre-fix client, just store
105            // Build changed — purge caches and reload
106            if('caches' in window){caches.keys().then(function(n){if(isPublicVisualizerEmbed())return;n.forEach(function(k){caches.delete(k)})})}
107            window.location.reload();
108          }).catch(function(){});
109        }catch(e){}
110      })();
111    </script>
111
112  </body>
113</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.