1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> 6 7 <!-- Content Security Policy to prevent XSS attacks --> 8 <meta http-equiv="Content-Security-Policy" content=" 9 default-src 'self'; 10 script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:; 11 style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; 12 font-src 'self' https://fonts.gstatic.com; 13 img-src 'self' data: blob: https: http:; 14 connect-src 'self' https://*.supabase.co wss://*.supabase.co https://ai.gateway.lovable.dev https://heroesofthefaith.ai; 15 frame-src 'self'; 16 object-src 'none'; 17 base-uri 'self'; 18 form-action 'self'; 19 frame-ancestors 'self'; 20 upgrade-insecure-requests; 21 " /> 22 <title>Heroes of the Faith</title> 23 <meta name="description" content="An interactive digital archive and AI-powered study platform for historically grounded Christian heroes across church history." /> 24 <meta name="author" content="Heroes of the Faith" /> 25 <link rel="icon" href="/favicon.png" type="image/png" /> 26 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 27 28 <!-- Preconnect to Google Fonts for faster loading --> 29 <link rel="preconnect" href="https://fonts.googleapis.com" /> 30 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 31 32 <!-- Load fonts with display=swap (non-render-blocking) --> 33 <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Cinzel:wght@600;700;800&family=Crimson+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400;1,8..60,500&display=swap" /> 34 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Cinzel:wght@600;700;800&family=Crimson+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400;1,8..60,500&display=swap" media="print" onload="this.media='all'" /> 35 <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Cinzel:wght@600;700;800&family=Crimson+Pro:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400;1,8..60,500&display=swap" /></noscript> 36 <link rel="manifest" href="/manifest.json" /> 37 <meta name="theme-color" content="#c9a55a" /> 38 <meta name="apple-mobile-web-app-capable" content="yes" /> 39 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 40 <meta name="apple-mobile-web-app-title" content="Heroes of the Faith" /> 41 42 <meta property="og:title" content="Heroes of the Faith" /> 43 <meta property="og:description" content="An interactive digital archive and AI-powered study platform for historically grounded Christian heroes across church history." /> 44 <meta property="og:type" content="website" /> 45 <meta property="og:url" content="https://heroesofthefaith.ai" /> 46 <meta property="og:image" content="https://heroesofthefaith.ai/og-image.png" /> 47 <meta property="og:image:width" content="1200" /> 48 <meta property="og:image:height" content="630" /> 49 50 <meta name="twitter:card" content="summary_large_image" /> 51 <meta name="twitter:title" content="Heroes of the Faith" /> 52 <meta name="twitter:description" content="An interactive digital archive and AI-powered study platform for historically grounded Christian heroes across church history." /> 53 <meta name="twitter:image" content="https://heroesofthefaith.ai/og-image.png" /> 54 55
55<script type="application/ld+json"> 56 { 57 "@context": "https://schema.org", 58 "@graph": [ 59 { 60 "@type": "WebSite", 61 "@id": "https://heroesofthefaith.ai/#website", 62 "url": "https://heroesofthefaith.ai", 63 "name": "Heroes of the Faith", 64 "description": "An interactive digital archive and AI-powered study platform for historically grounded Christian heroes across church history.", 65 "publisher": { 66 "@id": "https://heroesofthefaith.ai/#organization" 67 } 68 }, 69 { 70 "@type": "Organization", 71 "@id": "https://heroesofthefaith.ai/#organization", 72 "name": "Heroes of the Faith", 73 "url": "https://heroesofthefaith.ai", 74 "logo": { 75 "@type": "ImageObject", 76 "url": "https://heroesofthefaith.ai/app-icon-512.png" 77 } 78 }, 79 { 80 "@type": "WebApplication", 81 "name": "Heroes of the Faith", 82 "description": "Explore historical Christian figures, engage in AI-powered theological discussions, and study the Bible with commentaries from church fathers and reformers.", 83 "url": "https://heroesofthefaith.ai", 84 "applicationCategory": "EducationalApplication", 85 "operatingSystem": "iOS, Android, Web", 86 "offers": { 87 "@type": "Offer", 88 "price": "0", 89 "priceCurrency": "USD" 90 }, 91 "featureList": [ 92 "AI-powered conversations with historical Christian figures", 93 "Theological debates between church heroes", 94 "Bible study with historical commentaries", 95 "Personal notes and journal", 96 "Offline reading support" 97 ] 98 } 99 ] 100 } 101 </script>
101 102
102<script type="module" crossorigin src="/assets/index-DPYLf8_8.js"></script>
102 103 <link rel="stylesheet" crossorigin href="/assets/index-CRj2fcDB.css"> 104
104<script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script>
104<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
104</head> 105 106 <body> 107 <div id="root"></div> 108 </body> 109</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.