PageSourceSearch

https://basitq.cloud/

html basitq.cloud collected 2026-10-05 02:39:26 UTC 7,750 bytes, 123 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    
5<script>
6      if (window.location.protocol === 'http:' && window.location.hostname !== 'localhost' && window.location.hostname !== '127.0.0.1') {
7        window.location.replace('https://' + window.location.host + window.location.pathname + window.location.search + window.location.hash);
8      }
9    </script>
9
10    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11    <title>BasitQ | AI Solutions Architect — Voice Agents, n8n Workflow Systems & Custom Nodes</title>
12    <!--
13      data-rh="true" marks these as react-helmet-async-owned. Without it Helmet
14      treats them as foreign markup and *appends* its own copies instead of
15      replacing them, so every route shipped two <meta name="description">, two
16      og:title, etc. They stay in the static HTML because social crawlers
17      (LinkedIn, Slack, Twitter) do not execute JS and would otherwise see none.
18      Every tag below is also emitted by src/components/SEO.tsx — if you add one
19      here that SEO.tsx does not emit, Helmet will DELETE it on mount.
20    -->
21    <meta data-rh="true" name="description" content="AI solutions architect building voice agents, production workflow systems, custom n8n nodes, and the platforms underneath them. One person, the whole path.">
22    <meta name="author" content="BasitQ" />
23    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
24    <link rel="icon" type="image/png" sizes="32x32" href="/favicon.png" />
25    <link rel="apple-touch-icon" sizes="180x180" href="/favicon.png" />
26    <meta name="google-site-verification" content="mCw0l2sH5q86V5Wcv4Ck1Ku7AOYUWAcOCjuNKwUuTJQ" />
27
28    <!-- #EFEBE3 is --tm-bg. Without this, mobile Chrome and Safari paint their
29         own chrome and the pre-paint canvas white, which flashes against the
30         cream page on every navigation. -->
31    <meta name="theme-color" content="#EFEBE3" />
32
33    <meta data-rh="true" property="og:type" content="website" />
34    <meta data-rh="true" property="og:url" content="https://basitq.cloud/" />
35    <meta data-rh="true" property="og:title" content="BasitQ | AI Solutions Architect — Voice Agents, n8n Workflow Systems & Custom Nodes">
36    <meta data-rh="true" property="og:description" content="AI solutions architect building voice agents, production workflow systems, custom n8n nodes, and the platforms underneath them. One person, the whole path.">
37    <meta data-rh="true" property="og:image" content="https://basitq.cloud/og/default.png">
38
39    <!-- twitter:site removed — it read "@Lovable", attributing every share of
40         this site to the platform vendor. Restore it only with Basit's handle. -->
41    <meta data-rh="true" name="twitter:card" content="summary_large_image" />
42    <meta data-rh="true" name="twitter:title" content="BasitQ | AI Solutions Architect — Voice Agents, n8n Workflow Systems & Custom Nodes">
43    <meta data-rh="true" name="twitter:description" content="AI solutions architect building voice agents, production workflow systems, custom n8n nodes, and the platforms underneath them. One person, the whole path.">
44    <meta data-rh="true" name="twitter:image" content="https://basitq.cloud/og/default.png">
45
46    <!--
47      Fallback entity for crawlers that never run JS. src/pages/Index.tsx emits a
48      richer linked graph at runtime using the SAME @id, so the two merge rather
49      than competing. `name` must stay "Basit Qureshi" in both places and in
50      ContentPage's Article author — three spellings would split the entity.
51    -->
52    
52<script type="application/ld+json">
53      {"@context":"https://schema.org","@type":"Person","@id":"https://basitq.cloud/#basit","name":"Basit Qureshi","alternateName":"BasitQ","url":"https://basitq.cloud/","jobTitle":"AI Solutions Architect","email":"mailto:[email protected]","sameAs":["https://community.n8n.io/u/zynate/summary","https://github.com/qureshi-basit","https://www.youtube.com/@Millionaze"]}
54    </script>
54
55
56    <!--
57      The <n8n-demo> web component scripts used to load here. They are now
58      injected on demand by src/lib/n8nDemoLoader.ts, because only
59      /workflows/:slug renders a canvas — every other route was paying for two
60      CDN handshakes and a ~200 kB module parse in the critical path for
61      nothing. Do not move them back into <head>.
62
63      preconnect keeps the win without the cost: it warms the jsdelivr socket
64      during idle time so the on-demand fetch is not starting from cold DNS.
65    -->
66    <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
67
68    <!--
69      Fonts live here, not in src/index.css. The @import there sat below the
70      @tailwind directives; CSS requires @import to precede every other
71      statement, so Vite warned and then dropped it from the production bundle —
72      Inter, Inter Tight and JetBrains Mono never loaded on the live site even
73      though tailwind.config.ts and the terminal theme both ask for them.
74
75      A <link> in <head> is also faster than an @import: the preload scanner
76      sees it immediately, instead of waiting for the stylesheet to parse before
77      it can even discover the font request.
78
79      Loaded async, not render-blocking. Measured against the live site this
80      stylesheet was the slowest request on every route and every run — 456-629 ms,
81      warm or cold — and a plain <link rel="stylesheet"> to a third-party origin
82      holds up first paint for its full duration. The media="print" / onload swap
83      is the standard workaround: the browser still fetches it, but does not treat
84      it as blocking, then onload flips it to media="all" and it applies.
85      <noscript> covers the no-JS case, including crawlers.
86
87      display=swap was already here and still matters — it is what lets text paint
88      in system-ui and swap to Inter rather than sitting invisible. The tradeoff of
89      going async is that the swap is more visible on a cold cache. That is
90      deliberate: a brief font swap beats a blank screen.
91
92      Weights are trimmed to what the codebase actually renders. Inter 300/800/900
93      were being requested but nothing uses font-light, font-extrabold or
94      font-black — the only weight classes anywhere in src are normal(400),
95      medium(500), semibold(600) and bold(700). JetBrains Mono stays at 400/500/600:
96      two call sites pair font-mono with font-bold and get a synthesized bold, which
97      is the existing behaviour and not worth a fourth weight file to fix.
98    -->
99    <link rel="preconnect" href="https://fonts.googleapis.com" />
100    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
101    <link
102      rel="stylesheet"
103      href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Inter+Tight:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
104      media="print"
105      onload="this.media='all'; this.onload=null;"
106    />
107    <noscript>
108      <link
109        rel="stylesheet"
110        href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Inter+Tight:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
111      />
112    </noscript>
113  
113<script type="module" crossorigin src="/assets/index-VVKdn61F.js"></script>
113
114  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BR_v4Ont.js">
115  <link rel="modulepreload" crossorigin href="/assets/vendor-motion-CfBPC-kS.js">
116  <link rel="modulepreload" crossorigin href="/assets/vendor-supabase-BSd6ADfF.js">
117  <link rel="stylesheet" crossorigin href="/assets/index-DP2s4ozp.css">
118<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
118</head>
119
120  <body>
121    <div id="root"></div>
122  </body>
123</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.