PageSourceSearch

https://app.rainmojo.com/login

html rainmojo.com collected 2026-10-02 15:02:29 UTC 5,942 bytes, 79 lines download raw bytes

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" />
6    <meta name="robots" content="noindex, nofollow" />
7    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
8    <!--
9      Apple touch icon - 180x180 PNG required by iOS home-screen install.
10      TODO: generate /apple-touch-icon.png (180x180) from /favicon.svg.
11      Suggested commands (run on a host with ImageMagick or rsvg-convert):
12        rsvg-convert -w 180 -h 180 frontend/public/favicon.svg -o frontend/public/apple-touch-icon.png
13        # or:
14        magick -background "#001F3F" -resize 180x180 frontend/public/favicon.svg frontend/public/apple-touch-icon.png
15      iOS will fall back gracefully if missing; the link tag is still valid.
16    -->
17    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
18
19    <!-- PWA manifest + theme color -->
20    <link rel="manifest" href="/manifest.webmanifest" />
21    <meta name="theme-color" content="#00D8C0" />
22
23    <!--
24      Open Graph + Twitter Card. og:image was an SVG, which Facebook,
25      LinkedIn, Slack and iMessage do not reliably render for link
26      previews -- most either show nothing or a broken-image icon. Same
27      1200x675 PNG shared across rainmojo.com, app.rainmojo.com and
28      dev.rainmojo.com, so a link shared from any of them carries the same
29      card.
30
31      Filename carries a version suffix on purpose: nginx serves this path
32      with Cache-Control: immutable, max-age=31536000, and Cloudflare
33      honors that at the edge. The first image (no suffix) got stuck stale
34      on dev.rainmojo.com after a content change with no way to purge it
35      (no Cloudflare API access in this environment) -- reusing the same
36      filename for different bytes is exactly what "immutable" tells the
37      cache never to expect. Bump the suffix (-v3, -v4, ...) on every
38      future change instead of editing the file in place.
39    -->
40    <meta property="og:title" content="Rainmojo - Search Optimization Intelligence" />
41    <meta property="og:description" content="AI-powered SEO + AI Visibility tracking platform" />
42    <meta property="og:image" content="https://app.rainmojo.com/rainmojo-featured-1200x675-v2.png" />
43    <meta property="og:image:width" content="1200" />
44    <meta property="og:image:height" content="675" />
45    <meta property="og:url" content="https://app.rainmojo.com" />
46    <meta property="og:type" content="website" />
47    <meta name="twitter:card" content="summary_large_image" />
48    <meta name="twitter:title" content="Rainmojo" />
49    <meta name="twitter:description" content="AI-powered SEO + AI Visibility tracking platform" />
50    <meta name="twitter:image" content="https://app.rainmojo.com/rainmojo-featured-1200x675-v2.png" />
51
52    <title>Rainmojo</title>
53    <link rel="preload" href="/fonts/GoogleSans-Latin-Thai.woff2" as="font" type="font/woff2" crossorigin>
54    
54<script type="module" crossorigin src="/assets/customer-BqEJ01U2.js"></script>
54
55    <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
56    <link rel="modulepreload" crossorigin href="/assets/chart-vendor-ViDPe8tH.js">
57    <link rel="modulepreload" crossorigin href="/assets/query-vendor-B-vyF1sJ.js">
58    <link rel="modulepreload" crossorigin href="/assets/icon-vendor-DjVHoif1.js">
59    <link rel="modulepreload" crossorigin href="/assets/applyTheme-Lenl0dzP.js">
60    <link rel="modulepreload" crossorigin href="/assets/src-Cf-M33fR.js">
61    <link rel="modulepreload" crossorigin href="/assets/react-vendor-BLbn2AUR.js">
62    <link rel="modulepreload" crossorigin href="/assets/preload-helper-i0dwxIsm.js">
63    <link rel="modulepreload" crossorigin href="/assets/axios-CyXjGKE7.js">
64    <link rel="modulepreload" crossorigin href="/assets/api-BBIuh2Sg.js">
65    <link rel="modulepreload" crossorigin href="/assets/ui-7QC1OPsj.js">
66    <link rel="modulepreload" crossorigin href="/assets/usePageTitle-DxGXN0lB.js">
67    <link rel="modulepreload" crossorigin href="/assets/errorHandler-D4WUIGW0.js">
68    <link rel="modulepreload" crossorigin href="/assets/formatDate-C2A1_cI5.js">
69    <link rel="modulepreload" crossorigin href="/assets/preferencesStore-DoGZaYzq.js">
70    <link rel="modulepreload" crossorigin href="/assets/useUrlState-xGjnKet6.js">
71    <link rel="modulepreload" crossorigin href="/assets/UpgradeModal-0YSYT42P.js">
72    <link rel="stylesheet" crossorigin href="/assets/src-DqpQciCc.css">
73    <link rel="stylesheet" crossorigin href="/assets/customer-CR5_vFco.css">
74  </head>
75  <body>
76    <div id="root"></div>
77  
77<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"11d1e96dc9514ec1b15d41e759df7af3","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 77
77
78<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a444969b8d8eabd3',t:'MTc5MDk1MzM0OA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
78</body>
79</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.